第5章 IDA Pro
本章介绍了IDA Pro的使用方法,本文就只大致记录常用功能
5x1 加载一个可执行文件
默认情况下,IDA Pro反汇编代码中不包含PE头或资源节,这些地方常被恶意代码用来隐藏恶意指令,我们可以指定手动加载
5x2 IDA Pro接口
1. 反汇编窗口模式
图形模式
显示行号的操作码:Options->General,选择Line prefixes并设置Number of Opcode Bytes为6.(如果这些设置让所有指令都在屏幕右对齐,尝试设置Instruction Indentation为8)
箭头颜色:
- 红色:一个条件跳转没有被采用
- 绿色:这个条件跳转被采用
- 蓝色:一个无条件跳转被采用
文本模式
打开自动注释: Options->General,选择Auto comments
2. 对分析有用的窗口
函数窗口
名字窗口
字符串窗口
导入表窗口
导入表窗口
结构窗口
3. 返回到默认窗口
Windows->Reset Desktop
Windows->Save desktop 保存新视图
4. 导航IDA Pro
使用链接和交叉引用
浏览历史
导航栏
1. 浅蓝色: 被FLIRT识别的库代码
2. 红色: 编译器生成的代码
3. 深蓝色: 用户编写的代码
4. 粉红色: 导入的数据
5. 灰色: 已定义的数据
6. 棕色: 未定义的数据
跳转到位置 G
5. 搜索
Search->Next Code 移动光标到包含你所指定的指令的下一个位置
Search->Text 在整个反汇编窗口中搜索一个指定的字符串
Search->Sequence of Bytes 在十六进制视图窗口中对一个特定字节序列执行二进制搜索
5x3 使用交叉引用
交叉引用(xref)
查看一个函数的所有交叉引用:单机函数名并按X键
5x4 分析函数
创建函数: P
无法识别出基于EBP的一个栈帧的修复: 按Alt+P,选择BP Based Frame,然后指定4 bytes for Saved Registers
5x5 使用图形选项
5x6 增强反汇编
IDA Pro没有撤销
- 重命名
- 注释:将光标放在反汇编的某行上,并按冒号(:)
- 格式化操作数
- 使用命名的常量—-手动加载有关类型库:选择View->Open Subviews->Type Libraries
- 重新定义代码和数据
- 按U取消函数,代码或数据的定义
- 按C定义原始字节为代码
- 按D定义原始字节为数据
- 按A定义原始字节为ASCII字符串
5x7 用插件扩展IDA
1. IDC脚本
File->Script File 简单运行
File->IDC Command 作为单独命令运行
2. IDAPython
3. 使用商业插件
Hex-Rays生成伪代码
zynamics BinDiff比较两个IDA Pro数据库