IDA Pro
Last updated
Last updated
IDA Pro(interactive Disassembler Professional)是由 Hex-Rays 公司出品的一款交互式反汇编工具,也是软件逆向工程当中最流行的一个静态分析工具。
IDA Pro 通常会提供 ida.exe
与 ida64.exe
两个可执行程序,分别对应于逆向 32
位与 64
位程序。当我们需要使用 IDA Pro 分析某一可执行程序二进制文件时,我们需要根据程序指令集长度的不同选择使用不同的 ida
。
最简单的使用方式是将待逆向的二进制可执行文件直接拖放到 IDA 上,IDA会自动识别文件类型,这一步通常不需要做改动,直接点击 🆗 即可:
接下来我们就会看到这样一个界面:
Function Windows
:IDA 所识别出来的函数列表,通过该目录可以直接跳转到对应函数
IDA-View
:以汇编形式呈现的由 IDA 进行反编译所得的单个函数结果,默认是以由基本块构成的控制流图的形式进行展示,也可以通过 空格
键切换到内存布局中的原始汇编代码
Hex View
: 二进制文件的原始数据视图
Structures
:由 IDA 所识别出来的程序中可能存在的结构体信息
Enums
:由 IDA 所识别出来的程序中可能存在的枚举信息
Imports
: 该二进制文件运行时可能需要从外部导入的符号
Exports
: 该二进制文件可以被导出到外部的符号
除了反汇编以外,IDA 也支持将汇编代码反编译为 C/C++ 形式的源代码,我们只需要在待反编译的函数位置按下 F5
即可获得反编译后的程序代码:
有的时候 IDA 对于函数范围的识别可能会有一定错误,从而导致反编译结果出现偏差,此时我们可以在 IDA-View
窗口中的函数开头按下 alt+p
重新定义函数范围,或是先按下 u
取消原有定义后再框选函数范围后重新按下 p
进行定义:
有的时候因为代码混淆等原因导致 IDA 无法建立函数:
当我们完成对函数识别的修复之后,我们可以在函数开头按下 p
让 IDA 重新自动识别函数,或是框选属于该函数的汇编代码之后再按下 p
让 IDA 重新自动识别函数:
在 IDA Pro 当中内置了一个 Python 及一个 IDC 模块,可以帮助我们快速地对二进制文件进行修改等工作。
我们可以通过 File
→ Script Command
直接编写运行 IDAPython 脚本:
在使用之前需要先导入 ida
模块,比较常用的有以下 API:
IDA 支持插件扩展,通过插件扩展我们可以很方便地扩展及增强 IDA 的功能。
若系统中未安装 yara
模块则需要进行安装:
此时我们便能在 Edit→Plugin
中使用该插件:
更多 API 及用法参见。
插件的安装通常比较简单,以 FindCrypt
插件为例,该插件可以帮我们自动识别程序当中存在的密码算法。要安装该插件,首先我们需要在 上获取插件源码,并将其放置到 IDA安装路径/plugins
文件夹下: