目前我正在努力尝试找出我的可执行文件中的函数(Foo())是否已从注入的dll调用。
我的第一个想法是调用GetModule(NULL)
,然后使用GetModule("InjectedDllName")
给出的地址检查结果,所有这些都在Foo()中完成。
显然GetModule(NULL)
将返回可执行文件的地址,而不是当前调用模块的地址。我的问题可能有其他解决办法吗?
我的另一个想法是在调用foo()时找到线程起始地址,并检查它是否在注入的dll地址空间内,如果可能的话,请注意dunno。
答案 0 :(得分:0)
您可以使用EnumProcessModulesEx获取已加载DLL的句柄,然后使用GetModuleFileNameEx来标识文件名,或检查是否有任何重复的导出函数名称,这可能表示劫持/包装。
但是,这可能无法阻止用户重命名DLL并将其包装或其他高级调试工具操作的情况。这样处理每一个案件都会变得非常混乱,并且太技术化,无法用几行来解释。