在当前进程中挂钩API调用?

时间:2011-01-22 20:15:50

标签: c++ c winapi hook

如何在当前进程中加载​​DLL中的函数(例如,来自Kernel32.dll的CreateThread)进行挂钩/重定向?

(我无法控制哪些代码调用CreateThread,因此我不能将代码改为其他代码。)

语言并不重要;我猜C / C ++会是最好的选择。


更新

我忘了提到:我正在寻找需要将额外库捆绑到我的程序中的解决方案;我正在寻找一种手动方式来进行挂钩(例如通过重写函数的地址),而不是使用外部库来执行此操作。

但感谢那些提到外部图书馆的人;对不起,我早些时候没有说过。

3 个答案:

答案 0 :(得分:3)

有这样的MS库:Detours

答案 1 :(得分:3)

(这很可能更适合作为“Detours”答案下的“评论”,但是,由于我的“声誉”还不足以添加评论,我想,让我发布为答案)

This post下的

this thread ("DirectShow question")提到了Alessandro Angeli的替代/本土替代Detours(以及一些粗略的代码示例)。

我实际上首先在another thread ("problem in hooking cocreateinstance")中引用它,同时还搜索COM组件创建挂钩/跟踪(第二个线程更侧重于跨进程挂钩)。

为方便起见,我还要为WinAPIOverride32(Jacquelin Potier)添加一个链接。它似乎有“开发人员设计的GUI”:)但是,没有任何投诉,因为它是开源的(如上所述)。

答案 2 :(得分:2)

查看http://easyhook.codeplex.com/

这是一个API挂钩框架。 它的开源,非常好用!