世界上最优秀的静态逆向工具没有之一,IDA PRO简称IDA(Interactive Disassembler) ,是一个世界顶级的交互式反汇编工具。在破解领域它是威名震天的强大工具,主要用在反汇编和动态调试等方面,另外它的分析技术是最为称赞的一点。
OD(OllyDbg)和IDA Pro这两款工具分别是调试逆向的倚天剑和屠龙刀。
虽然两者都兼容动态和静态的调试方式,但就动态调试而言,OD更为灵活和强大,而静态调试工具的王者理所应当是功能极为强大的IDA Pro。
一个高效的反汇编工具:
当你运行IDA Pro时,你所最先注意到的是它的界面比w32dasm更加专业,这里比w32dasm有更多的选项或更先进的地方。它的优点是可以更好的反汇编和更有深层分析。而缺点是使用IDA更困难。
实际上IDA同w32dasm有很多相同的功能:可以快速到达指定的代码位置;可以看到跳到指定的位置的jmp的命令位置;可以看参考字符串;可以保存静态汇编等。
现在让我们运行和反汇编一个小程序(我使用starclean.exe)一个窗口弹出来,那里有很多选项,不要动它,仅仅点击OK。让IDA来分析,当它结束后在name的选项中同w32dasm中参考字符串一样,查找"a"字符。在name窗口中搜索栏中按a,然后开始查找,一旦找到,按enter或双击它,它就将到达正确的位置。按ctrl+enter将到达下一个位置。参考字符串就在光标附近。IDA就可以到达相应的位置了。
另一个大的优点是IDA可以转换变量。你可以双击变量以找到它们保存的地址处: lea edi, [esp+1B8h+var_104]。
功能中最有用的之一是使用近似查找。很容易解释:IDA尽力记住寄存器所关联的库函数。
IDA另一个优点(快速相加):
1. 能够对w32dasm无法反汇编的最难的软件进行反汇编(如加壳程序)
2. 能够以.asm .sym 和甚至是 .exe及其它文件形式保存
3. 压缩的静态汇编,可以节省大量的磁盘空间。
4. 可以重命名函数
5. 能够分析巨大的程序
IDA Pro怎么用?
IDA Pro的静态反汇编功能非常强大,包括标注、分割汇编指令、交叉引用等功能与简洁的可视化控制流图(CFG)。在这些强大功能的支持下,大大加速了逆向分析人员分析二进制代码的进程。为了简要地展示IDA Pro的功能,我们用它反汇编一个示例的PE格式可执行二进制文件。
首先,载入名为reverse的二进制文件,IDA Pro支持多种处理器对应的机器码,可以自动识别二进制执行文件运行的平台。
然后,IDA Pro开始反汇编这个二进制文件,分析介绍之后,窗口默认停留在程序的入口处,如图2-3所示。
左边窗口显示的是IDA Pro所识别的所有函数,目前所在的是start函数。居中的是汇编指令,已经自动分割成各个基本代码块(BBL)。最右边的是各个代码块组成的这个函数的控制流程图(CFG)。按空格键可以从这个图形反汇编视图切换到反汇编代码视图,如图2-4所示。
IDA Pro就像提供了一张二进制的地图,标注了系统函数以及分析人员注解的函数调用,同时展现出各级函数和代码块之间的调用关系。此外,IDA Pro的扩展性能很好,可以利用IDA Pro提供的API接口和IDC脚本来扩展应用,而且相关扩展的插件和脚本产生的数据库文件可以直接导入OllyDbg、Binary Diffing等工具中使用。如图2-5所示,大名鼎鼎的Hex-Rays插件可以直接反编译生成C代码,只要按F5即可。
在逆向工程,IDA pro已经日渐成为分析人员必备的工具之一。在本书中,我们将利用它来定位安全漏洞的汇编代码位置,结合其呈现的代码调用关系来理解漏洞的机理。