第5章 IDA Pro

Author Avatar
kabeor 4月 01, 2018

第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)

箭头颜色:

  1. 红色:一个条件跳转没有被采用
  2. 绿色:这个条件跳转被采用
  3. 蓝色:一个无条件跳转被采用

文本模式

打开自动注释: 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 使用图形选项

mark

5x6 增强反汇编

IDA Pro没有撤销

  1. 重命名
  2. 注释:将光标放在反汇编的某行上,并按冒号(:)
  3. 格式化操作数
  4. 使用命名的常量—-手动加载有关类型库:选择View->Open Subviews->Type Libraries
  5. 重新定义代码和数据
    1. 按U取消函数,代码或数据的定义
    2. 按C定义原始字节为代码
    3. 按D定义原始字节为数据
    4. 按A定义原始字节为ASCII字符串

5x7 用插件扩展IDA

1. IDC脚本

File->Script File 简单运行
File->IDC Command 作为单独命令运行

2. IDAPython

3. 使用商业插件

Hex-Rays生成伪代码
zynamics BinDiff比较两个IDA Pro数据库

From https://kabeor.github.io/第5章 IDA Pro/ bye

This blog is under a CC BY-NC-SA 4.0 Unported License
本文链接:https://kabeor.github.io/第5章 IDA Pro/