IDA pro 逆向神器的简单使用介绍

IDA pro 逆向神器的简单使用介绍

这段时间刚刚入门逆向,所谓工欲善其事必先利其器。所以必定需要先熟悉逆向中最常用的工具。而IDA pro则是被公认为最好的花钱可以买到的逆向工程利器。当然现在对我来说是肯定买不起的,所以我用的是6.8的破解版,先熟悉一下ida的基本操作。

在ida安装完成后,在桌面上会有两个图标。其中idaq.exe负责反编译32位可执行文件,idap64.exe负责反编译64位可执行文件。点击运行idaq之后用户便可选择加载可执行文件的方式。

直接运行ida,会展示这个界面。“New”选项表明反编译新可执行文件,“Go”选项表明直接进入主界面,“Previous”选项表明加载已反编译的文件选项。其中previous会给出给出之前逆向过的文件,如图就是我之前一段时间分析过的一些文件。

直接进入就是IDA主要功能界面,IDA支持直接将文件拖入界面所在的区域中。

例如我打开的是我们期末上机考试系统的客户端。ida可识别当前玩家加载的可执行文件类型,已识别出文件为PE可执行文件格式。下面“Processor type”选项表明当前处理器类型,IDA能够识别的文件类型可依照IDA默认选项加载可执行文件,如果IDA不能识别的二进制代码,例如ShellCode代码,可选择“Binary file”方式加载,选择“Binary file”方式加载。

一旦选择“Binary file”方式加载文件,则需要用户手动填入加载段地址和相对偏移,对应上图“Loading segment”和”Loading offset”选项。该种方式主要应用场景为:分析动态保存的二进制代码、ShellCode二进制代码分析等。选择“Binary file”方式加载文件,IDA不会自动分析代码,用户需根据具体需求自行反汇编二进制代码。

Processor Type:可以指定在反汇编过程中使用的处理器模块。多数情况,IDA将从可执行文件的头中读取到信息,选择合适的处理器。

kernel options:配置特定反汇编分析选项,IDA可利用这些选项该进递归下降过程。通常ida默认的都是最优的。

processor options:选择适用于处理器模块的配置选项。


IDA桌面简介

进行逆向分析之前需了解IDA界面有哪些功能,包括:导航条、反汇编窗口、其他辅助分析窗口。这是我自己简单制作的一张图,虽然不够全面,但希望能帮助理解。

1)导航条IDA

主界面中存在一项颜色各异的导航条。通过导航条可了解分析可执行文件各部分数据分布情况,各种颜色代表含义如下:

蓝色:表示常规的指令函数,绝大部分为用户编写的代码,上图中绝大部分数据属于蓝色数据。

黑色:表示间隙部分内容,可执行文件中包含多个节段,相邻节段之间存在空隙,红色表示空隙部分。

银白色:表示数据项部分内容,可执行文件中会包含大量数据,银白色表示数据项部分内容。

粉色:表示外部导入符号,通常可执行文件会导入外部的库函数。

暗黄色:表示IDA未识别的内容,需要用户根据需求自行分析。

以上基于IDA默认设置介绍各种颜色在导航条的含义,IDA同时提供了颜色设置,方便用户根据需求选择合适的颜色,对应“Options”菜单的“Colors”选项中,对应选项如下图所示:

可在“IDA Colors”对话框的选择“Navigation band”Table项,在对应选项中设置各项数据的颜色,方便实际场景的分析。

2)反汇编窗口

反汇编窗口属于逆向分析过程中关注频率最高的窗口,通过此窗口可以逆向分析反汇编代码,移动端中分析频率最高的属于Arm指令集,包括:Arm 32为指令集(常用语Android平台Native层反汇编代码分析)、Thumb 16位指令集(常用于IOS平台32位Mach-O文件的反汇编代码分析)、Arm 64位指令集(常用于IOS平台64位Mach-O文件的反汇编代码分析)。反汇编窗口属于“IDA View-A”标签项内容。反汇编窗口可分为两种模式,分别为:默认模式和图形模式。

3)其他辅助分析窗口

除了提供反汇编分析窗口,IDA默认界面提供二进制查看编辑窗口、函数窗口、结构窗口、枚举类型窗口、导入函数窗口、导出函数窗口。不同窗口在分析阶段起到不同作用。下面介绍其他辅助分析窗口功能的应用场景。

二进制窗口可支持用户查看可执行文件对应相对偏移的二进制机器码数据,二进制查看窗口对应“Hex View-1”选项内容。

二进制查看窗口总共分为三部分,三部分内容分别位于上图左、中、右,三处含义分别为:

左边数据:表示二进制数据对应的内存相对偏移。

中间数据:表示内存中数据的具体内容。

右边数据:表示内存数据的字符串显示,该功能可辅助读者快速识别字符串内容。

用户可在二进制查看窗口中编辑二进制数据,从而满足篡改数据的测试需求。

函数窗口

IDA提供函数窗口供玩家查找函数信息,在窗口按下“CTRL + F”快捷键便可根据需求搜索函数名,快速定位函数名方式可提供逆向分析效率。

结构窗口(Structures)

结构窗口提供用户查询已定义的结构体,同时IDA可识别出可执行文件包含的部分结构体数据,结构窗口可通过快捷键“+”、“-”展开和收缩结构体,IDA结构窗口支持用户自定义结构体。

导入函数窗口(Imports)

IDA提供导入函数窗口,用于可在导入函数窗口中查看当前可执行文件导入哪些外部函数库及函数,通过导入函数窗口可获取到函数内存相对偏移地址、函数名、导入函数所属的库文件。

导出函数窗口(Exports)

IDA的导出函数窗口提供可执行文件导出函数信息,通过导出函数窗口可获取到导出的函数名、函数对应的内存相对偏移地址。


IDA分析可执行文件

IDA会对可识别的文件进行代码反编译,反编译过程依据文件大小而定。IDA软件会利用回归方式递进分析可执行文件反汇编代码。判断IDA分析完毕的三种方法分别为:

1)图中IDA的“Output Window”窗口输出“The initial autoanalysis has been finished”日志时,则说明IDA已分析完毕。

2)如图所示进度条处黄色向上箭头消失时,则表明IDA分析完毕。

3)图中IDA界面左下角AU处于”idle”状态时,也表明IDA分析完毕。


这篇文章主要是简单介绍IDA的基本使用。算是自己对IDA的一些认识。

参考文章&&链接:

  1. 这本书值得推荐,我也看了一段时间了。
  2. https://gslab.qq.com/article-112-1.html

 

zgao

如果有什么技术上的问题,可以加我的qq 1761321396 一起交流。