我需要劫持我自己进程的所有操作系统调用。我不能重写代码,因为它部分不是我的代码(插件)。如果我想调用原始实现,我需要能够在特定系统调用的实现中做出决定。
操作系统将首先是windows xp及更高版本。随后os x 10.5及更高版本将随之而来。从具有32位版本的Windows开始,稍后对于所有操作系统也是64位版本。
我找到了很多关于挂钩其他进程的文档和工具,但我希望我的工作更简单,我希望能有一些源代码。
非常感谢Bernd。
答案 0 :(得分:1)
有许多挂钩库可以让你这样做,例如在Windows上使用Detours或madCodeHook。毫无疑问,OSX上有类似的库,我只是不知道它们!
挂钩例程并将其替换为您自己的实现非常容易。在某些情况下保留运行原始例程的选项并不容易,而且使用挂钩库会让你痛苦不堪。
答案 1 :(得分:1)
在Mac OS X上,您可以使用DYLD_INTERPOSE
宏覆盖功能(如果需要,可以覆盖DYLD_INSERT_LIBRARIES
)。这个答案有一个例子:Ansi C patch using dlsym compiles OK under linux but fails on Mac Os X
答案 2 :(得分:0)
对于Windows,有Microsoft Detours的开源替代方案,名为EasyHook: