Communitygithub.com

逆向工程 MCP

先进、循证、可复现的逆向工程 Codex 技能

逆向工程 MCP 是什么?

此技能为 AI 代理提供了一套完整的、专业化的逆向工程工作流程,旨在从授权的二进制文件、固件、协议或可疑样本中得出可辩护、可复现的结论。它覆盖从范围界定、证据保全到静态分析、假设驱动测试、受控动态分析以及最终报告的整个生命周期。技能严格遵循安全边界,强调观察与推断的分离,并要求对每一项重要发现进行独立验证。此技能适用于 Codex 平台,通过整合 Ghidra、angr、GDB、Frida 等多种后端工具,为开发者提供从初步分类到深入漏洞分析的全方位支持,是进行安全研究、恶意软件理解和协议逆向分析的标准参考。

兼容平台~Claude Code✓Codex CLI~Cursor
npx skills add Adrian-Devkay/reverse-engineering-mcp

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

逆向工程 MCP 是做什么的?

使命

从授权工件中产生可辩护的逆向工程结论。该技能协调静态分析、受控执行、仿真、插桩、协议推理、漏洞分类和报告,同时保全证据并避免操作滥用。

当用户要求理解、反编译、调试、插桩、比较、仿真、模糊测试或记录现有二进制文件、应用程序、固件映像、协议、文件格式或可疑样本时,使用此技能。它并不因为目标可访问而授予访问权限。

不可协商的操作契约

  1. 在接触目标前明确范围:所有者或授权依据、确切的工件/设备/服务、允许的技术、时间窗口、网络限制、数据处理和停止条件。
  2. 保留原始工件。使用副本工作,首先记录 SHA-256 和大小,并保留来源、时间戳、工具版本、转换过程和重要命令。
  3. 优先选择离线、只读、可逆的分析。在常规分析期间,切勿提交凭据、联系真实的命令与控制基础设施、更改生产系统或刷写硬件。
  4. 将观察结果与推断分开。将声明标记为 观察到、推断 或 未知;引用偏移量、地址、跟踪、数据包、日志或可重复的实验。
  5. 使用假设和验收标准。每个昂贵或可执行操作必须回答一个已定义的问题,并说明哪种结果会确认或削弱该假设。
  6. 使用独立视角交叉检查重要结论:反编译器对比汇编、静态结构对比运行时跟踪、或格式假设对比差异输入/输出。
  7. 说明覆盖范围和局限性。安静的跟踪、缺失的符号、不完整的仿真或不可重现的崩溃并非缺失的证据。

分析生命周期

除非用户要求更狭窄的任务,否则遵循以下生命周期。详细阶段清单请阅读 references/workflow.md。

阶段 0:范围门控

如果授权或范围不明确,则停留在高级计划阶段。在解决缺失的边界之前,不要创建案例记录、执行代码、绕过访问控制、联系服务、上传样本或更改设备。

阶段 1:接收与完整性

创建包含工件名称、来源、格式、架构、大小、SHA-256、时间戳、疑似运行时和已知排除项的目标清单。使用 scripts/init_case.py 生成确定性清单。切勿将生成的案例数据放置在公共存储库中。

阶段 2:分类

识别文件格式、架构、入口点、节/段、导入/导出、符号、字符串、熵、编译器或加壳器线索、签名和缓解标志。如果可用,从本地只读 MCP 开始。记录正面和负面观察结果。

阶段 3:静态重建

恢复函数、控制流、数据流、调用图、交叉引用、命名空间、类型、资源、配置和信任边界。将反编译器输出视为假设。对照反汇编和原始字节确认安全相关路径,特别是解析器、反序列化器、更新逻辑、密码学/密钥处理、权限转换、IPC 和错误路径。

阶段 4:假设测试

选择最具针对性的技术,以区分相互竞争的解释。使用 Capstone 或 radare2 进行汇编验证,Ghidra 进行深层结构分析,angr/Unicorn 进行有界推理,以及差异样本进行协议和格式分析。保存确切的输入和预期观察结果。

阶段 5:受控动态分析

仅在隔离、可恢复的实验室中使用 GDB/gdbserver、Frida、QEMU 或沙箱。默认禁用或模拟网络,移除凭据和敏感挂载点,在执行前创建快照,并酌情捕获进程、系统调用、内存、文件、IPC 和网络证据。动态执行需要对样本和问题有明确的授权。

阶段 6:关联与分类

构建从源头到行为的链条:输入或信任边界 → 解析器/状态转换 → 相关函数或指令 → 可观察效果 → 影响。对于漏洞,区分根本原因、可达性、前提条件、可利用性、受影响的版本、影响和修复方案。优先选择最小破坏性的可重现代码,而非武器化的利用代码。

阶段 7:报告

除非要求其他格式,否则使用 references/report-template.md。包括范围、完整性、环境、方法、证据表、置信度、局限性、影响、修复/检测指南、未解决问题和安全的复现细节。

后端路由

选择最小且充分的集合,然后在证据受阻时升级:

问题首选后端要求验证
这是什么文件?LIEF、file、只读 MCP哈希和格式元数据
此函数做什么?Ghidra MCP汇编、调用者/被调用者或数据流
何处使用了字节模式或 API?Ghidra 搜索、radare2、YARA地址和周围字节
路径能否到达条件?angr 或有界 Unicorn具体约束或静态路径
运行时会发生什么?GDB、Frida、QEMU、沙箱可重现的跟踪和隔离记录
代码是否加壳或混淆?熵、FLOSS、capa、Ghidra、radare2节布局、解码后的字符串或行为
固件映像是否为复合结构?binwalk、strings、QEMU/Unicorn偏移量、提取的哈希和仿真限制
协议如何运作?受控样本、Scapy/boofuzz、差异测试保存的捕获和状态机证据

references/mcp.md 中描述的本地 MCP 是确定性和只读的。Ghidra 后端用于深度静态分析;其变异工具需要明确批准,且其项目缓存必须与样本分开。Shell 命令和可执行后端是后备或假设测试表面,而非证据记录的替代品。

证据与置信度

对于每项实质性发现,维护:

  • 声明: 一个精确的陈述,而非一堆假设。
  • 证据: 文件、哈希、偏移量/地址、跟踪、数据包、日志或实验标识符。
  • 解读: 证据为何支持声明。
  • 替代方案: 未排除的合理解释。
  • 置信度: 高、中或低,并附上理由。
  • 状态: 已确认、需要重现、受阻或已证伪。

重要的发现应在可行时有两个独立的锚点。推荐使用 references/case-schema.md 中的机器可读结构。

专门模式

当目标不是简单的本地二进制文件时,请阅读 references/modes.md 和 references/tool-routing.md。

  • 恶意软件或可疑代码: 首先隔离;提取功能、配置、持久化、指标和行为,无需实时命令与控制。
  • 漏洞分析: 在讨论严重性之前,证明不安全边界和可达性;不要从可疑指令或未经验证的崩溃推断远程可利用性。
  • 固件和硬件: 记录启动链、分区、更新信任、调试接口和恢复路径;未经明确授权,不得刷写或更改启动状态。
  • 协议和文件格式: 从受控的差异观察推断语法和状态转换;将猜测的语义标记为假设。
  • 托管/移动目标: 在分析行为之前,识别运行时、打包、权限、IPC、签名、导出组件、存储和本地桥接。
  • 混淆和反分析: 在消除混淆之前,记录其机制和效果;使用副本工作并保留原始行为。

执行与安全边界

GDB/gdbserver、Frida、QEMU、模糊测试器和沙箱运行器即使用于观察,也能执行目标控制的代码。需要可丢弃的虚拟机或等效隔离、干净的快照、禁用/模拟的网络、无真实凭据以及明确的、针对样本的授权。在外部网络访问、生产交互、固件刷写、身份验证/许可绕过或在本地授权实验室之外的利用测试之前暂停。

拒绝或重定向其主要目的是未经授权访问、凭据窃取、持久化、逃避、破坏性操作、数据泄露或绕过安全控制的请求。当操作范围不存在时,防御性玩具示例、静态研究计划或对已拥有样本的分析是可以接受的。

可复现性标准

返回,除非用户要求不同的格式:

  1. 范围、授权假设、排除项和目标清单。
  2. 工件哈希、环境、工具版本和隔离措施。
  3. 有序的方法和分析时间线。
  4. 有证据支持、附带置信度和替代方案的发现。
  5. 影响、修复、检测或兼容性指南。
  6. 局限性、未回答的问题和后续实验。
  7. 包含命令、脚本、偏移量、跟踪、捕获和输出参考的安全附录。

将生成的清单、样本、日志、凭据、本地路径和私有标识符保留在此公共技能存储库之外。

相关技能