【发布时间】:2018-10-01 23:15:01
【问题描述】:
注意:这个话题不是关于调试和 try,throw,catch,我不能直接在我的函数中放置任何东西,只有像 WINapi 这样的外部影响。
如果调用任何函数,我需要某种方式在我的 APP 中获取信息。它应该在运行时“捕获”函数调用,我无法为我的 APP 中存在的每个函数实现任何额外的代码。我想一些 WINAPI 应该可以工作,但我找不到合适的方法来处理来自进程的每个调用。因为信息最好有 3 件事:
- 刚刚被调用的函数的入口点(地址)。
- 最好定义这个函数的返回类型。
- 例如是 (int, char) 等参数。
附:很高兴知道我的(或其他)进程中当前正在执行多少功能。
【问题讨论】:
-
这里有些人知道有关 Win32 的知识,我做梦也想不到,但我认为您不会得到太多满足。除了堆栈上的内容之外,C++ 不会在运行时跟踪此类内容。哎呀,编译后的函数调用可能甚至不存在。当作为优化编译器的代码混合器使用调试器信息文件或内存映射完成时,您可以对一些丢弃的信息进行逆向工程,但不容易,也不能使用我在运行时知道的任何工具(不包括调试器)。跨度>
-
实际上没有什么能完全按照您的要求进行操作,但Detours 可能是您能找到的最接近的。或者查看仪器是如何完成的。无论哪种方式,您都会进入一个充满痛苦、限制和平台特定事物的世界。
-
@MikeVine tnx 以获得这样的答案。但是找不到此应用程序的桌面安装下载。首先在谷歌是微软的Detours,但甚至不能去那个页面。访问被拒绝(奇怪)。
标签: c++ windows winapi visual-c++ c++14