我是逆向工程的新手,我想找出 Source2 引擎控制台中的哪个命令调用哪个函数(以及哪个 DLL)。为此,我想知道我怎么知道:
- 在运行时从哪个 DLL 调用哪些函数。
- 是否有调试器可以让我知道在两个时间戳之间执行了哪些代码?
提前致谢!
我是逆向工程的新手,我想找出 Source2 引擎控制台中的哪个命令调用哪个函数(以及哪个 DLL)。为此,我想知道我怎么知道:
提前致谢!
看起来您正在寻找流程监控工具。这些工具使用Hooking(和类似技术)等技术来生成由受监控进程引起的 API 或事件的运行时列表。
首先,我想推荐Microsoft 的 Sysinternals 套件附带的一组工具。具体来说,Process Monitor是一种监视文件、网络、注册表和进程操作事件的工具。它具有多种过滤功能,并且通常非常好且广为人知。sysinternals 套件包括许多其他相关工具,如果您对逆向工程感兴趣,您绝对应该对它感到满意。
其次,我个人是Rohitab 的 API Monitor 的忠实粉丝。它有多个 API 挂钩引擎,并收集每个 API 的完整信息。它具有广泛的过滤功能,但如果选择许多 API 进行监控,一开始可能会有点不知所措。这是开始研究软件的好地方!
编辑
尽管这两个工具都非常有用,但它们无法记录内部函数,例如主要可执行文件或附带的 dll 中的函数。或者该工具之前不熟悉的任何功能。这是因为为了让 API 挂钩工作,您通常需要:
如果您在记录内部调用之后,您似乎确实需要一个调试器来完成此任务。大多数优秀的逆向工程调试器(例如 ollydbg 和 x64dbg)都具有跟踪和记录所有函数调用的功能。这可能是一个好的开始。
这不是完全匹配,但不久前我写了这个https://github.com/marshalcraft/CheapoDllDependencyTool/blob/master/CheapoDllDependencyTool/bin/Debug/CheapoDllDependencyTool.exe
它在我的 GitHub 上,将列出提供可执行文件或 dll 的第一代依赖 DLL。这是非常基本的,不记得我是否列出了函数。
我敢打赌,必须有比我的更好的实现,但是当您想了解使用哪些 api 来做某事时,这对于查看 Web 浏览器是否依赖 ws2 WinSock 或其他东西的工作最少。