所谓“静态分析”,是相对于前面提到的“动态分析”而言的。在“动态分析”过程中,调试器加载程序,并以调试模式运行起来,分析者可以在程序的执行过程中观察程序的执行流程和计算记过。但是,在实际分析中,很多场合不方便运行目标,比如软件的某一模块(无法单独运行)、病毒程序、设备环境不兼容导致的无法运行……那么,在这个时候,需要直接把程序的二进制代码翻译程汇编语言,方便程序员阅读。想这样由目标软件的二进制代码到汇编代码的翻译过程,我们称之为”反汇编”。OllyDbg也有反汇编功能。但OllyDBG是调试工具,其反汇编辅助分析功能有限,不适合静态分析。 下面介绍辅助功能极其强大的反汇编静态分析工具—IDA。据说它的图标是被称为“世界上第一位程序员”的Ada Lovelace的头像,中文名为阿达。书中使用IDA版本为5.5英文版。为了减少学习的干扰因素,我也使用的5.5英文版。成功安装IDA后,会出现两个可执行程序图标,一个是黑白的阿达头像,另一个是在阿达头部写有”64”字样的头像,分别对应32位和64位程序的分析。 IDA快捷键使用说明编号 快捷键 功能说明01 Enter 跟进函数实现,查看标号对应的地址02 Esc 返回跟进处03 A 解释光标处的地址为一个字符串的首地址04 B 十六进制数与二进制数转换05 C 解释光标处的地址为一条指令06 D 解释光标出的地址为数据,每按一次将会转换这个地址的数据长度07 G 快速查找到对应地址08 H 十六进制与十进制转换09 K 将数据解释为栈变量10 ; 添加注释11 M 解释为枚举成员12 N 重新命名13 O 解释地址为数据段偏移量,用于字符串标号14 T 解释数据为一个结构体成员15 X 转换视图到交叉参考模式16 Shift+F9 添加结构体 我们可以通过分析上一节中的”HelloWorld”程序来进一步学习IDA的基本使用方法。(1)加载分析文件IDA加载分析文件后,会询问分析的方式,有3中分析方案供选择 1> Portableexecutable for 80386(PE)[pe.ldw]:分析文件为一个PE格式的文件(想要了解PE文件格式可以去看《程序员的自我修养》这本书,很经典) 2> MS-DOSexecuteble(EXE)[dos.ldw]:分析文件为DOS控制台下的一个文件 3> Binaryfile:分析一个二进制文件(2)各视图功能 1>IDAView-A:分析视图窗口,用于显示分析结果,可选用流程图或代码形式 2>HexView-A:二进制视图窗口,打开一个文件的二进制信息。3>Exports:分析文件中的导出函数信息窗口。4> Imports:分析文件中的导入函数信息窗口。5> Names:名称窗口,分析文档中用到的标号名称6> Functions:分析文件中的函数信息窗口。7> Structures:添加结构体信息窗口。8> Enums:添加枚举信息窗口。