C++ 您能否从被调用方获取调用方DLL或可执行模块

C++ 您能否从被调用方获取调用方DLL或可执行模块,c++,winapi,reverse-engineering,C++,Winapi,Reverse Engineering,我只想允许特定DLL执行我在挂接的函数上编写的代码。除了执行堆栈跟踪外,如何获取调用者的模块名?获取堆栈跟踪以查找函数的返回地址,例如使用 然后调用传递GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS以获取包含该代码的模块句柄 最后,调用以查找与该模块关联的文件名。获取堆栈跟踪以查找函数的返回地址,例如使用 然后调用传递GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS以获取包含该代码的模块句柄 最后,调用以查找与该模块关联的文件名。Capt

我只想允许特定DLL执行我在挂接的函数上编写的代码。除了执行堆栈跟踪外,如何获取调用者的模块名?

获取堆栈跟踪以查找函数的返回地址,例如使用

然后调用传递GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS以获取包含该代码的模块句柄


最后,调用以查找与该模块关联的文件名。

获取堆栈跟踪以查找函数的返回地址,例如使用

然后调用传递GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS以获取包含该代码的模块句柄


最后,调用以查找与该模块关联的文件名。

CaptureStackBackTrace看起来很有希望。这是获取调用方的可靠方法吗?井堆栈跟踪是一种不完美的技术。据我所知,在x86上,至少ABI没有强制执行允许完美堆栈跟踪的规则。在实践中,很少会执行如此古怪的代码,以至于混淆了合适的堆栈跟踪程序。因为这是你的代码,所以你应该是安全的。我不知道你为什么要这样做,但请记住,它不会提供一个强大的安全机制。恶意进程很容易伪造来自DLL的调用。另外,请尝试_ReturnAddressCaptureStackBackTrace。这是获取调用方的可靠方法吗?井堆栈跟踪是一种不完美的技术。据我所知,在x86上,至少ABI没有强制执行允许完美堆栈跟踪的规则。在实践中,很少会执行如此古怪的代码,以至于混淆了合适的堆栈跟踪程序。因为这是你的代码,所以你应该是安全的。我不知道你为什么要这样做,但请记住,它不会提供一个强大的安全机制。恶意进程很容易伪造来自DLL的调用。请尝试返回地址