Ich hakte Systemaufrufe öffnen, lesen, schreiben, lstat usw. mit Osxinj Projekt. Injiziert dies in TextEdit-Anwendung von Apple zur Verfügung gestellt und alles hat gut funktioniert. Als ich mit textedit eine neue Datei geöffnet habe, wurde opencallback aufgerufen und Nachrichten in der Datei system.log protokolliert.Mach Injection: Systemaufruf wird nicht beim Einfügen in Excel eingefügt
typedef int (*open_type)(const char *, int, mode_t);
open_type open_func = 0;
int opencallback(const char* path, int oflag, mode_t mode)
{
syslog(LOG_ALERT, "In open...");
int returnVal = open_func(path, oflag, mode);
syslog(LOG_ALERT,"Open, ends\n");
return returnVal;
}
in Excel injizierte und versuchte offenen Systemaufruf unter Code außer Kraft zu setzen:
void* func_ptr = dlsym(RTLD_NEXT, "open");
if (func_ptr)
{
open_func = (open_type)func_ptr;
mach_error_t me = mach_override_ptr(func_ptr,
(void*)&opencallback,
(void**)&open_func);
}
opencallback wird aufgerufen, wenn auf TextEdit Injektion, aber es ist nicht, wenn sie injiziert in Microsoft Excel genannt zu werden. Aber Code, der für andere Systemaufrufe in die gleiche Zeile geschrieben wird, lesen, schreiben, lstat werden eingefügt, wenn sie in Excel eingefügt werden.
Irgendwelche Gedanken darüber, warum Open nicht eingefügt wird, wenn es in Excel injiziert wird.