我需要劫持我自己进程的所有操作系统调用。我不能重写代码,因为它部分不是我的代码(插件)。我需要能够在我的特定系统调用的实现中决定是否调用原始实现。
操作系统将首先是windows xp和更高版本。之后的os x 10.5和更高版本也将紧随其后。从32位版本的windows开始,以后对于所有的操作系统也是64位版本。
我发现了很多关于钩住其他进程的文档和工具,但我希望我的工作能简单得多,我希望能找到一些源代码。
提前谢谢你,伯恩德。
发布于 2011-05-23 05:18:56
有很多钩子库可以让你做到这一点,例如Windows上的曲折或madCodeHook。毫无疑问,在OSX上有类似的库,我只是不知道它们!
挂接一个例程并将其替换为您自己的实现非常容易。在某些情况下,保留运行原始例程的选项并不容易,这就是使用钩子库将为您减轻痛苦的地方。
发布于 2011-05-23 15:34:03
在macro上,您可以使用DYLD_INTERPOSE宏(如果需要,还可以使用DYLD_INSERT_LIBRARIES )覆盖函数。这个答案有一个例子:Ansi C patch using dlsym compiles OK under linux but fails on Mac Os X
发布于 2012-11-19 13:00:55
对于Windows,有一个称为EasyHook的Microsoft Detours的开源替代方案:
https://stackoverflow.com/questions/6090685
复制相似问题