将汇编代码还原成高级语言是一项富有挑战性的任务。
IDA使这项工作变得容易了。我们来认识以下常用的快捷键:

  • Enter 进入到操作码对应位置
  • Esc 退回上一步
  • n 对位置变量重命名
  • Shift + ; 对代码进行注释
  • Ctrl + x 查找引用
  • Spacebar 在graph和text视图之间切换
  • Ctrl + 1 打开小窗口列表
  • Edit -> Patch 能够将修改保存目标文件中
  • F5 可以生成伪C代码

识别以下模式:

  • if-else
  • switch
  • for
  • function calling convention

插件Fentanyl: 虽然PySide不适合这个版本,但是有以下快捷键:

  • Alt-N Convert instructions to nops
  • Alt-X Nop all xrefs to this function
  • Alt-J Invert conditional jump
  • Alt-P Patch instruction
  • Alt-Z Undo modification (Won’t always work. Should still be careful editing.)
  • Alt-Y Redo modification (Won’t always work. Should still be careful editing.)
  • Alt-S Save file
  • Alt-C Find Code Caves
  • Ctrl-Alt-F Make jump unconditional
  • Ctrl-Alt-N Neuter the binary (remove calls to fork, setuid, setgid, getpwnam, setgroups, and chdir)

使用Fentanyl的步骤:

- Alt+F7 or File > Script File to load scripts
- Browse to main.py and open it
- That's it!

脚本语言编写: IDC 和 python

备注: Xref回答了两个问题:

  1. 谁调用了我?
  2. 我调用了谁?

Intel 64位寄存器列表

寄存器ABCD名称的含义 :Accumulator, Base, Counter, Data

注意,没有撤销的功能