追踪本地电话
问题描述:
这是Win32相关的问题,所有的代码都是原生的。追踪本地电话
我有3层编译为视对方DLL库:
[模块1] - > [模块2] - > [模块3] - > [我的模块4]
模块1是一个应用程序加载模块2.模块2的负载模块3.模块3装入我的模块4.
每当一个呼叫被从模块1由它通过所有层到模块4
在模块4 I想要以某种方式跟踪它从Module的Module 2中的Module 3调用1通过获取例如HMOUDLE句柄为他们每个人或任何其他唯一标识他们。我想不出任何Win32 API允许我执行这样的跟踪,你能建议吗?
答
简短的回答 - 样的,但是你可能不希望这样做:)
稍长的答案 - 该Debug Help Library可以用来生成一个堆栈跟踪(通过StackWalk64),其中你可以在演唱会使用通过PSAPI获取模块信息来获得你想要的。
基本的方法是获取您的进程中每个模块的基址和大小,然后查看每个堆栈帧的返回地址,并按范围进行匹配。如果你想要做的就是确定模块4中的函数调用是否来自模块1内,那么这将使你得到你想要的位置。
编辑:如果您可以访问相关模块的符号,那么Steve T的答案会更强大一点。