Macos OSX系统调用能否在系统范围内被覆盖或插入?

Macos OSX系统调用能否在系统范围内被覆盖或插入?,macos,system-calls,interposing,library-interposition,Macos,System Calls,Interposing,Library Interposition,在OSXLion下工作,我最近在代码注入方面做了一些工作,以逐个进程的方式插入系统调用 我在这一过程中学到了很多,现在看来,如果可能的话,“简单地”插入对某些系统函数的所有调用(如pwrite)会更有意义,至少在研究目的上是这样 对于每个进程对某些系统调用的每次调用(例如,pwrite),是否可以调用我的代码而不是操作系统 如果是的话,我能知道是什么过程打了这个电话吗 编辑:为了避免有人因为我问题的性质而认为我是恶意软件作者,我将解释为什么我现在在这里,问我在问什么: 我正试图让一个大而复杂的封

在OSXLion下工作,我最近在代码注入方面做了一些工作,以逐个进程的方式插入系统调用

我在这一过程中学到了很多,现在看来,如果可能的话,“简单地”插入对某些系统函数的所有调用(如
pwrite
)会更有意义,至少在研究目的上是这样

对于每个进程对某些系统调用的每次调用(例如,
pwrite
),是否可以调用我的代码而不是操作系统

如果是的话,我能知道是什么过程打了这个电话吗

编辑:为了避免有人因为我问题的性质而认为我是恶意软件作者,我将解释为什么我现在在这里,问我在问什么:

我正试图让一个大而复杂的封闭源代码软件像它应该的那样工作。为什么不等待供应商修复它呢?两年前,他们开始指责另一个政党,而那个政党又反过来指责。这种情况是荒谬的,在没有任何一方协助的情况下都值得尝试克服,因为电影和视频制作人员使用这种软件,他们的创造性和技术先进的工作每小时收费数百美元,不应该浪费他们的时间与他们的工具搏斗

到目前为止,我努力的问题是,我需要使用代码注入和插入来找到问题的根源(这就是我上面提到的“研究”)。一旦我找到问题的根源,解决方案也可能是注入和插入,或者替换动态库,或者进行一些模糊的低级系统调优,谁知道呢?我正在分析的软件规模庞大,它反过来利用了其他框架、库和后台任务,其中一些是OSX的一部分,另一些是相关软件包的一部分。以组件为基础的代码注入和插入变得有点疯狂,这就是为什么我想监视在系统调用结束时发生的事情,因此我可以看到,例如,所有pwrite调用的起源和调用的细节


我希望这一澄清能有所帮助,希望有人能为我指明正确的方向。谢谢

您应该看看DTrace:它现在是OSX的一部分。对于插入,我认为有几种方法,其中许多可能是通过网关守卫/代码签名实现的。如果不担心的话,您可以使用otool编辑应用程序链接,让它加载其库的修改版本。对于代码注入,我相信过去人们已经用输入组件攻击了它。。。但我真的不知道这是否仍然有效。我想这不是一个真正的答案。

你应该看看DTrace:它现在是OSX的一部分。对于插入,我认为有几种方法,其中许多可能是通过网关守卫/代码签名实现的。如果不担心的话,您可以使用otool编辑应用程序链接,让它加载其库的修改版本。对于代码注入,我相信过去人们已经用输入组件攻击了它。。。但我真的不知道这是否仍然有效。我想这并不是一个真正的答案。

[长时间的讨论被删除]作为对您编辑的回应-这是一个公共论坛,您试图将熟练和有经验的开发人员拉到其中,就您承认两个供应商之间已经存在争议的主题提供建议。我不想去那里,其他任何人也不应该去那里。@MartinJames:不幸的是,虽然Windows很容易接受一堆过滤器驱动程序(许多病毒扫描程序都使用),但OS X不支持这个概念。[冗长的讨论被删除]作为对您编辑的回应-这是一个公共论坛,您试图将熟练和有经验的开发人员拉入其中,就您承认两个供应商之间已经存在争议的主题提供建议。我不想去那里,其他任何人也不应该去那里。@MartinJames:不幸的是,虽然Windows很容易接受大量的过滤器驱动程序(许多病毒扫描程序都使用这些驱动程序),但OS X不支持这个概念。非常感谢您对DTrace的建议。几周前,我用它获得了一些非常不错的结果,但最终由于D语言的局限性而停止使用它,特别是在流量控制领域。考虑到我现在的选择太少了,我很感激这个提醒,我想我会再试一次。另外,记录在案,这个项目对于整洁的注入和插入非常有用!非常感谢您对DTrace的建议。几周前,我用它获得了一些非常不错的结果,但最终由于D语言的局限性而停止使用它,特别是在流量控制领域。考虑到我现在的选择太少了,我很感激这个提醒,我想我会再试一次。另外,记录在案,这个项目对于整洁的注入和插入非常有用!