在 OS X Lion 下工作,我最近做了一些代码注入工作,以逐个进程插入系统调用。
在此过程中,我学到了很多东西,现在看来,至少出于研究目的,“简单地”插入对某些系统函数的所有调用,例如pwrite
,如果这样的事情是可能的,它会更有意义。
对于每个进程对某些系统调用(例如)的每次调用,是否可以调用我的代码而不是操作系统?pwrite
如果是这样,我能知道是什么进程发出了调用吗?
编辑:以免有人认为我是恶意软件作者,因为我的问题的性质,我会解释为什么我现在在这里,问我在问什么:
我正在尝试让一个大型、复杂的闭源软件按其应有的方式工作。为什么不等待供应商修复它?两年前,他们开始指责另一个派对,而那个派对则指指点点。这种情况是荒谬的,值得在没有任何一方帮助的情况下尝试克服,因为该软件被电影和视频制作人员使用,他们每小时收取数百美元的费用,因为他们的创意和技术先进的工作,不应该浪费他们的时间与他们的工具搏斗。
到目前为止,我努力的问题是我需要使用代码注入和插入来找到问题的根源(这就是我上面所说的“研究”)。一旦我找到问题的根源,解决方案也可能是注入和插入,或者替换动态库,或者一些晦涩的低级系统调优,或者谁知道呢?我正在分析的软件非常庞大,它又利用了其他框架、库和后台任务,其中一些是 OS X 的一部分,还有一些是相关软件包的一部分。逐个组件的代码注入和插入变得有点疯狂,这就是为什么我想监视系统调用结束时发生的事情,所以我可以看到,例如,pwrite
呼叫发起和呼叫的细节。
我希望这种澄清会有所帮助,并且有人可以为我指明正确的方向。谢谢!