2014-12-09 10 views
6

Ich muss benachrichtigt, wenn eine App (einschließlich System-App/Server) ruft System-Framework (CoreServices.framework). Ich bin mir nicht sicher, ob Code Injection auf systemweiten Frameworks funktioniert.Gibt es eine Möglichkeit, ein OS X-Systemframework systemweit zu injizieren?

ist es möglich, ein System Rahmen mit eigener Kopie zu ersetzen, und dann Nachrichten an den wirklichen?

+0

Es gibt für Tracing-System Ebene Anrufe aufgebaut, um DTrace viele bestehende Arbeit. Sie können möglicherweise das tun, was Sie systemweit wollen, ohne etwas zu injizieren. –

Antwort

1

können Sie die DYLD_INSERT_LIBRARIES Umgebungsvariable verwenden, aber das funktioniert nur bei Anwendungen, die Sie nicht systemweit starten. Weitere Informationen here.

Systemfunktionen können Sie mit mach_override außer Kraft setzen, aber es erfordert root privivaleges oder die procmod Gruppe. mach_override wurde bei MacHack 2003 veröffentlicht. Auf den ersten Blick sieht es so einfach aus wie ein Funktionsaufruf.

mach_override_ptr(&orginalFunction, &overrideFunction, NULL); 

Bitte beachten Sie, dass systemweit überwiegend ist für Nicht-Debugging-Anwendungen dringend abgeraten.

Related question.