问题描述
我只想允许特定的 DLL 执行我在我挂钩的函数上编写的代码.如果没有执行堆栈跟踪,您如何获得调用者的模块名称?
I only want to allow specific DLLs to execute code I have written on a function I hooked. short of performing a stack trace how do you get the module name of your caller?
推荐答案
获取堆栈跟踪以查找函数的返回地址,例如使用 CaptureStackBackTrace
.
Get a stack trace to find the return address of your function, for instance with CaptureStackBackTrace
.
然后调用GetModuleHandleEx
传递 GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
以获取包含该代码的模块句柄.
And then call GetModuleHandleEx
passing GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
to obtain the module handle containing that code.
最后,调用 GetModuleFileName
查找与该模块关联的文件名.
Finally, call GetModuleFileName
to find the filename associated with that module.
这篇关于你能从被调用者那里得到调用者 DLL 或可执行模块吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!