IDA是一款强大的程序代码反编译软件,它可在多种系统(Windows、Mac、Linux)上运行使用,同时有多种运行使用的方式(GUI程序运行、命令行运行),因为它也是一款不折不扣的高度兼容型软件。
我们通过File菜单的“Produce file”可以查看到IDA帮助我们支持生成的各种文件,总共有7种不同格式的文件,每种文件都有它自己的作用,下面我们对这些文件进行一一解析,看看他们都具体有什么用处。
一、IDA生成MAP文件
点击图1的“Create MAP file”,IDA会帮我们在指定目录下生成格式为MAP的文件,文件名为当前正在反编译的程序名,具体生成的文件打开后如图2所示。
该文件主要描述了二进制文件的总体结构,包括了构成该二进制文件的节相关的信息,以及每节中符号的逻辑地址位置。以图2为例,我们可以看到“nullsub_3”符号的逻辑地址在程序第一个段偏移360h的位置。
MAP文件可帮助我们根据记录的逻辑地址,恢复符号名称,这也是该类型文件的主要用处。
二、IDA生成ASM文件
第二种是ASM格式文件,生成出的文件内容如图3所示。ASM文件包含的内容非常的多,默认情况下,IDA会生成包含一整个数据库的ASM文件。生成这个文件的目的在于创建一个可被编译器处理的文件,以重建底层二进制文件,因此需要尽可能多的收集足够的信息(包含结构体布局)。
三、IDA生成INC文件
INC文件的内容如图4所示,该内容实际上在ASM文件中是已经包含了的,它主要描述定义了程序的数据结构和枚举数据类型。这个文件的内容与“结构体”窗口内容是相似的,但是这种数据形式更适合被编译器处理。
四、IDA生成LST文件
LST文件的内容大家就比较熟悉了,LST实际上就是IDA反编译主视图窗口中的文本内容,它帮我们将反编译分析出来的内容以文本文档的格式进行了存储,方便我们移动查看。
五、IDA生成DIF文件
IDA还能帮我们生成DIF文件,DIF文件的内容非常简单,但作用十分强大。在DIF文件的每行中都包含了文件被修改的字节列表以及这些字节的文件偏移量、字节原始值和字节在数据库中的当前值。
我们可以利用脚本文件来解析DIF文件,通过DIF文件的内容,对原始有些许错误的二进制文件进行对应修改,以生成一个完善后的二进制文件。
本节说明了我们使用IDA可以生成不同的多种文件,并针对这些文件的文件内容、文件作用进行了简单的讲述,实际上这些文件利用起来对我们的日常反编译工作是能起到巨大的帮助的!