Windbg和IDA中的本地调试器有什么区别

逆向工程 艾达 视窗 调试 x86 风袋
2021-06-24 16:32:38

当我想使用 IDA 在 Windows 上调试 .exe 时,我可以在 Windbg 或本地调试器之间进行选择。

有什么区别?

顺便说一句,如果我使用Windbg工具(windows软件)调试.exe文件,或者我使用IDA调试并选择Windbg调试器有什么区别吗?

2个回答

Windbg 调试器插件是一个 IDA Pro 调试器插件,它使用 Windbg、Cdb 或 Kd 使用的 Microsoft 调试引擎 (dbgen)。

Windbg 插件与 IDA Pro 的 Win32 调试器插件非常相似,尽管如此,通过使用 Windbg 插件,您可以从命令行工具和调试工具附带的扩展中受益。

例如,可以键入“!chain”来查看注册的 Windbg 扩展: 在此处输入图片说明 “!gle”是另一个命令,用于获取给定 Win32 API 调用的最后一个错误值。

在此处输入图片说明

使用 Windbg 调试器插件的另一个好处是使用符号信息。通常,如果未设置调试符号路径,则模块窗口将仅显示导出的名称。例如kernel32.dll显示1359个名字: 让我们在运行IDA之前通过添加这个环境变量来配置一个符号源: 也可以在调试时直接设置符号路径: 然后输入“.reload /f”重新加载符号. 现在我们再试一次,注意到从 kernel32.dll 中检索到更多的符号名称: 现在我们有 5818 个符号! 也可以使用“x”命令快速搜索符号:( 在任何模块中查找包含“continue”一词的任何符号)[来源]在此处输入图片说明

set _NT_SYMBOL_PATH=srv*C:\Temp\pdb*http://msdl.microsoft.com/download/symbols
在此处输入图片说明

在此处输入图片说明


在此处输入图片说明

对于问题的第二部分,如果您需要 IDA Pro 功能,请使用 IDA Pro 调试器(Windbg 调试器插件),否则使用 Windbg。

从 IDA 和 Windbg 如何连接到调试进程的角度来看,没有区别。从 IDA 和 Windbg 在程序运行时如何处理调试事件的角度来看,存在差异。有一段时间 IDA 在这方面做得很差,选择 windbg 方式是更好的选择。所以使用IDA本地调试器是可以的,除非你需要在调试时从IDA执行一些windbg命令。但是,如果您在调试时遇到问题,您可以尝试备份选项。