WinDbg 使用调试信息(pdb/符号文件)进行调试。所以,例如说我得到一个未知的 exe(恶意)我可以调试它,因为我不会有它的 .pdb
是的。符号是 Windbg 的主要优势之一,但它也可以在没有符号信息的情况下调试任何东西。
WinDbg 是否最适合仅分析内存转储和崩溃问题?
再一次,它可以做到这一点,但这不是它的唯一用途。
Ollydbg 是一个 ring 3 调试器,可以很好地分析/调试恶意 exe,但不支持未知的 dll(有 loaddll 但你必须知道 dll 导出的函数和参数)
如果你需要分析一个DLL,你需要一个程序来加载它然后调试这个程序,因此你不能单独调试一个DLL(DLL,顾名思义是主程序使用的动态库)。这是系统要求。
和 rootkits(sys 文件)。
是的,您需要一个 ring0 调试器。
您还可以为 DLL 和驱动程序 (*.sys) 文件混合静态(反汇编程序)和运行时(调试程序)分析。Hex 射线有一个免费版本的 IDA。
两种调试器都可以用于Ring3(用户态)调试,只有Windbg可以做Ring0(内核态),但它们各有优缺点。
从我的角度来看(我经常使用两者):
- OllyDbg:
- 优点:非常适合向最终用户显示信息;配色方案,组织良好的显示窗口。
- 缺点:符号信息很少;没有命令行;仅图形用户界面
- 风车:
- 优点:非常强大的符号信息;Ring0调试;窗户内部;裸机
- 缺点:不是真正的用户友好;陡峭的学习曲线
他们都有一个原生的插件系统(C / C++);windbg 有一种脚本语言,它是真正的 PITA(但pykd [Windbg 脚本在 python] 可以缓解这个问题)。
请注意,除了“livekd”(但这适用于系统 snpashot,而不是实时),windbg 不能就地进行实时 ring0 调试(à la Softice 或 Syser):您需要一个主机系统(调试器)和另一台机器这将是调试对象(虚拟机或另一台物理机)。