首页
社区
课程
招聘
[原创]IDA使用
2021-11-17 18:23 26624

[原创]IDA使用

2021-11-17 18:23
26624

一、常用快捷键

A:将数据转换为字符串
C:将数据转换为代码
D:将数据显示为数据类型。
g:直接跳转到某个地址
n:更改变量的名称
x:对着某个函数、变量按该快捷键,可以查看它的交叉引用
H: 将立即值转换为10进制
Q: 将立即值转换为16进制
B: 将立即值转换为2进制
Y:更改变量的类型
F5:一键反汇编
ESC:回退键,能够倒回上一部操作的视图(只有在反汇编窗口才是这个作用,如果是在其他窗口按下esc,会关闭该窗口)
CTRL + ENTER 返回后一个保存位置。
; 添加重复注释
SHIFT + ; 添加非重复注释。
ALT + M //添加标签
CTRL + M //跳转到标签
CTRL + 数字1 //快速跳转到各视图
F2 //下断点

二、栈数组分析

a) 栈数组源码

(栈数组源代码)
b) 栈数组对应的汇编代码

(函数test_stack_array对应的汇编代码)
c) 双击局部变量跳转到函数的堆栈窗口

(双击局部变量跳转到函数的堆栈窗口)
d) 把数组首地址var_20转换为5个int的数组

(把数组首地址var_20转换为5个int的数组)
e) var_20转换为5个int的数组后的汇编代码和堆栈布局

(var_20转换为5个int的数组后的汇编代码和堆栈布局)

三、全局数组分析

a) 全局数组源码

(全局数组源码)
b) 函数test_global_array汇编代码分析

(函数test_global_array汇编代码分析)
c) 跳转到g_nArr的定义处

(跳转到g_nArr的定义处)
d) 把地址g_nArr转换为数组

(把地址g_nArr转换为数组)
e) g_nArray转换为数组后的定义

(g_nArray转换为数组后的定义)
f) g_nArray转换为数组后的汇编代码对比

(g_nArray转换为数组后的汇编代码对比)

四、全局结构体分析

a) 全局结构体代码

(全局结构体源码)
b) 全局结构体汇编代码分析

(全局结构体汇编代码分析)
c) 导入结构体头文件(头文件在附件中)
File->Load file->Parse C header file (或者直接快捷键ctrl + F9),然后打开View->Open subviews->Local types(或者快捷键Shift + F1)打开Local types窗口就可以看到刚解析的头文件(也可以手动添加结构体)

(打开Local types窗口,查看新添加结构体)

(查看新添加的结构体)
d) 手动创建结构体PEOPLE3
创建结构体主要包括创建字段和添加填充

(创建结构体)

(添加结构体字段)

(在某个字段后添加填充)

(删除结构体中的填充字段)
e) 把某个变量转换为结构体类型

(把某个变量转换为结构体类型)

(g_sangAnLei全局变量转换为结构体前后对边)

五、如何显示汇编指令对应的机器码

菜单选择“Options”->"General"
图片描述
(显示汇编指定对应的机器码)

六、如何修改汇编指令

鼠标点击要修改的行,菜单选择Edit > Patch program > Assemble
图片描述
修改指令
图片描述
最后点击Edit > Patch program > Apply pathes to input file > OK

七、如何rebase程序(调试没有符号的应用程序)

这个很有用,用windbg调试没有pdb的程序时,可利用IDA的一键反汇编(F5)定位,本例子是分析没有pdb的dmp文件
1、 打开windbg,把dump文件拖进windbg中,输入!analyze –v
图片描述
(找出具体的出错位置)
2、 windbg找出出错模块svnets的基地址
图片描述
(找出出错模块的基地址)
3、 通过IDA改变svnet模块基地址(rebase)
IDA中的地址都是偏移,和windbg中的不一样,可以改变IDA中的基地址来匹配windbg中的地址方法如下:Edit->Segments->Rebaseprogram
在弹出的对话框中,输入svnets模块的基地址(图2中start字段的值)
图片描述
(改变模块的基地址)
4、 定位到出错位置
选择菜单jump->jump to address,在地址框中输入图1中定位到的出错位置:0x78c0b054
备注:出错位置是在windbg中通过命令!analyze -v分析出来的
FAULTING_IP:
svnets!RunMain+87f26
78c0b054 8b08 mov ecx,dword ptr [eax]
图片描述
(跳转到代码出错处)
点击OK按钮跳转到出错的汇编代码处(流程图)
图片描述
(流程图显示的汇编代码)
按下“空格”键从流程图切换到文本格式的汇编代码视图
图片描述
(文本显示的汇编代码)
从汇编代码的流程图界面,按下F5快捷键跳转到出错的伪代码处。至此可以找到程序的崩溃位置。
图片描述
(以伪代码形式表示的代码)


阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

最后于 2023-5-8 00:11 被sanganlei编辑 ,原因:
收藏
点赞19
打赏
分享
最新回复 (11)
雪    币: 2902
活跃值: (1627)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chixiaojie 2021-11-19 08:31
2
1
为什么人世间尽然会有如此精华绝伦的好文章。
雪    币: 1812
活跃值: (681)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
君行早 2021-11-19 09:19
3
0
chixiaojie 为什么人世间尽然会有如此精华绝伦的好文章。
雪    币: 5282
活跃值: (1837)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wanttobeno 2021-11-19 10:45
4
1
收藏 感谢分享!
雪    币: 3954
活跃值: (2356)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_jeivadez 2021-12-5 01:09
5
0

怎么收藏此贴?

雪    币: 2383
活跃值: (4230)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sanganlei 2021-12-6 07:52
6
0
网页底部有个收藏按钮
雪    币: 1773
活跃值: (1718)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
曹操abc 2021-12-6 09:21
7
0
收藏 感谢分享!
雪    币: 4464
活跃值: (3543)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
木志本柯 2021-12-6 10:08
8
0
这下抄代码又方便了不少
雪    币:
活跃值: (172)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ricroon 2021-12-6 10:30
9
0
很好的教程啊
雪    币: 22
活跃值: (139)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wx_空白_554204 2021-12-6 14:47
10
0
太棒了,我IDA一直没入门
雪    币: 96
活跃值: (30)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
limozhu 2021-12-6 15:09
11
0
很不错的教程
雪    币: 27
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_山东好汉 2021-12-9 18:28
12
0
chixiaojie 为什么人世间尽然会有如此精华绝伦的好文章。
是吗
游客
登录 | 注册 方可回帖
返回