如何在当前进程中加载DLL中的函数(例如,来自Kernel32.dll的CreateThread
)进行挂钩/重定向?
(我无法控制哪些代码调用CreateThread
,因此我不能将代码改为其他代码。)
语言并不重要;我猜C / C ++会是最好的选择。
更新
我忘了提到:我不正在寻找需要将额外库捆绑到我的程序中的解决方案;我正在寻找一种手动方式来进行挂钩(例如通过重写函数的地址),而不是使用外部库来执行此操作。
但感谢那些提到外部图书馆的人;对不起,我早些时候没有说过。
答案 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挂钩框架。 它的开源,非常好用!