2016-05-04 6 views
1

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.

Antwort

0

Schließlich habe ich meinen Code ausgeführt. Ich schreibe eine Antwort in der Hoffnung, dass es jemandem helfen könnte. Ich hakte __open das ist ein Alias ​​für open und es funktionierte gut für i386-Anwendung wie Excel.

Verwandte Themen