Heretek-RE/re-dotnet-patch
GitHub: Heretek-RE/re-dotnet-patch
面向 Mono/.NET 程序集的结构化修补 MCP 服务器,提供方法体 NOP、IL 替换、ldstr 字符串替换等能力,当前处于接口已定义、后端待实现的骨架阶段。
Stars: 0 | Forks: 0
# re-dotnet-patch
用于对 Mono / .NET 程序集进行结构化修补的 MCP 服务器。
## 状态
**v2.8.0 — SKELETON.** 工具契约已最终确定并由测试固定
(`tests/test_re_dotnet_patch.py`)。实际的往返修补器
后端 (dnlib / Mono.Cecil / pythonnet) 将在 v2.8.1 中推出。
目前,每个变更工具都会返回一个结构化的
`{status: "not_implemented", reason, remediation, schema_for_replay"}`
dict,因此:
1. 下游技能现在就可以针对这些工具名称进行开发。
2. 调用者可以将操作序列化为 patch descriptor,以便在 v2.8.1 推出后
稍后重放。
3. 尽管后端被推迟,v2.8.0 的 CHANGELOG 条目依然可以
为这个新服务器进行宣传。
## 工具
| 工具 | 状态 | 功能描述 |
|---|---|---|
| `check_dnlib` | WARN (stub) | 探测未来的后端 |
| `nop_method` | not_implemented | 用 NOP-sled 替换方法体 (返回默认值) |
| `replace_method_body` | not_implemented | 用调用者提供的 IL bytes 替换方法体 |
| `replace_string_ldstr` | not_implemented | 替换方法体内的特定 `ldstr` operand |
| `patch_assembly` | not_implemented | 原子化地应用一系列操作 |
| `rollback_patch` | delegate | 委托给 `re-patch.restore_original` |
## 为什么需要一个新的服务器(而不是 re-patch 中的辅助工具)?
`re-patch` 仅支持字节拼接,纯粹使用标准库 + mcp/pydantic。添加
沉重的 dnlib / Mono.Cecil 依赖会使 re-patch 的表面积膨胀,给
只需要字节拼接的调用者带来负担。根据 v2.8.0 计划
(于 2026-06-07 批准,LO 决策),Mono dnlib 修补器将作为
一个新服务器发布,以保持依赖边界清晰。这需要在 `.mcp.json` 中增加 1 个服务器数量条目
(30 → 31)。
## 该服务器目前不做的事情
- 目前它不会 NOP 方法体。v2.8.1 将支持此功能。对于 v2.8.0,
请使用 `re-dotnet.decompile_type` 反编译程序集,手动编辑
C# 源码以 stub 目标方法,然后重新编译。
- 它不会触及原生 / 非 .NET 二进制文件。请使用 `re-patch` 进行
字节拼接;使用 `re-vm-reverse` 处理受 VM 保护的原生代码。
- 它不会恢复原文件 —— 请直接调用 `re-patch.restore_original`。
`rollback_patch` 工具根据文档进行委托。
## 关闭 CD-3
r03-stress 运行已识别出 `MonoLauncher::PASystemInfoScanner.MainWindow`
为 Mono Steam-gate 目标(参见
`See the RE-AI output directory.`
获取完整的反编译内容)。一旦 v2.8.1 引入了 dnlib 后端,
`nop_method("PASystemInfoScanner.MainWindow::GetSteamRegistryKey")`
将作为 HIGH 置信度的 patch 关闭 CD-3(目前仅为 DOC-ONLY)。
## License
MIT。
标签:DNS 反向解析, MCP, 二进制分析, 云安全运维, 云资产清单, 程序集修补, 逆向工具, 逆向工程