C++挂了一个DLL?

enu*_*ree 8 c++ hook

有没有快速方法在c ++中挂钩dll?我知道有微软的Detours的东西,但是不是只有一个简单的方法来挂钩几个dll函数?

例如,我想void mytestfunction()将dll中的函数挂钩mytestdll.dllhook_mytestfunction().

提前致谢!

MSa*_*ers 6

可能最简单的方法是将您自己的同名包装 DLL放在 EXE 目录中,并将挂钩 DLL 的副本放在同一目录中并使用新名称。然后,在包装 DLL 的 IAT 中,将任何未拦截的调用重定向到包装的 DLL(导出转发),并自己实现其他调用。

要重定向函数,请将以下行放入您的 .DEF 文件中:Foo=wrapped_mytestdll.Foo其中 Foo 是(错位的)函数名,wrapped_mytestdll是复制的 DLL 的新名称。

因此,受影响的 EXE 会加载您的包装 DLL,并依次加载包装的 DLL。包装 DLL 中的函数优先于包装的 DLL。唯一未被拦截的调用是被包装的 DLL 对自身的调用,因为这些调用不会通过您的 IAT。

(此后我找到了一个指向生成基本“.DEF”文件的工具的链接,但尚未亲自测试过。使用风险自负。)


xia*_*ian 3

走弯路最快捷、最简单的方法!

  • 除非你想在 64 位下工作,否则你必须支付 10k$ 许可费:( (2认同)