检测是否已从注入的dll调用函数

时间:2014-02-18 17:43:46

标签: c++ dll code-injection detection

目前我正在努力尝试找出我的可执行文件中的函数(Foo())是否已从注入的dll调用。

我的第一个想法是调用GetModule(NULL),然后使用GetModule("InjectedDllName")给出的地址检查结果,所有这些都在Foo()中完成。

显然GetModule(NULL)将返回可执行文件的地址,而不是当前调用模块的地址。我的问题可能有其他解决办法吗?

我的另一个想法是在调用foo()时找到线程起始地址,并检查它是否在注入的dll地址空间内,如果可能的话,请注意dunno。

1 个答案:

答案 0 :(得分:0)

您可以使用EnumProcessModulesEx获取已加载DLL的句柄,然后使用GetModuleFileNameEx来标识文件名,或检查是否有任何重复的导出函数名称,这可能表示劫持/包装。

但是,这可能无法阻止用户重命名DLL并将其包装或其他高级调试工具操作的情况。这样处理每一个案件都会变得非常混乱,并且太技术化,无法用几行来解释。