2014-12-09 46 views
6

我需要在应用程序(包括系统应用程序/服务器)调用System Framework(CoreServices.framework)时收到通知。我不确定代码注入是否适用于全系统框架。有没有办法在系统范围内注入OS X系统框架?

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

+0

有很多现有的工作用于跟踪DTrace中内置的系统级调用。您可以在不注入任何东西的情况下完成系统所需的任务。 – 2014-12-22 03:17:08

回答

1

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

您可以用mach_override覆盖系统函数,但它需要root权限或procmod组。 mach_override在MacHack 2003上发布。从一眼看起来,它就像一个函数调用一样简单。

mach_override_ptr(&orginalFunction, &overrideFunction, NULL); 

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

Related question