【发布时间】:2014-03-24 14:56:15
【问题描述】:
我正在为一个 exe 编写一个分析工具。我有这个 exe 的源代码,所以我知道它使用了哪些函数。 我需要挂钩几个特定的函数,以便检查传递的参数。我感兴趣的函数不是任何 DLL 的一部分,而是程序的一部分。
我开始使用 Detours 编写一个挂钩 DLL,它拦截函数调用。我编写了挂钩 DLL,我在其中指定要挂钩的函数,但不幸的是,由于没有可引用的 DLL,当我编译挂钩 DLL 时,我无法解析函数名称。
我该如何解决这个问题?
【问题讨论】:
-
位置信息可从编译器获得。调试数据库或地图列表都有此信息。见
/MAPlinker option -
顺便说一句,如果启用优化,这些功能甚至可能不以正常方式存在。他们的代码可以在调用函数的多个点内联,然后通过重新排序交织到调用者代码中。
-
如果你有可执行文件的源代码,你不能直接在有问题的函数中添加一些工具然后重建程序吗?
-
您已经获得了源代码。你可以做你喜欢的事。
标签: c++ dll hook dll-injection detours