当一个应用程序(包括系统应用程序/服务器)调用系统框架(CoreServices.framework)时,我需要得到通知。我不确定代码注入(inject)是否适用于系统范围的框架。

是否可以用我自己的副本替换系统框架,然后将消息转发给真实的系统框架?

最佳答案

您可以使用DYLD_INSERT_LIBRARIES环境变量,但这仅适用于您启动的应用程序,而不适用于系统范围的应用程序。更多信息here

您可以使用mach_override覆盖系统功能,但是它需要root privivaleges或procmod组。 mach_override在MacHack 2003上发布。快速浏览一下,它看起来就像一个函数调用一样简单。

mach_override_ptr(&orginalFunction, &overrideFunction, NULL);

请注意,强烈建议不要对非调试应用程序进行系统范围的覆盖。

Related question

关于objective-c - 有没有办法在整个系统范围内注入(inject)OS X系统框架?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27379318/

10-14 12:44
查看更多