为评估当前逆向工具的效能,特写此文:
对比版本
对比其中需要说明的几点:
软件名称 | 出品方 | 官网 | 价格 | 反汇编算法 | 功能及平台支持 | 远程调试 | 反编译差异 | 扩展性 |
IDA Pro | IDA商业公司(比利时公司) | 点击跳转 | 软件+插件单独购买 价格几千美金 | 递归下降 | 支持全品类处理器X86,X64,ARM,Linux 支持静态分析和动态调试 | 支持,可置入调试组件,网络调试分析目标机程序 | 纯净还原C代码,支持间接寻址加偏移的程序的解析 | 支持C++,Python,JavaScript,OCaml编写插件/处理器模块/文件加载器 |
Ghidra | 美国国家安全局NSA | 点击跳转 | 免费 | 线性扫描 | 依赖Java,支持多处理器但未公布类别 | 不支持 | 无法过滤编译器添加的堆栈保护等代码 | 支持 Java 或 Python |
Cutter(radare2) | 社区贡献者,radare2的GUI版本 | 点击跳转 | 免费 | 线性扫描 | 未公布类别 | 不支持 | 无法过滤编译器添加的堆栈保护等代码 | 支持python |
Ghidra是美国国家安全局开源和维护的,无法排除有什么ZZ问题、后门。
Cutter是radare2的GUI版本,但是之前radare 和radare2到Cutterr的变迁存在开发团队理念不合才做的分家(分支),开发团队的稳定性因为不是商业机构,可能存在长期支持维护不好的问题。
IDA十几年的商业迭代,目前已经是7.6版本,反汇编的算法采用的是 递归下降算法,指 反编译时,按照调用关系来汇编,没有任何地方跳转到的十六进制字节,是不进行汇编的,代码量=有效代码量,这种独特的解析算法基于对程序的深刻分析,而其他的反汇编软件采用 线性扫描反汇编算法,从程序开始到结束,逐个字节对照汇编指令进行分析,反汇编出来的代码量=程序文件大小。效率和代码里,IDA更优。
IDA支持在目标机上放置调试组件dbgserver,可以通过远程进行静态程序加载和动态调试。可以不需要在目标电脑上(如wince系统,linux系统)安装逆向分析软件或动态调试软件。