Binary Ninja 逆向工程
仅在用户明确选择 Binary Ninja、其 IL 能实质性帮助数据流分析,或需要独立验证 IDA/Ghidra/radare2 结果时使用。
安全启动
- 在对目标执行操作前,确认仓库案例范围已就绪。
- 检查
skills/tool-index.md中是否有binaryninja;Binary Ninja 是商业软件,必须手动安装并持有有效的 Vector 35 许可证。 - 对副本进行操作,避免修改原始文件或保存数据库更改。
- 在推进发现之前,记录导入/导出、入口点、架构和文件哈希。
选择集成方式
- GUI 或 Python API: 当 Binary Ninja 已打开或用户希望直接交互分析时首选。
- 社区 MCP 桥接: 仅在明确请求时使用,并审查第三方插件边界。将 Binary Ninja HTTP 监听器保持在
127.0.0.1:9009;默认不启用网络暴露。 - 备用方案: 当 Binary Ninja 不可用或其许可证/API 无法打开目标时,使用
ghidra-reverse、ida-reverse或radare2。
审查过的社区集成是 fosdickio/binary_ninja_mcp,GPL-3.0 许可证,插件元数据版本 1.1.0,最低 Binary Ninja 构建版本 4000。该仓库并非 Vector 35 的官方组件。此技能基于提交 8c5134ee46e2bf44f9a4d846bd971c3e39b3e306(2026-09-03)进行审查。
通过 Binary Ninja 的插件管理器或从审查过的源码安装 Binary Ninja 端。对于 MCP stdio 桥接,请固定桥接发布版本,而不要使用未限定范围的包:
npx -y [email protected] --host 127.0.0.1 --port 9009
仅将上述命令注册到用户选择的 MCP 客户端中。直到 Binary Ninja 正在运行、已打开二进制文件且 localhost 插件端点响应之前,桥接未就绪。
分析工作流
- 枚举已打开的二进制文件并选择目标视图。
- 捕获二进制文件状态、入口点、段、导入、导出和代表性字符串。
- 在解释单个函数之前,先跟踪调用点和交叉引用。
- 使用 HLIL 获取可读逻辑,MLIL SSA 进行数据流分析,LLIL/反汇编则在提升丢失指令级行为时使用。
- 增量式应用名称、注释和类型;保留原始地址作为证据。
- 将字节补丁、原型更改和保存文件写入视为变更。仅在请求时执行,并保留原始工件。
- 使用第二证据源或其他反汇编器交叉验证高影响力结论。
实用的 MCP 能力系列包括:二进制/视图选择、list_imports、list_exports、list_strings、decompile_function、get_il、调用者/被调用者、交叉引用、类型、注释、重命名和字节补丁。请发现实时的工具列表,而不是假设每个上游功能都存在。
输出
报告具体的地址、函数名称、IL 级别、支持的字符串/导入、置信度以及复现步骤。保持仓库中使用的“证据 → 发现 → 路径”链。