在父进程中挂钩api调用

时间:2017-07-10 08:21:23

标签: c++ winapi hook

所以目前的情况是这样的: .exe与dll1的直接依赖关系(在IAT中) dll1执行LoadLibrary dll2 我想从dll2挂钩(并覆盖)exe的winapi。
我尝试连接IAT并使用minhook。但问题是,我实际上都挂了dll1的api,而不是exe 如果我挂钩像MessageBox这样的东西,如果我从dll1调用它就可以了,如果我从exe中调用它它不会(它调用原始的MessageBox而不是我的钩子)。

2 个答案:

答案 0 :(得分:1)

你有没有试过微软的弯路或轻松勾手?我试过了两个,他们运作良好。 Easyhook:https://easyhook.github.io/

答案 1 :(得分:0)

我猜你的DLL的编译器正在创建存根函数(转发到实际函数),挂钩工具挂钩存根而不是真正的函数。
因此,当EXE调用该函数时,它显然不会使用您的存根,并调用真正的,未挂钩的函数。

简单的解决方案:使用GetProcAddress获取指向实际函数的指针,并将其挂钩。