IDA笔记

  • 常用快捷键

    Shift+F12:查看所有字符串

    F5:查看伪代码

    Alt+T:查找字符串

    空格:切换图形视图&汇编视图

  • 导出array为数组

    右键array变量名 → 转为dword → Export as → C unsigned char array (hex)

    170006lwwoowsvm945je22

  • 手动修复栈指针(Decompilation failure: positive sp value has been found)

    现象:无法反编译

    170016mnj324snrxkrg1ug

    修复:

    170018czryr5u500vy20yn 170020nngx262sktesf18k

    对标红位置按 Alt+K 修改栈偏移:

    170022vp515f5fdgd0pdkd

    修改后 F5 即可。

  • 手动修改汇编或二进制代码(Patch)

    • 激活功能

      Edit▶Patch Program菜单GUI版本的IDA的一项隐藏功能,用户需要编辑idagui.cfg配置文件才能激活该菜单。

      20160210203642536
    • 改字节(Change word)

      IDA——Edit——Patch Program——Change word

      用于编辑IDA数据库中的字节值。

      这里写图片描述 这个对话框显示了从光标所在位置开始的16个字节的值。你可以更改显示的部分或全部字节。 同时,Address表示了虚拟地址,File offset表示了文件偏移量。

      实际上,Hex View可以直接改字节,右键Edit即可。

    • 改内容(Assemble)

      IDA——Edit——Patch Program——Assemble

      利用“汇编”选项可以输入使用一个内部汇编器汇编的汇编语言语句。然后,IDA会将得到的指令字节写入当前的屏幕位置。
      QQ截图20200520215855

    • 应用修改(Apply patches to input file)

      IDA——Edit——Patch Program——Apply patches to input file

      把改动更新到二进制文件中。

  • 手动定义为函数(恢复伪代码)

    来到一处看似很像关键代码处的位置:

    ezgif-7-c652b68cc595

    在这部分代码的头部按 P 键定义为函数,接着尝试查看伪代码,得到的伪代码没有变量识别,非常难看。

    ezgif-7-c5059efb62fd

    于是我们尝试修复堆栈信息,让 IDA 能够识别出来变量。

    ezgif-7-46fb759d5fab

    如图所示,我们可以尝试着在这部分之上使用 Keypatch 手动加入一个 push rbp; mov rbp, rsp

    让 IDA 能够识别出堆栈上的变量,紧接着再 F5,就可以看到比较舒服的伪代码了。

    ezgif-7-d9941cfe65f7