LOADING

加载过慢请开启缓存 浏览器默认开启

IDA实用操作

常用快捷键

1

1、切换文本视图与图表视图 空格键

2、返回上一个操作地址 ESC

3、搜索地址和符号 G

4、对符号进行重命名 N

5、常规注释 冒号键

6、可重复注释 分号键

7、添加标签 Alt+M

8、查看标签 Ctrl+M

9、查看段的信息 Ctrl+S

10、查看交叉应用 X

11、查看伪代码 F5

12、搜索文本 Alt+T

13、搜索十六进 Alt+B

2

a:将数据转换为字符串

f5:一键反汇编

esc:回退键,能够倒回上一部操作的视图(只有在反汇编窗口才是这个作用,如果是在其他窗口按下esc,会关闭该窗口)

shift+f12:可以打开string窗口,一键找出所有的字符串,右击setup,还能对窗口的属性进行设置

ctrl+w:保存ida数据库

ctrl+s:选择某个数据段,直接进行跳转

ctrl+鼠标滚轮:能够调节流程视图的大小

r:把大数转为字符串

x:对着某个函数、变量按该快捷键,可以查看它的交叉引用

g:直接跳转到某个地址

n:更改变量的名称

y:更改变量的类型

/ :在反编译后伪代码的界面中写下注释

\在反编译后伪代码的界面中隐藏/显示变量和函数的类型描述,有时候变量特别多的时候隐藏掉类型描述看起来会轻松很多

;:在反汇编后的界面中写下注释

ctrl+shift+w:拍摄IDA快照

u:undefine,取消定义函数、代码、数据的定义

动态调试快捷键
F2:下断点

F3:打开程序

F4:运行到当前光标处(可应用在跳出 循坏)

F7:单步步入(进函数)

F8:单步 步过

F9;运行

F10:打开反汇编选项菜单快捷键

F12:暂时停止

Ctrl+F2:重新开始

Art+F2:结束跟踪

Shift+F2:打开附加选项窗口

Shift+F4:打开条件对话窗

Shift+F7:与F7相同,但是如果被调试程序发生异常而中止,调试器会首先尝试步入被调试程序指定的异常处理

Ctrl+F7:自动步入,在所有的函数调用中一条一条地执行命令,断点或异常时,自动 停止

Shift+F8与F8相同,但是如果被调试程序发生异常而中止,调试器会首先尝试步过被调试程序指定的异常处理

Ctrl+F8:自动步过,一条一条的执行命令,程序到达断点,或者发生异常时,自动步过过程都会停止

Shift+F9:与F9相同,但是如果被调试程序发生异常而中止,调试器会首先尝试执行被调试程序指定的异常处理

Ctrl+F9:执行直到返回,跟踪程序直到遇到返回,在此期间不进入子函数也不更新CPU数据。因为程序是一条一条命令执行的,所以速度可能会慢一些。按Esc键,可以停止跟踪。

Alt+F9:执行直到返回到用户代码段,跟踪程序直到指令所属于的模块不在系统目录中,在此期间不进入子函数也不更新CPU数据。按Esc键,可以停止跟踪。

Ctrl+F11:Run跟踪步入,一条一条执行命令,进入每个子函数调用,并把寄存器的信息加入到Run跟踪的存储数据中。Run跟踪不会同步更新CPU窗口。

Ctrl+F12 :Run跟踪。步过,一条一条执行命令,但是不进入子函数调用,并把寄存器的信息加入到Run跟踪的存储数据中。Run跟踪不会同步更新CPU窗口。

Art+C:快速回到主界面

Alt+B:显示断点窗口

Alt+E:显示模块窗口

Art+L:显示记录窗口

Alt+M:显示内存窗口

Alt+O:显示调试选项窗口

Alt+K:显示呼叫堆栈

Ctrl+E:编辑机器码

Ctrl+G:输入跟随地址

Ctrl+N:查找名称标志,选择你要下断的内容

Ctrl+S:打开查找命令次序窗口

Ctrl+P:显示补丁窗口

Ctrl+F9:返回到跟踪

Ctrl+F8:自动步进扫描,按F12可停止

Ctrl+F7:同上,功能略有不同

Ctrl+F6:回到OL主窗口

(可能有些已经不适用ida9了)

实用功能

下面的ida环境为ida9和windows。

在ida的Options中有一个show command palette(快捷键ctrl+shift+p),里面可以搜索使用ida的全部功能,在接下来的功能中我们以”@功能名”的形式介绍,您可以通过功能名搜索到功能直接使用。

拍摄快照

@Take database snapshot 拍摄当前数据库快照,可用@Database snapshot manager恢复快照

创建结构体

结构体的作用

我们会在ida中遇见类似”a1 + 1”,”a1 + 3”,……的变量,这个时候我们可以把类似的变量名整理成一个结构体,结果会以结构体中的元素索引(结构体中元素的偏移量)与a1后面的偏移量匹配。结构体中的元素偏移量与结构体中的元素变量类型的大小有关,假如结构体的第一个元素大小为1字节,那么第二个元素的偏移量就是1,如果第二个元素的大小为4字节,那么第三个元素的索引为5,以此类推。通过对结构体命名来对变量进行命名,这可以大大提高代码的可读性。

在@Local Types窗口中我们可以右键选择Add type以创建一个结构体(c语言格式)。在创建的结构体里按D键可以创建元素,多按几次可以改变,对元素名按N可以重命名。在要创建结构体的变量右键选择Structure offset(@Offset(struct))以匹配结构体。
在函数参数右键选择con to struct*以创建结构体指针。
对数据右键选择Structure创建一个结构体数组,再右键选择@Array创建合适大小的数组,以生成结构体数组。