IDA详细使用教程
软件介绍
Ollydbg
仅仅是运行于 Windows
用户模式下的一种 32 位调试器,而 IDA
是运行于 32/64
位下,可用作反编译和调试的一个完整的逆向工具。使用 IDA
尽管是个更加复杂的学习过程,但它提供了 Ollydbg
无法实现的静态逆向分析 手段,并且使用户能够在 Windows
、Linux
或 Macosx
本地环境以及以下环境中远程操作。
IDA全称是交互式反汇编器专业版,人们其简称为IDA,IDA pro 是业界最成熟、先进的反汇编工具之一,是目前最棒的一个静态反编译软件,为众多0day世界的成员和ShellCode安全分析人士不可缺少的利器!IDA Pro
是一款交互式的,可编程的,可扩展的,多处理器的,交叉Windows
或Linux WinCE MacOS
平台主机来分析程序, 被公认为最好的花钱可以买到的逆向工程利器。IDA Pro已经成为事实上的分析敌意代码的标准并让其自身迅速成为攻击研究领域的重要工具。它支持数十种CPU
指令集其中包括Intel x86,x64,MIPS,PowerPC,ARM,Z80,68000,c8051等等。
IDA Pro
的主要优点是它允许以交互方式更改显示数据的任何元素:
给函数、变量、数据结构等命名。
更改数据表示(如数字、各种编码的字符串、数据结构)
搭建图表和代码流程图,简化对反汇编代码的理解
使用c++
中有关函数参数和结构定义的类型信息,以便自动命名参数和变量
自动识别和命名汇编代码中的标准库函数
等等
目录结构
在IDA
的安装根目录下有许多文件夹,各个文件夹存储不同的内容
cfg
:包含各种配置文件,基本IDA配置文件ida.cfg,GUI配置文件idagui.cfg,文本模式用户界面配置文件idatui.cfg,
idc
:包含IDA内置脚本语言IDC所需要的核心文件
ids
:包含一些符号文件
loaders
:包含用于识别和解析PE或者ELF
plugins
:附加的插件模块
procs
:包含处理器模块
启动页面
-
New
(新建) :选择new
将启动一个标准file open
对话框来选择将要分析的文件。根据选择的文件,ida
将显示外一个或多个对话框,再选择特定的文件分析选项。然后加载,分析并显示。 -
Go
(运行):go
键终止加载程序,使IDA
打开一个空白工作区域。可以将二进制文件直接拖入,或使用file菜单中的选项。IDA
会利用已知扩展名的过滤器限制file对话框显示。请确保修改或清除该过滤器【如选择all files】,以便file
对话框正确显示你想要打开的文件【在非windows系统中,可执行文件可能没有扩展名】。以这种方式打开文件时,IDA
会尝试自动识别选定文件类型,需要注意loading
对话框,看ida
用哪个加载器处理。 -
Pervious
:使用previous
可以打开“最近用过的文件”列表中的一个文件。“最近用过的文件”列表中包含IDA的windows注册表项的history子项中的值。默认长度为10,可以编辑idagui.cfg
或idatui.cfg
修改其值。
IDA文件加载
用new
打开一个新文件后会看到如下对话框
-
IDA
会生成一个可能的文件类型列表,在顶部显示,它将显示最适合处理文件的加载器。 -
Binary File
(二进制文件) 是列表最后一个选项,会一直显示,是IDA
加载无法识别文件的默认选项,提供最低级的加载方法。需要使用二进制加载器的情形包括:分析从网络数据包或日志文件中提取出来的rom镜像和破解程序负载。 -
在
processor type
【处理器类型】下拉菜单中,可以指定在反汇编过程中使用的处理器模块【在ida
的procs
目录中】。多数情况下,ida
将根据可执行文件头中读取信息,选择合适的处理器。
界面介绍
-
导航栏:显示程序的不同类型数据【普通函数、未定义函数的代码、数据、未定义等】。
-
反汇编的主窗口:显示反汇编的结果、控制流图等,可以进行拖动、选择等操作
-
函数窗口:显示所有的函数名称和地址【拖动下方滚动条即可查看】,通过
Ctrl+F
组合进行筛选。 -
输出窗口:显示运行过程中
IDA
的日志,也可以在下方的输入框中输入命令并执行。 -
状态指示器:显示为“
AU:idle
”即代表IDA
已经完成了对程序的自动化分析。
-
选项卡顶部
IDA
用不同的颜色区分可执行程序组成部分。下方对不同颜色
代表的部分进行说明。例如,灰色代表.data sectio
【数据】,如果点击颜色
条灰色部分,下方的图形视图也会跳转到该部分中点击地址的位置。粉色部分是
External Symbol
【外部符号】或者idata section
。蓝色部分表示code section
【代码】中识别出的函数。 -
在
IDA
界面底部有一个交互栏可以执行Python
命令,能够帮助我们快速进行进制转换。
在 Python 交互中输入0x45
,由于开头的0x
将会被解释为十六进制数。直接按回车可将0x45
转换为十进制数,输出结果为69
。
将十进制转换为十六进制数,可以使用
hex()
函数。
Bin()
函数将其他进制的数字转换为二进制数。输出结果是1000101
,开
头的0b
代表这是一个二进制数。
常用快捷键
IDA
中的快捷键都是和菜单栏的各个功能选项一一对应的,基本上你只要能在菜单栏上找到某个功能,也就能看到相应的快捷键,这里记录几个常用的:
a
:将数据转换为字符串
f5
:一键反汇编
esc
:回退键,能够倒回上一部操作的视图(只有在反汇编窗口才是这个作用,如果是在其他窗口按下esc,会关闭该窗口)
shift+f12
:可以打开string
窗口,一键找出所有的字符串,右击setup
,还能对窗口的属性进行设置
ctrl+w
:保存ida数据库
ctrl+s
:选择某个数据段,直接进行跳转 ctrl+鼠标滚轮:能够调节流程视图的大小
x
:对着某个函数、变量按该快捷键,可以查看它的交叉引用
g
:直接跳转到某个地址
n
:更改变量的名称
y
:更改变量的类型
/
:在反编译后伪代码的界面中写下注释
\
:在反编译后伪代码的界面中隐藏/显示变量和函数的类型描述,有时候变量特别多的时候隐藏掉类型描述看起来会轻松很多
;
:在反汇编后的界面中写下注释
ctrl+shift+w
:拍摄IDA快照
u
:undefine,取消定义函数、代码、数据的定义
操作概述
函数操作
- 删除函数:函数窗口中选中函数后,按
Delete
键 - 定义函数:在反汇编窗口选中对应行后,按P键
- 修改函数参数:在函数窗口中选中并按
Ctrl+E
组合键,或在反汇编窗口的函数内部按Alt+P
组合键
数据类型操作
U
键:取消一个地方已有的数据D
键:让某一个位置变成数据C
键:让某一个位置变成指令A
键:会以该位置为起点定义一个以“\0”结尾的字符串类型*
键:此处定义为一个数组O
键:将此处定义为一个地址偏移
导航操作
- 后退到上一位置:
Esc
- 前进到下一位置:
Ctrl+Enter
- 跳转到某一个特定位置:
G
,然后可以输入地址/已经定义的名称 - 跳转到某一区段:
Ctrl+S
,然后选择区段即可
类型操作
IDA
开发了一套类型分析系统,用来处理 C/C++
语言的各种数据类型【函数声明、变量声明、结构体声明等】,并且允许用户自由指定。选中变量、函数后按 Y 键,弹出 “Please enter the type declaration
”对话框,从中输入正确的 C
语言类型,IDA
就可以解析并自动应用这个类型。
关闭数据库
dont pack database
【不打包数据库】:仅刷新4个数据库,不创建idb
文件pack database
【打包数据库】:将4个数据库组件文件存到idb
文件中pack database
【打包数据库,压缩】:等同于上一个,压缩到idb
归档collect garbage
【收集垃圾】:在关闭数据库之前,删除没有的内存页面dont save the database
【不保存数据库】:删除四个数据库组件文件,保留现有未经修改idb
文件
更多推荐
所有评论(0)