OS X系统调用是否可以在系统范围内被覆盖或插入?

时间:2012-07-31 03:51:29

标签: macos system-calls interposing library-interposition

在OS X Lion下工作,我已经做了一些代码注入工作,最近在逐个进程的基础上插入系统调用。

我一路上学到了很多东西,现在看起来更有意义,至少在研究方面,“简单地”将所有调用插入某些系统功能,例如如pwrite,如果可能的话。

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

如果是这样,我可以知道通话的进程吗?

编辑:由于问题的性质,任何人都认为我是恶意软件作者,我会解释为什么我现在在这里,问我在问什么:

我正试图让一个大而复杂的闭源软件像它应该的那样工作。为什么不等待供应商修复它?两年前,他们开始指责另一方,该党指向右后卫。这种情况是荒谬的,如果没有任何一方的帮助,值得尝试克服,因为这个软件被电影和视频制作人员使用,他们每小时收费数百美元用于创造性和技术上先进的努力,不应该浪费他们的时间摔跤他们的工具。

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

我希望这个澄清有所帮助,并且有人可以指出我正确的方向。谢谢!

1 个答案:

答案 0 :(得分:0)

你应该看看DTrace:http://en.wikipedia.org/wiki/DTrace它现在是OS X的一部分。对于插入,我认为有几种方法,其中许多可能会被Gatekeeper / Code Signing分解。如果这不用担心,您可以使用otool编辑应用程序链接,以使其加载其库的修改版本。对于代码注入,我相信人们过去已经使用输入组件攻击了它...但我真的不知道这是否仍然有效。我猜不是真正的答案。