常用快捷键
Shift+F12:查看所有字符串
F5:查看伪代码
Alt+T:查找字符串
空格:切换图形视图&汇编视图
/:在反编译后伪代码的界面中写下注释
x:对着某个函数、变量按该快捷键,可以查看它的交叉引用
位操作
1 | def LOBYTE(x): return x & 0xff |
其他操作
导出array为数组
右键array变量名 → 转为dword → Export as → C unsigned char array (hex)
手动修复栈指针(Decompilation failure: positive sp value has been found)
现象:无法反编译
修复:
对标红位置按 Alt+K 修改栈偏移:
修改后 F5 即可。
手动修改汇编或二进制代码(Patch)
激活功能
Edit▶Patch Program菜单GUI版本的IDA的一项隐藏功能,用户需要编辑idagui.cfg配置文件才能激活该菜单。
改字节(Change word)
IDA——Edit——Patch Program——Change word
用于编辑IDA数据库中的字节值。
这个对话框显示了从光标所在位置开始的16个字节的值。你可以更改显示的部分或全部字节。
同时,Address表示了虚拟地址,File offset表示了文件偏移量。实际上,Hex View可以直接改字节,右键Edit即可。
改内容(Assemble)
IDA——Edit——Patch Program——Assemble
利用“汇编”选项可以输入使用一个内部汇编器汇编的汇编语言语句。然后,IDA会将得到的指令字节写入当前的屏幕位置。
应用修改(Apply patches to input file)
IDA——Edit——Patch Program——Apply patches to input file
把改动更新到二进制文件中。
手动定义为函数(恢复伪代码)
来到一处看似很像关键代码处的位置:
在这部分代码的头部按 P 键定义为函数,接着尝试查看伪代码,得到的伪代码没有变量识别,非常难看。
于是我们尝试修复堆栈信息,让 IDA 能够识别出来变量。
如图所示,我们可以尝试着在这部分之上使用 Keypatch 手动加入一个 push rbp; mov rbp, rsp
让 IDA 能够识别出堆栈上的变量,紧接着再 F5,就可以看到比较舒服的伪代码了。
Dump代码生成新脚本
使用IDA Pro调试程序时偶尔会遇到dump内存的需求,IDA Pro并没有直接提供内存dump的功能,但可以通过其提供的接口用脚本来实现相关功能。