学习逆向的基本离不开IDApro,学习逆向已经半年了,不知道有没有人和之前的我一样对于IDA只知道用shift+f12,和f5弄成C语言伪代码,着实有点丢人,今天特意总结一下IDA的快捷键,不仔细研究一波IDA还真不知道IDA中有如此多的功能,
IDA的快捷键的设计有一定的模式,因此我们可以加强快捷键的记忆,使逆向的速度更快,更加得心应手。
下面简绍一部分定义数据类型的快捷键。使用这些快捷键的时候需要让焦点(光标)对应行上才能生效
U(Undefine)键 :即取消一个地方已有的数据类型定义,此时会弹出确认的对话框,单击“Yes”即可
D(Data):即让某一个位置变成数据。一直以按D键,这个位置的数据类型将会以1字节,2字节,4字节,8字节进行循环。IDA为了防止误操作,如果定义数据的操作会影响到已经有数据类型的位置,IDA会弹出确认的对话框;如果操作的位置及其附近完全十Undefined,则不会弹出确认对话框。
C(Code)键:即让某一个位置变为指令。确认对话框的弹出时机也与D键类似。在定义为指令后,IDA会自动以此为其实位置进行递归下降反汇编
A(ASCII)键:会以该位置为起点定义一个“\0”结尾的字符串类型。
*键:将此处定义为一个数组,此时弹出一个对话框,用来设置数组的属性。
O(Offset)键:即将此处定义为一个地址偏移.
下面的是函数的操作
删除函数:在函数窗口中选中函数,按Delete键;
定义函数:在反汇编窗口中选中对应行后,按P键;
修改函数参数:在函数窗口中选中并按Ctrl+E组合键,或在反汇编窗口的函数内部按Alt+P组合键。
下面是导航操作
后退到上一步位置:快捷键Esc
前进到下一个位置:快捷键Ctrl+Enter。
跳转到某一个特定位置:快捷键G,然后可以输入地址/已经定义的名称。
跳转到某一区段:快捷键Ctrl+S,然后选择区段即可。
类型操作的话IDA有一套类型分析系统,用来处理C/C++,并且允许用户自由指定。
方法:选中变量,函数后按Y键,弹出对话框,从中输入正确的C语言类型,IDA就会解析并且自动应用这个类型。
在IDA的菜单栏”View——Open subviews“下可以打开各种类型的窗口,
String窗口:按shiift+f12组合键即可打开,可以识别程序中的字符串,双击即可在反汇编窗口中定位到目标字符串。
十六进制窗口:默认打开,可以按F2键对数据库中的数据进行修改,修改后再次按F2键即可应用修改。
切换数据显示格式
Hexadecimal:十六进制显示,快捷键为H键,可以将各种其他显示格式转换回数字。
Octal:八进制显示
Char:将常量转为形如‘A’的格式,快捷键为R键。
Enum:将常量转为枚举中的一个值,快捷键为M键
Invert sign: 将常量按照补码解析为负数,快捷键为**_键
Bitwise negate:将常量按位取反,形如C语言中的0xF0,快捷键为~。
shift+f5组合键,可以打开Signature**列表,其中回显示已经应用的函数签名库。
IDA内置了一个python环境
执行Python脚本文件:alt+F7,file+scrip file
打开脚本面板:shift+F2-----scripting language+python
ALT+T(search-test):找地址
alt+k:修改值
加载C语言头文件:ctrl+F9搜索指令:alt+t
字节数据搜索:alt+B
IDA内置了一个python环境
执行Python脚本文件:alt+F7,file+scrip file
打开脚本面板:shift+F2-----scripting language+python
修改名字标识符:n(name):
在IDA的注释也注重与汇编和C语言注释结合
第一个按分号 ;
其他像这里跳的也会由此注释
第二个shift+;
没有其他地方副本的注释
交叉引用:x
修改名字标识符:n(name):
在IDA的注释也注重与汇编和C语言注释结合
第一个按分号 ;
其他像这里跳的也会由此注释
第二个shift+;
没有其他地方副本的注释
交叉引用:xctrl+alt+k去修改指定位置的汇编代码(keypatch插件)。
shift+F1会调出Local Types窗口,按insert键(右键)从中可以操作C语言简单类型,IDA会解析并存储其中的类型。