2.2.2 IDA Pro

    • :为当前指令添加全文交叉引用的注释
    • :跳转到任意地址
    • Esc:返回到跳转前的位置
    • :分别按字节、字、双字显示数据
    • A:按 ASCII 显示数据

    IDA Python

    • — 用于识别静态编译的可执行文件中的库函数
    • Find Crypt — 寻找常用加密算法中的常数(需要安装 )
    • IDA signsrch — 寻找二进制文件所使用的加密、压缩算法
    • — 污点分析和符号化执行工具
    • snowman decompiler — C/C++反汇编插件(F3 进行反汇编)
    • — 自动类型重建以及对象浏览(C++)(jump to disasm)
    • IDA Ref — 汇编指令注释(支持arm,x86,mips)
    • — 函数自动重命名
    • nao — dead code 清除
    • — 类/结构体创建和虚函数表检测
    • DIE — 动态调试增强工具,保存函数调用上下文信息
    • — 模拟代码执行(支持X86、ARM平台)
    • Diaphora — 程序差异比较
    • — 基于 Keystone 的 Patch 二进制文件插件​
    • FRIEND — 哪里不会点哪里,提升汇编格式的可读性、提供指令、寄存器的文档等
    • — 简化复杂的函数流程图
    • bincat — 静态二进制代码分析工具包,2017 Hex-Rays 插件第一名
    • — Golang编译的二进制文件分析助手
    • BinDiff

    常用脚本

    堆栈不平衡

    1. 用 Option->General->Disassembly, 将选项 Stack pointer 打钩
    2. 仔细观察每条 call sub_xxxxxx 前后的堆栈指针是否平衡
    3. 有时还要看被调用的 sub_xxxxxx 内部的堆栈情况,主要是看入栈的参数与 ret xx 是否匹配
    4. 注意观察 jmp 指令前后的堆栈是否有变化
    5. 有时用 Edit->Functions->Edit function…,然后点击 OK 刷一下函数定义

    参考资料