【问题标题】:Is there a way to inject an OS X system framework system-wide?有没有办法在系统范围内注入 OS X 系统框架?
【发布时间】:2014-12-09 12:47:18
【问题描述】:

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

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

【问题讨论】:

  • 现有很多工作可用于跟踪 DTrace 内置的系统级调用。您可以在不注入任何东西的情况下在系统范围内做您想做的事情。

标签: objective-c macos hook code-injection objective-c-runtime


【解决方案1】:

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

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

mach_override_ptr(&orginalFunction, &overrideFunction, NULL);

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

Related question.

【讨论】:

    猜你喜欢
    • 2012-07-28
    • 2020-01-05
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    • 2014-06-04
    • 2011-11-16
    • 2012-07-16
    • 2012-07-04
    相关资源
    最近更新 更多