首页
论坛
课程
招聘
[原创]IDA使用
2021-11-17 18:23 23410

[原创]IDA使用

2021-11-17 18:23
23410

一、常用快捷键

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

二、栈数组分析

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快捷键跳转到出错的伪代码处。至此可以找到程序的崩溃位置。
图片描述
(以伪代码形式表示的代码)


看雪2022 KCTF 秋季赛 防守篇规则,征题截止日期11月12日!(iPhone 14等你拿!)

最后于 2022-8-19 16:54 被sanganlei编辑 ,原因:
收藏
点赞17
打赏
分享
最新回复 (11)
雪    币: 2262
活跃值: 活跃值 (1002)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chixiaojie 活跃值 2021-11-19 08:31
2
1
为什么人世间尽然会有如此精华绝伦的好文章。
雪    币: 1761
活跃值: 活跃值 (638)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
君行早 活跃值 2021-11-19 09:19
3
0
chixiaojie 为什么人世间尽然会有如此精华绝伦的好文章。
雪    币: 4481
活跃值: 活跃值 (915)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wanttobeno 活跃值 2021-11-19 10:45
4
1
收藏 感谢分享!
雪    币: 1169
活跃值: 活跃值 (221)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_jeivadez 活跃值 2021-12-5 01:09
5
0

怎么收藏此贴?

雪    币: 1812
活跃值: 活跃值 (2934)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
sanganlei 活跃值 2021-12-6 07:52
6
0
网页底部有个收藏按钮
雪    币: 1148
活跃值: 活跃值 (710)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
曹操abc 活跃值 2021-12-6 09:21
7
0
收藏 感谢分享!
雪    币: 3513
活跃值: 活跃值 (1694)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
木志本柯 活跃值 2021-12-6 10:08
8
0
这下抄代码又方便了不少
雪    币: 34
活跃值: 活跃值 (167)
能力值: ( 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一直没入门
雪    币: 108
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
limozhu 活跃值 2021-12-6 15:09
11
0
很不错的教程
雪    币: 27
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
wx_山东好汉 活跃值 2021-12-9 18:28
12
0
chixiaojie 为什么人世间尽然会有如此精华绝伦的好文章。
是吗
游客
登录 | 注册 方可回帖
返回