内容
align="center">
<img src="assets/logo.png" alt="IDA 无头 MCP 服务器" width="280"/><br/>
<sub>每天盯着 OLLVM 混淆的控制流图,溃</sub>
</p>
<h1 align="center">IDA 无头 MCP 服务器</h1>
<p align="center">
<strong>81 种工具。非阻塞。多格式。史上最强大的二进制分析 MCP 服务器。</strong>
</p>
---
## 这是什么
目前所有的 IDA MCP 服务器都如同废物。你调用反编译,服务器冻结 30 秒,你的代理只能盯着天花板。一个二进制文件对应一个代理。就像在 2026 年使用投币电话。
这个服务器不会这样。每个工具都会立即给你答案或告诉你正在发生的事情:“工作进程正在启动 IDA,请给我 10 秒钟。” 然后它会在后台处理,你可以去做其他事情。十个代理可以同时处理同一个二进制文件,互不阻塞。
81 种工具。SMT 支持的证明。过程间污点分析。CAPA 规则。YARA 生成。m 符号执行。CFF 去混淆伪代码。多格式、ELF、Mach-O 哈希解析(108,140 万预计算)。加密字符串解密。。所有工具都A Pro 9. idalib 运行,无插件。
## 为什么存在众不同
其他二进制 只提供 `反编译` 和 `列出函数`。仅此而已。它们只是围绕一个 API 调用。
这是一个**网络推理引擎**。它不仅可以反编译,还可以证明溢出是否可利用,跟踪污点跨函数边界,解除控制流混淆的恶意软件,解密字符串,解析 API 哈希,验证能力,并生成检测规则。并且它在单个毫秒内都不会阻塞你的代理。
根本的架构差异:
| 其他 MCP | 这个 MCP |
|-----------|----------|
| 服务器直接导入 idalib | 服务器从不导入 idalib。纯缓存读取。 |
| 一个请求阻塞所有请求 | 每个请求立即返回或待处理) 一次处理一个 | 仲裁器管理工作进程池、LRU 逐出、自动重启 |
| 崩溃丢失状态 | 原子写入、孤立恢复、崩溃计数器 |
| 仅支持 x86 PE | 支持 PE + ELF + Mach-O。x86_32、x86_64、ARM、AArch64。 |
| 无去混淆 | 完整的 CFF 去混淆并生成 |
## 快速入门
```bash
https://githubhel0nn/less-mcp-exp
less-mcppip install -e .
# 可选:为证明工具构建 SMT 求解器
cd tools/binbit-src && cargo build --release && cd ../..
cp tools/binbit-src/target/release/binbit.exe tools/binbit.exe
```
MCP 配置:
```json
{
"ida-headless-mcp": {
"command": " "args": ["-m", "ida_headless_mcp.server"],
": {
"PYTHONPATH": "/path/to/less-mcp-exp/src "IDA_HEADLESS_IDA_DIR": "C Files/IDA Professional.0",
_HEADLESS_MCP_CACHE "/path/to/less-mcp-exp/cache }
}
}
需要 IDA Pro 0 及 idalib 和 Hex-Rays 反编译器 SSE/HTTP(推荐用于 AILA 集成 - 适用于客户端断开连接):
```bash_HEADLESS_MCP_TRANSPORT=sse python -mless_mcp.server 监听 http://127.0.120/sse
```
## 精彩纷呈
整数溢出可利用 4 **
```
prove_overflow(二进制 ID,函数,"mem2)
# -> SAT: v10=0x40000000,=4. 溢。4ms.
```
启发式方法具有具体见证。其他工具在上超时 30**解除 CFF 混淆的恶意获取可读的伪代码:**
```
deflat_function(二进制 ID,"0x140001000")
# -> 提取 63 个状态,44 个真实处理程序,3 个不透明,16 个跳转
#具有已解析函数代码:socket(),bind(),WSAStartup()...
```
在 3 种不同的 CFF 变体上测试:现实世界的 CFF+BCF 恶意软件,OLLVM CFF+BCF+SUB,OLLVM CFF+split。所有变体都正确解除混淆并生成丰富的伪代码。
**解密二进制文件中的所有加密字符串:**
```
decrypt_binary_strings(二进制 ID,"0x1400947D0")
# -> 312/314 字符串解密。自动检测 CAST5/AES/Blowfish。
```
**解析 108 种算法的 API 哈希:resolve_api_hashes(二进制 ID)
# -> 108 种算法 x 13,439 个 API = 140 万预计算条目
# -> 即时查找。CRC32,DJB2,ROR13,FNV-1a 等。
```
**验证二进制文件可以实际执行的操作:**
```
verify_capabilities(二进制 ID)
# -> 扫描 22 个能力类别
# -> 已确认:crypto,network,registry,processhttp_api
# ->:screenshot,cmd_exec(在 3 个级别验证,哈希表,```
## 架构
```
你的代理(Claude / AILA / 其他)
|
| MCP 协议(stdio 或 SSE/HTTP)
v
server.py(81 种工具,读取缓存,从不触及 IDA)
|
ThreadPoolExecutor(max_workers=8,服务器端分析)
|-- 仲裁线程(监督器,回收死亡工作进程,崩溃计数器,自动重启)
|-- 缓存读取器(文件系统是唯一的 IPC 通道)
|-- 原子队列消费(重命名后读取,无数据丢失 |-- 线程安全生命周期管理器(_state_lock 共享状态)
|-- 服务器端工具 IDA):
|-- Miasm):反汇编,IR 提升,简化,模拟
| |-- CFF(5):检测,解除混淆, 反汇编,补丁,模拟
| |-- 解密(2):按函数,整个二进制字符串解密
| |-- API 跟):调用站点,哈希引用,能力验证
| |-- 伪代码生成器:从解除混淆结果生成类似 C 的丰富输出
|-- 二进制格式:PE + ELF + Mach-O
| `-- 去混淆引擎:111 条 MBA 规则,模式匹配器,具体 IR 评估器
|
| 每个二进制文件启动一个子进程(stdin=DEVNULL,与 MCP 管道隔离)
v
binary_worker.py(加载 .i64,处理请求,将结果写入缓存)
|
|-- session.py(分析引擎)
|-- hexrays_analysis.py(CTree 查询,污点分析,微代码)
|-- hexrays_cff.py(CFF 解除混淆的微代码优化器)
|-- proof.py(通过 binbit 求解器进行 SMT 证明)
.py(加密,混淆,堆栈 `-- recovery.py(类层次结构,协议,```
服务器进程在其从未见过。工作进程执行任务。杀死,重启它,丢失 - 所有内容都缓上,并具有。
## 所有 81 种工具
**二进制6)** --关闭,列出,轮询,元数据,工作进程状态
**函数分析(8)** -- 反编译(自动 fallback 到 伪代码),编译,列出引用,调用图链,栈帧
**二进制属性(6) 段,检查导入,导出,熵
**漏洞研究(3)**跨 10 个漏洞家族的模式搜索,具有验证门深度利用评估,过程间污点跟踪
**SMT 证明)** -- 溢出证明,边界充分性,不透明谓词,表达式等价性。所有返回证明覆盖百分比。
**混淆检测(2) 检测(M CFF + ),CFG 恢复
**恶意软件分析(7)** -- 行为分类,防分析检测,字符串分类,动态解析常量,API 哈希解析(108 种算法,140 万条目),库检测
**检测数据库(4)** -- CAPA(678 条规则),栈字符串(虚拟缓冲区,所有 MOV 宽度),YARA 生成(按 BB 修复屏蔽),协议状态机
**Hex-Rays 深度分析(7)** -- CTree 查询,微代码,伪代码切片,数据流跟踪,定义-使用链,值范围,解编译警告
**符号执行(3)** -- 路径可行性,路径查找,约束可达性(angr + Hex-Rays 值范围)
**二进制差异分析(3)** -- 结构差异,函数差异,安全排名调查。所有服务器端缓存。立即C++ 恢复(** -- 通过 v构造函数分析的类,带有污点协议检测
**函数相似性(2) 通过结构哈希查找,跨二进制相关**Miasm)** -- 多汇编,IR 提升,表达式简化/去混淆,符号执行。服务器端。无需工作进程。立即。支持_32,x64,ARM,AArch64。
**C(5)** -- 通过 miasm `iblock` 获取完整的函数 CFG,CFF(5 种签名VM,Hikari,LCG-CFF,Tigress,Themida),解除混淆并生成伪代码,计算ays 兼容的丁,具体模拟种寄存器/内存。
| 工具 | 功能---|---|
|`dis`|通过 mias完整的函数 CFG。返回块,边,每个块的特征。|
|`detect_obfuscation`|FF:调度器谓词,状态签名匹配。|
lat_function`|恢复。分类块。已解析函数名的代码。|
|`patch_cff`|计算线性化调度器的字节补丁。将它们排队为 突变。|
|`emulate_concrete`|种输入的具体模拟。哈希验证,加密识别。batch_cff扫描所有函数以FF 混返回具有块计性结果。|
|`build_call_tree`|从递归解除混其调用者。|
模式匹配由 `chniques/` 驱动可插入的调度器模式数据库(5),不透明谓词(5 个3n1Manip),状态变量(4:栈,全局)和混签名(5)。
**解密和 API 跟踪(5) 加密字符串解密(CAST5/AES/Blowfish,多加密试验),API 调用站点跟踪(IAT 直接, thunk 间接,哈希解析),哈希引用跟踪,能力验证(来自可编辑的 `api_categories.json` 的 22 个类别)。
**去混** -- 10 类别中 条 MBA 重写XOR,ADD,SUB,AND,OR,MUL,BNOT,NEG,常量折叠,谓词)+ 14 条不透明谓词规则。数据驱动:规则为 JSON,引擎为通用模式匹配器,支持交换律。无 z3 -- 使用 binbit 和 miasm 简化器。
**API 哈希解析** -- 克隆自 OALabs/HashDB 的 108 种算法。来自 30 个系统 DLL 的 13,439 个 Windows API 名称。`hashdb.json.gz` 中有 140 万预计算哈希条目。自动检测二进制文件使用的算法。
**变异(8)** -- 重命名函数/变量,设置注释,设置函数/变量类型,修补字节/组装。写入安全,具有生成计数器,多代理队列,原子文件写入。
## 二进制格式支持
服务器端工具(CFF,解密,API 跟踪,能力扫描)在原始二进制字节上工作。它们支持:
| 格式 | 检测 | 代码段 | 架构 |
|--------|-----------|-------------|-------------|
| PE (.exe/.dll/.sys) | MZ 魔术数字 | `.text` 或第一个 `IMAGE_SCN_MEM_EXECUTE` | x86_32, x86_64, ARM, AArch64 |
| ELF (Linux/Android) | `\x7fELF` 魔术数字 | `.text` 或第一个 `SHF_EXECINSTR`86_32,_64, ARM, AArch64, MIPS |
| Mach-O (macOS/iOS) | `FEEDFACE`/`FEEDFACF` | `__TEXT,__ | x86_ x86_64, AArchIDA 工作进程端处理 IDA 支持的任何包括原始固件FF 等) 并发性和持久性
这不是玩具。它是为生产环境中的多代理工作负载而构建的:
- **原子队列消费**:工作进程重命名队列为 `.processing` 然后读取。服务器追加到一个新文件。无数据丢失。
- **线程安全生命周期**: `_state_lock` 保护所有共享状态。仲裁线程和请求处理程序永远不会竞争。
- **崩溃恢复**:孤立的 `.processing` 文件在工作进程重启时恢复。崩溃计数器持久化到磁盘。3 次崩溃后,报错并退出。
- **原子缓存写入**:`tmp` + `os.replace`。守护进程在写入过程中被杀死,不会留下损坏的 JSON 文件。
- **错误缓存**:失败的工具结果写入标准缓存路径。无限重新排队循环。
- **线程池**:`ThreadPoolExecutor(max_workers=8)` 用于服务器端工具。有限并发。
- **`stdin=DEVNULL`**:工作进程永远不会继承 MCP 服务器的 JSON-RPC 管道。其他实现中每个“工作进程无声死亡”的根本原因。
## 性能
Ryzen 9 5900X,Windows 11, 9.0 上的真实基准测试。
### 按二进制文件缩放
| 二进制文件 | 大小 | 函数 | 冷分析 | 暖启动 | 索引构建 |编译 |
|---|---|---|
| ping 44 KB | 47 | ~3s | 208 毫秒176 毫秒 | 14 毫秒 |
| notepad.exe | 352 KB | 521 | ~6s | 219 毫秒 | 243 毫秒 | 6 毫秒 |
| certutil.exe | 1.5 MB | 3678 | ~25s | 405 毫秒 | 2.1 秒 | 1226 毫秒 |
| ntoskrnl.exe | 12.1 MB | 29328 | ~170s | 1542 毫秒 | 18.8 秒 | 40 毫秒 |
### 工具级计时
| 操作 | 典型时间 | 备注 |
|---|---|---|
| 缓存结果(任意工具) | <1 毫秒 | 文件系统读取 |
| 工作进程启动(idalib) | 90-170 毫秒 | 每个工作进程一次 |
编译(平均) | 1-15 毫秒 | 复杂度不同 |
| SMT 证明(binbit) | 4-20 毫秒 | 具有具体见证 |
| CFF 解除混淆(259 个块) | ~15s | 服务器端,无工作进程 |
| CAPA 扫描(678 条规则) | <500 毫秒 | 基于索引 |
| 字符串解密(整个二进制文件) | ~30s | 多加密试验 |
| 能力验证 | ~5s | 完整 API 扫描 + 哈希解析 |
| 二进制文件差异分析(服务器端) | <100 毫秒 | 读取两个缓存索引 |
## 这不是
- **不是 Ghidra 的替代品。** 仅限 IDA Pro 9.0。无妥协。
- **不是插件包。** 提供功能,而非依赖项,您需要自行安装。
- **不是代理。** 纯工具交付。您的代理负责思考。
- **不是 GUI。** 无头。为 LLMs 和自动化而设计。
- **不是仅限 PE。** 支持 PE + ELF + Mach-O。多架构。
## 站在巨人的肩膀上
所有内容从头开始重新实现。无代码复制。仅受启发于首先解决这些问题的杰出人士的启发:
| 项目 | 我们学到了什么 | 许可证 |
|---|---|---|
| [CAPA](https://github.com/mandiant/capa) | 678 条行为规则 + 106 ATT&CK 技术映射 | Apache-2.0 |
| [FLOSS](https://github.com/mandiant/flare-floss) | 通过虚拟缓冲区 + MOV 宽度处理检测栈字符串 | Apache-2.0 |
| [miasm](https://github.com/cea-sec/miasm) | 多架构反汇编,IR 提升,符号执行,表达式简化 | GPLv2 |
| [binbit](https://github.com/nickcano/binbit) | QF_BV SMT 求解器,用于 4 毫秒溢出证明 | MIT |
| [angr](https://github.com/angr/angr) | 用于路径可行性 + 约束可达性的符号执行引擎 | BSD |
| [D-810](https://github.com/RolfRolles/d810) | MBA 重写规则,CFF 解混淆模式,不透明谓词目录 | GPL |
| [OALabs HashDB](https://github.com/OALabs/hashdb) | 108 种哈希算法定义,预计算的 API 哈希数据库 | MIT |
| [mkYARA](https://github.com/fox-it/mkYARA) | 操作数通配符的 YARA 生成 | MIT |
| [VulFi](https://github.com/Accenture/VulFi) | 危险函数引用模式 | MIT |
| [HexRaysPyTools](https://github.com/igogo-x86/HexRaysPyTools) | 用于类层次结构的 vtable 构造函数检测 | MIT |
| [Diaphora](https://github.com/joxeankoret/diaphora) | 跨二进制文件函数相似性的结构哈希 | GPL |
| [FindCrypt](https://github.com/d3v1l401/FindCrypt-Ghidra) | 加密常量签名数据库 | GPL |
## 许可证
AGPL-3.0。非商业。
miasm:GPLv2。binbit 求解器:MIT。
<p align="center"><em>81 种工具。零阻塞。交付。</em></p>