IDA使用教程
右键使用32bit分析程序
一,IDA修改,保存
修改:IDA->edit->Patch program(补丁程序)->Assemble(汇编)修改。
保存: IDA->edit->Patch program->Apply patches to input file即可得到修改后的文件
执行保存:补丁程序->应用补丁到输入文件 等同于 将修改后的内容写回原文件 -> 做到直接修改可执行文件exe
二,函数筛选
函数区右键quiker filter
三,搜索
导航栏search->text,默认查找编译后内容,
find all occurences(查找所有事件)例如查找(.text 0049B000;)外部函数地址
四,生成C语言伪代码:F5
五,动态调用:F9,单步debuger:F7
六,生成ASM,File->Produce file->Create ASM file
七,C语言伪代码位置同步
pseudocode-A中选择位置后,右键synchronize with ->hex或view,后续可以在 IDA view-A中进行第一条修改,保存
八,切换显示模式
图标式:右键Graph view
文本式:右键Text view
函数调用关系:右键Proximity browser
调用关系表:右键Xrefs Graph
九,菜单栏:debuger选择Local windos debuger,后续启动绿色键,不关闭程序,选择Stop键,停止debuger自动结束测试,正常结束,反之报错,等待IDA响应再结束测试
十,各视图功能
IDA View-A:分析视图窗口,用于显示分析结果,可选用流程图或代码形势
Hex View-1:二进制视图窗口,打开文件的二进制信息
Exports:分析文件中的导出函数信息窗口
Imports:分析文件中的导入函数信息窗口
Names Window:名称窗口,分析文档用到的标称
Function是 Window:分析文件中的函数信息窗口
Structures:添加结构体信息窗口
Enums:添加枚举信息窗口
十一,
快捷键:
Enter:跟进函数实现,查看标号对应的地址
Esc:返回跟进处
A:解释光标处的地址为一个字符串的首地址
B:十六进制数与二进制数转换
C:解释光标处的地址为一条指令
D:解释光标处的地址为数据,每按一次将会转换这个地址的数据长度
G:快速查找到对应地址
H:十六进制数与十进制数转换
K:将数据解释为栈变量
;:添加注释
M:解释为枚举成员
N:重命名
O:解释地址为数据段偏移量,用于字符串标号
T:解释数据为一个结构体成员
X:转换视图到交叉参考模式
Shift+F9:添加结构体
十二,
IDA是按区块装载PE文件的,例如
.text(代码块)
.data(数据块)
.rsrc(资源块)
.idata(输入表)
.edata(输出表)
十三,
IDA反汇编过程分为两个阶段:
在第一阶段,将程序的代码和数据分开。分别标记函数并分析其参数调用,分析跳转、调用等指令关系并给标签赋值等。
在第二阶段,如果IDA能够识别文件的编译类型,就装载对应的编译器特征文件,然后给各函数赋名。随后,IDA 会创建一个数据库,其组件分别保存在拓展名为 .id0、 .id1、 .nam 和 .til 的4个文件里,这些文件的格式为IDA专用,在关闭当前项目时,这四个项目将会被存档为一个IDB文件。一旦IDA创建了数据库,就不需要再访问这个可执行文件了,除非使用IDA的集成调式器调试这个可执行文件本身。再次分析该目标文件时,IDA只需要打开现有数据库,就会将界面恢复为上次关闭时的状态。