第31章 关于调试器
本文最后更新于:2022年5月19日 晚上
第31章关于调试器
调试器(Debugger)是代码逆向分析人员常用的调试工具。
本章将讲解目前代码逆向分析领域中常用的调试器。
31.1 OllyDbg
如图31-1所示,OllyDbg是一款免费的调试器,轻量、快速,使用方便。虽然免费,但它仍然拥有强大又多样的功能,且支持插件扩展,得到广大逆向分析人员的青睐。OllyDbg人气很高,使用范围非常广泛,代码逆向分析技术各阶段人员都在使用它。
OllyDbg的优点是体积轻量,运行快速,提供多样化的功能与众多选项,并且支持插件扩展。由于OllyDbg用户群体庞大,基于OllyDbg的代码逆向分析讲座非常多,所以初学者能够更轻松地学习。还有,它是完全免费的,这也是非常大的优势。
它的缺点是,由于OllyDbg是个人开发的工具(兴趣使然),其更新速度慢,后续版本的开发周期非常长,目前仅更新到Ver2.0版本。Ver2.0与以前版本相比,用户界面一样,但其内部代码完全重写,运行速度与准确性得到极大提升。可令人遗憾的是,它尚不支持64位系统环境下的调试工作。
31.2 IDA Pro
http://www.hex-rays.com/idapro
Hex-rays公司出品的IDA Pro可以说是目前最强大的反汇编器&调试器。以前它具有极其明显的反编译器特征,但通过不断升级、调整,其调试器功能也变得相当强大。IDA Pro拥有庞大又多样的功能,市场中甚至出现了专门介绍的图书。安装反编译插件(Decompiler Plugin)可以为代码逆向分析提供极大便利,这也带动了它的价格。现在许多代码逆向分析专家都将它作为主要的分析工具,作为一款专业的代码逆向分析工具,IDA Pro的霸主地位不可动摇(参考图31-2)。
IDA Pro的优点是拥有极其丰富的功能,有些你甚至根本不会用到,并且更新及时、专业、完整,但其价格比较昂贵,使用起来比较复杂,初始加载时间也较长。
IDA Pro是收费软件,但其官方网站上也提供Demo Version与Free Version版本(某些功能受限)供大家免费试用,个人用户可以下载体验。
31.3 WinDbg
http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx
WinDbg是Windows平台下的调试工具,其前身是DOS系统下的16位调试器debug.exe,它是微软对外提供的免费Windows调试器(参考图31-3)。
OllyDbg与IDAPro属于用户态调试器,由于功能强大、使用方便,在用户模式调试中占据统治地位。WinDbg既是用户态调试器也是内核态调试器,但主要用于内核模式调试。自从另一个大名鼎鼎的内核级调试工具SoftlCE停止开发后,WinDbg在内核调试领域中成为事实上的霸主(无竞争对手)。WinDbg历史久远,功能丰富而强大,使用方法较为复杂,市面上有专门的讲解图书。
WinDbg调试器的优点是支持内核级别的调试,并且是微软直接开发的调试器。此外,它还是免费的,支持64位系统下的调试,这些都是它不可或缺的优势。借助它,我们可以直接下载系统文件符号(Symbol),获取系统内结构体(含尚未公开的)及API的相关信息。它还可以用来读取、分析Windows OS的转储文件,帮助分析发生系统崩溃(Crash)的原因。
虽然WinDbg也提供图形用户界面,但与其他调试器相比却不尽如人意,并不好用(比如,不能直接在代码中输入注释、反汇编代码中调用的API名称显示得不够好等)。尽管如此,WinDbg调试器仍是开发内核驱动与系统维护过程中的必备工具,在代码逆向分析中分析内核驱动文件时也一定会用到。近来,人们进行内核调试时通常会结合使用WinDbg与VirtualPC (或者VMWare)工具。各位的逆向分析技术水平有所提高后,分析内核驱动时会经常用到它。
图31-4是Debug.exe的运行界面,从16位DOS操作系统开始就一直是默认提供的
debug.exe在控制台中通过键盘输入调试,WinDbg拥有与debug.exe相同的用户界面,支持强大的调试命令(我非常喜欢用这种基于控制台命令行的程序,但也有相当多的用户拒绝使用)。
参考
《逆向工程核心原理》 第31章