前言:IDA是逆向手必会的工具
IDA的基本使用主要分为8类:1)打开文件 2)窗口介绍:图形 文本 其他窗口介绍 3)显示硬编码-> ACDU 4)跳转指令:G 5)搜索指令 ALT+T 7)注释 8)交叉引用
导航栏的不同颜色代码不同区域
深蓝色:用户写的函数编译后的代码区
浅蓝色:编译器自己添加的函数,像启动函数,异常函数等等
粉红色:有关输入表的一些数据信息
军绿色:纯数据,只读
灰色:为了段对齐留下的空间
黑色:禁区没有数据
添加注释:
在文本窗口是;在伪代码窗口时/
shift+F12来到字符串窗口
import窗口:导入表
Hex view:16进制窗口;在这个界面下shift+E可以导出数据
IDA构造结构体快捷键
shift+f9:来到构造结构体的页面
insert:插入一个结构体
在结构体内按d键:添加一个成员
d键:更改成员的大小db dw dd
n键:更改成员名字
y键:更改成员类型(与C语言类型一致)(定义函数int(*)(int *))
u键:删除成员
db是一个字节 偏移量+1
dw是一个字 偏移量+2
dd是双字 偏移量+4
IDA调试
常用快捷键:
F2:断点
F7:步入
F8:单步过
F9:运行
F5:反汇编当前函数(伪C代码)
;:为当前指令添加全文交叉引用的注释
N:定义或修改名称,通常用来标注函数名(更改备注名)
G:跳转到任意地址
Esc:返回到跳转前的位置
H:十六级进制显示数据
D:数据类型切换,Byte,Word,Dword
y:改变数据类型
X:查看按上层调用(交叉引用)
Space 空格:图形视图和文本视图切换
Shift+f12:字符串窗口列表
P:function 将代码段 构建函数
C:code 将数据编译成代码
U:undefine 将反编译出来的代码还原成数据
r:以字符的形式显示
a:以字符串的形式显示
单步步入:
单步步入是一种调试技术,简单的来讲,就是程序会一步一步的执行程序,每执行完一行代码,程序就会将控制权回给调试器,此时你可以检查变量和路径来检查代码的问题和执行逻辑。
通常来讲,通过设置断点来进行单步步入
区别于单步步入,单步步过的意思是调试器执行这一行代码并停在下一行
以函数或方法的调用来作为例子,单步步入是一步一步执行这个函数或者方法,可以跟踪这个函数;而单步步过就是执行完这个函数而进入下一阶段。