2012-07-31 158 views
2

在OS X Lion下工作时,我已经做了一些代码注入的工作,最近逐个进程地处理系统调用。OS X系统调用是否可以覆盖或插入系统范围内?

我学到了很多,一路走来,现在它看起来会更有意义,为研究目的,至少,以“简单地”干预所有调用某些系统功能,如pwrite,如果这样的事情是可能的。

是否有可能被调用,而不是从过程中,OS为调用某些系统调用(例如pwrite)我的代码?

如果是这样,我可以知道什么过程已经打了电话吗?

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

我试图获得一个大而复杂的闭源软件,它应该像这样工作。为什么不等待供应商解决它?两年前,他们开始将手指指向另一方,该党指出对方。情况是荒谬的,值得在没有任何一方的帮助下克服,因为这个软件被电影和视频制作人员使用,他们每小时收取数百美元的创造性和技术先进的努力,而且不应该浪费他们的时间摔跤他们的工具。

到目前为止,我的努力的问题是我需要使用代码注入和插入来找到问题的来源(这是我以上称为“研究”)。一旦发现问题的根源,解决方案可能还包括注入和插入,或者更换动态库,或者一些模糊的低级系统调优,或者谁知道什么?我正在分析的软件非常庞大,它反过来利用了其他框架,库和后台任务,其中一些是OS X的一部分,其中一些是有问题的软件包的一部分。代码注入和逐个组件的插入已经变得有点疯狂了,这就是为什么我想在的系统调用结束时监视上发生了什么,所以我可以看到,例如,哪里所有pwrite呼叫都来自呼叫的细节。

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

+0

* [长篇论坛被删除] * – 2012-07-31 22:52:14

+0

作为对您编辑的回应 - 这是一个公共论坛,您正试图将技术娴熟和经验丰富的开发人员提供给您关于您承认两个供应商之间已经存在争议的主题的建议。我不想去那里,SO上的其他人也不应该去。 – 2012-07-31 22:53:25

+1

@MartinJames:可惜的是,虽然Windows非常容易接受堆栈的过滤器驱动程序_(正如许多病毒扫描程序所使用的那样),但OS X并不支持这个概念。 – bland328 2012-07-31 22:54:08

回答

0

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

+0

非常感谢DTrace的建议。几周前我得到了一些非常不错的结果,但最终因为D语言的局限性而停止使用它,特别是在流量控制领域。鉴于我现在选择的选项很少,我很欣赏提醒,并且认为我会再试一次。 – bland328 2012-07-31 23:23:10

+0

此外,为了记录,[Inject and Interpose](https://github.com/comex/inject_and_interpose)项目对于整理注入和插入非常有用! – bland328 2012-07-31 23:29:02