IDA 自动分析
在逆向领域,有款很功能强大且好用的工具=利器是:IDA
- 常用于
- iOS逆向
- 静态分析:逆向二进制,研究代码逻辑
- 常用功能:函数、F5伪代码、字符串、类的结构体定义等等
- 动态调试:调试iOS的app
- Android逆向
- 支持对Android的静态分析与动态调试
- 包括:动态调试so文件
- 特点
- 支持多平台运行:
Windows
、Mac
、Linux
(CentOS
、Ubuntu
等)等 - 支持多种CPU架构:
x86/x64
、ARM/ARM64
、MIPS/MIPS64
、PowerPC/PPC64
、Motorola 68K/Coldfire
等共68种 - 支持插件,可以扩展各种功能
- 可编程=支持API接口调用,写脚本,实现各种功能
- 主页
- https://hex-rays.com/
- 关于
- IDA: About
- 下载
- IDA Support: Download Center
- 注:
IDA Pro
是商业收费软件,请支持和购买正版
- 注:
ida 自动分析的典型过程:把二进制文件拖动到IDA后,就开始自动分析`了。
IDA中默认已开启左下角的:
Analysis indicator
=自动分析指示器
- 图
- 作用:可以显示当前自动分析的进度
- 图
为何要(自动)分析?
我们用IDA去分析二进制中代码的逻辑。
而二进制本身其实只有0
和1
二进制数据而已。
而想要分析代码,即查看对应二进制对应的汇编代码
(以及后续的伪代码
),所包含的函数,所包含的字符串等等信息,则就需要:
对二进制进行充分的分析,最后才能显示出我们要的上述的各种信息。
而对于二进制加载后的分析过程,IDA叫做:
自动分析
=auto analysis
自动分析的过程和阶段
自动分析会先后有多个阶段,其中阶段的名称是2个字母的缩写,可以在左下角看到
具体阶段和含义是:
FL:<address>
execution FLow is being tracedPR:<address>
a function (=PRocedure?) is being createdTL:<address>
a function TaiL is being createdSP:<address>
the Stack Pointer is being tracedAC:<address>
the Address is being analyzedLL:<number>
a signature file is being loadedL1:<address>
the first pass (Level 1) of FLIRTL2:<address>
the second pass (Level 2) of FLIRTL3:<address>
the third pass (Level 3) of FLIRTTP:<address>
TPpe information is being appliedFI:<address>
the FInal pass of autoanalysisWF:<address>
Weak execution Flow is being tracedAU: idle
Autoanalysis is finished
不同阶段举例
- FL=Flow
- PR=PRocedure
- AC = Address
- FI=Final
- WF=Weak
- WU: idle
自动分析要多长时间
自动分析完毕所需时间,取决于,二进制文件大小,以及其内部逻辑复杂程度
一般来说:
- 很小的二进制文件:耗时很短,马上就结束了
- 举例
- 几十KB的抖音Aweme,耗时很短,没几分钟就结束了
- 举例
- 很大的二进制文件:耗时很久,有的长达数个小时
- 举例
- 200多MB的抖音AwemeCore,IDA自动解析最终耗时,大约12个小时
- 举例