用途:在无源码时引导智能体分析二进制,恢复算法逻辑,比较固件版本查找漏洞补丁,理解恶意软件或 CTF 题目二进制,恢复被剥离的 ELF/PE 符号,并用 Ghidra 或 r2 脚本自动化分析。
主要能力与用法: 初步排查:file 查看架构与是否 stripped,strings -n 8 与 strings -el 提取字符串,xxd 查看字节,readelf -h / -s、nm -D 查看符号,objdump -d -M intel 反汇编,checksec --file= 检查 RELRO、NX、PIE、canary。 Ghidra:可无头分析,命令为 analyzeHeadless /tmp/ghidra_projects MyProject -import suspicious_binary -postScript ExportDecompile.java;GUI 中新建项目、导入文件、自动分析、用 F 定义函数、打开 Decompiler 窗口查看类 C 输出、用 L 重命名变量与函数、Ctrl+Shift+F 查看交叉引用;支持 Java 与 Jython 脚本遍历函数。 radare2:使用 aaa 全量分析、afl 列函数、pdf @ main 反汇编、VV 图形模式、iz 查看字符串;可用 wx 9090 写入 NOP 打补丁、wci 插入指令、wt 写出文件;支持 r2 -qc 'aaa; afl' 与 r2 -i script.r2 脚本化。 Binary Ninja:通过 Python API 加载二进制并遍历函数,读取 HLIL 输出。 C++ 识别:虚表(.data.rel.ro 函数指针数组)、RAII(成对构造析构与异常着陆垫)、模板(_Z 名字与重复逻辑)、std::string(内联 SSO 缓冲或堆指针);可用 c++filt 还原符号。 去符号恢复:借助 __libc_start_main 定位 main,查找 syscall 指令,通过字符串交叉引用定位错误处理,用熵分析加密段。 差异比对:Diaphora 插件、bindiff 命令、sha256sum 与 objdump 对比,用于定位更新后修补的漏洞函数。
适用场景与限制:适合 ELF/Linux、PE/Windows、固件与混淆二进制分析;常见问题包括反编译器因间接跳转或类型错误失败、大型二进制分析不完整、架构判断错误(ARM 与 Thumb、MIPS)、反调试与加壳(如 UPX)。资料未提供收费、价格或效果信息。