首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何挂接我自己进程的所有操作系统调用?

如何挂接我自己进程的所有操作系统调用?
EN

Stack Overflow用户
提问于 2011-05-23 04:46:33
回答 3查看 2.5K关注 0票数 3

我需要劫持我自己进程的所有操作系统调用。我不能重写代码,因为它部分不是我的代码(插件)。我需要能够在我的特定系统调用的实现中决定是否调用原始实现。

操作系统将首先是windows xp和更高版本。之后的os x 10.5和更高版本也将紧随其后。从32位版本的windows开始,以后对于所有的操作系统也是64位版本。

我发现了很多关于钩住其他进程的文档和工具,但我希望我的工作能简单得多,我希望能找到一些源代码。

提前谢谢你,伯恩德。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-23 05:18:56

有很多钩子库可以让你做到这一点,例如Windows上的曲折或madCodeHook。毫无疑问,在OSX上有类似的库,我只是不知道它们!

挂接一个例程并将其替换为您自己的实现非常容易。在某些情况下,保留运行原始例程的选项并不容易,这就是使用钩子库将为您减轻痛苦的地方。

票数 1
EN

Stack Overflow用户

发布于 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

票数 1
EN

Stack Overflow用户

发布于 2012-11-19 13:00:55

对于Windows,有一个称为EasyHook的Microsoft Detours的开源替代方案:

  • CodePlex: EasyHook
  • Code Project: EasyHook - The reinvention of Windows API hooking
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6090685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档