mcp-server-reverse
mcp-server-reverse(PyPI 包名:atengk-mcp-server-reverse)是一款专为 AI Agent / LLM 打造的跨平台二进制静态逆向分析与数字取证(DFIR)MCP Server。
采用**“纯 Python 静态分析内核(lief + capstone + pefile)+ 按需外部 CLI 增强适配层(radare2 / objdump / floss)”**混合分层架构:无需预装任何庞大的商业逆向软件,开箱即可对 PE(.exe/.dll/.sys)、ELF(Linux/Android .so)、Mach-O(macOS/iOS,含 Fat Binary 多架构切片) 执行全景画像、纵深取证元数据提取、香农熵脱壳研判、导入/导出/符号检索(含 PE64 .pdata 无符号函数恢复)、IOC 字符串提取、密码学常量扫描、多架构反汇编及 RIP/PC-relative 交叉引用(Xref)定位;当宿主机或容器环境存在 radare2 / floss 时,自动解锁类 C 伪代码反编译与混淆栈字符串解码。
✨ 核心特性
- 100% 纯 Python 核心兜底:基于
lief、capstone、pefile构建跨格式解析底座,零外部 CLI 依赖即可运行 14 个核心逆向分析与数字取证工具。 - 纵深取证画像与无符号函数恢复:自动提取 TLS 回调、PDB 调试路径、Rich Header 哈希、文件尾部 Overlay 附加数据及代码签名状态;针对去除符号表(Stripped)的 64 位 PE 文件,自动解析
.pdata异常目录恢复内部函数起止边界(sub_<va>)。 - 指令级
RIP/PC-relative交叉引用引擎:突破常规字节匹配局限,自动扫描可执行节区中的x86_64RIP-relative、ARM644 指令滑动窗口ADRP + ADD/LDR、直接call/jmp及数据段全局指针,精准定位字符串与函数被引用位置。 - 四级跨平台外部工具寻址与区分式降级:按
CLI 参数 > MCP_REVERSE_* 环境变量 > 系统 PATH > 操作系统常见安装目录自动探测radare2/rizin、llvm-objdump/objdump与floss;未安装时返回结构化降级指引或自动软回退。 - LRU 会话池与上下文防爆:以目标文件内容哈希(Fat Binary 采用文件哈希与架构复合摘要)前 12 位作为
session_id驻留内存缓存(默认最多8个会话),所有列表工具强制分页(offset/limit)与紧凑单行输出。 - 纵深沙箱防御与多协议传输:支持
--allowed-dir目录白名单防穿越、--max-file-size-mb大文件熔断、stdio/sse/streamable-http传输模式,以及--check/--doctor环境自检探针。
🧰 15 个正交 MCP Tools 矩阵
| 分组 | Tool 名称 | 核心职责说明 |
|---|---|---|
| 1. 会话与全景画像 ( Triage & Session) |
open_binary |
校验安全沙箱并加载二进制文件(支持 target_arch 选择 Fat Mach-O 切片)至 LRU 缓存,返回哈希(含 Imphash)、安全防护标志(PIE/NX/Canary)、分诊概览及纵深取证元数据(TLS 回调、PDB/Rich Header、Overlay、代码签名) |
list_sessions |
列出当前内存中驻留的所有二进制分析会话元数据摘要 | |
close_session |
显式释放指定 session_id 或清空全部缓存会话以回收内存 |
|
| 2. 结构与符号检视 ( Structure & Symbols) |
get_sections |
获取所有节区/段分布、读写执行权限、香农熵(0.0~8.0)及高熵加壳预警(>= 7.2) |
get_imports |
分页检索导入表,支持按库名、函数名正则与 8 类敏感行为标签(crypto、process_injection、anti_debug 等)过滤 |
|
get_exports |
分页检索导出函数表、序号(Ordinal)、虚拟地址与转发器(Forwarder) | |
get_symbols |
分页检索静态/动态符号表(支持类型过滤与 C++ Demangle);针对 64 位 PE 自动解析 .pdata 异常目录恢复无符号内部函数 sub_<va>(标注精确字节长度与 exception_frame 类型) |
|
| 3. 字符串与特征扫描 ( Strings & Signatures) |
search_strings |
提取 ASCII / UTF-16LE 字符串(可选开启 use_floss 解码栈字符串,未安装时自动软降级),内置 7 类威胁情报 IOC 自动分类(url、ipv4、registry、suspicious_cmd 等)与正则过滤 |
search_bytes_and_constants |
支持类 IDA 十六进制通配符搜索(如 "48 89 5C 24 ? 57")及内置密码学魔数常量(AES S-Box/Rcon、SHA-256/SHA-1/MD5 IV、CRC32、DES S-Box)扫描 |
|
| 4. 反汇编、交叉引用与内存 ( Disasm, Xrefs & Memory) |
disassemble |
多架构反汇编指定十六进制虚拟地址或符号名(支持 stop_at_ret 在函数返回指令处停止),自动内联标注 RIP/PC-relative 字符串字面量与符号注释 |
find_xrefs |
惰性构建会话级交叉引用索引,检索指向目标虚拟地址或符号的全部代码与数据引用(call/branch/rip_relative/pc_relative/data_pointer) |
|
read_memory |
按 VA、RVA 或文件物理偏移读取原始字节(单次上限 1024 字节),输出连续十六进制与标准 16 字节宽度 Hexdump + ASCII 对照视图 |
|
convert_address |
在虚拟地址(VA)、相对虚拟地址(RVA)与文件物理偏移(Offset)之间双向精确换算并定位所属节区与权限 | |
| 5. 外部增强与能力自检 ( Enhance & Capabilities) |
decompile_function |
受控调用本地 radare2/rizin 生成目标函数的类 C 伪代码与行列表;未安装时返回 EXTERNAL_TOOL_UNAVAILABLE 结构化安装与降级指引 |
get_capabilities |
返回核心引擎版本、沙箱边界配置及四级寻址器探测到的外部 CLI 工具可用状态 |
🚀 快速开始
1. 使用 uvx 一键启动(推荐)
# 自检运行环境与可选外部逆向工具状态
uvx atengk-mcp-server-reverse --doctor
# 以默认 stdio 模式启动并限制允许分析的样本目录
uvx atengk-mcp-server-reverse --allowed-dir /path/to/samples
2. 通用 MCP 服务配置 (mcpServers)
在任意支持 MCP 标准协议的宿主配置文件中添加以下通用配置:
{
"mcpServers": {
"reverse": {
"command": "uvx",
"args": [
"atengk-mcp-server-reverse",
"--allowed-dir",
"D:/samples"
],
"env": {
"MCP_REVERSE_MAX_FILE_SIZE_MB": "100",
"MCP_REVERSE_LOG_LEVEL": "INFO"
}
}
}
}
3. Docker 容器化隔离部署(内置 radare2 + objdump)
docker run -d \
--name mcp-reverse \
-p 8000:8000 \
-v /path/to/samples:/samples:ro \
-e MCP_REVERSE_AUTH_TOKEN=YOUR_API_TOKEN \
ghcr.io/atengk/mcp-server-reverse:latest
💡 常用使用提示词 (Prompt Examples)
挂载本 MCP 服务后,可直接复制以下提示词驱动 AI 执行专业逆向分析与数字取证:
场景 1:二进制全景画像与恶意样本初筛 (Triage & DFIR)
“请对
D:/samples/suspicious.exe执行静态逆向初筛:
- 获取它的 MD5/SHA256/Imphash、编译时间戳、PDB 路径、TLS 回调、代码签名以及是否存在高熵加壳节区或尾部 Overlay 附加数据;
- 列出所有命中
process_injection、anti_debug、network与execution类别的敏感导入 API;- 提取所有归类为
url、ipv4、registry和suspicious_cmd的 IOC 字符串,给出综合威胁研判结论。”
场景 2:关键字符串交叉引用追踪与控制流还原 (String Xrefs -> Disassembly)
“在当前分析会话中:
- 搜索包含
http、token或Error关键字的字符串并记录其虚拟地址;- 使用
find_xrefs查找是哪些代码指令引用了这些字符串;- 对发起引用的函数起始地址(或前后上下文)执行
disassemble,结合内联注释还原该函数的核心调用逻辑(若本机已安装 radare2,请同时调用decompile_function输出伪代码对照)。”
场景 3:去符号 (Stripped) 64 位 PE 内部函数恢复与密码学算法识别
“目标文件
D:/samples/stripped_payload.dll已被剥离符号表,请协助定位其加密逻辑:
- 调用
search_bytes_and_constants并开启scan_crypto=True,检查二进制中是否包含 AES、SHA-256、MD5 或 CRC32 的特征魔数常量表;- 使用
find_xrefs定位引用了该密码学常量表的代码地址;- 调用
get_symbols(设置symbol_type="exception_frame")查看通过.pdata异常目录恢复出的sub_<va>内部函数列表,定位所属函数并反汇编分析其参数传递与加密流程。”
场景 4:特征码匹配(类 IDA 通配符搜索)与内存数据检视
“请在目标二进制
.text节区中使用search_bytes_and_constants搜索类 IDA 十六进制特征序列48 8D 0D ?? ?? ?? ?? E8,对命中的虚拟地址执行disassemble查看具体指令,并使用read_memory检视其引用的目标数据区 Hexdump 内容。”
⚙️ CLI 参数与环境变量对照表
配置优先级:CLI 显式参数 > MCP_REVERSE_* 环境变量 > 内置默认值。
| CLI 参数选项 | 对应环境变量 | 默认值 | 说明 |
|---|---|---|---|
-h, --help |
- | - | 输出完整中文帮助说明与示例并退出 |
-v, --version |
- | - | 输出版本号与核心引擎版本信息并退出 |
--check / --doctor |
- | False |
执行运行环境与四级外部工具寻址自检探针 |
-t, --transport |
MCP_REVERSE_TRANSPORT |
stdio |
传输协议:stdio、sse、streamable-http |
--host |
MCP_REVERSE_HOST |
127.0.0.1 |
sse / streamable-http 监听地址 |
-p, --port |
MCP_REVERSE_PORT |
8000 |
sse / streamable-http 监听端口 |
--allowed-dir |
MCP_REVERSE_ALLOWED_DIRS |
不限制 | 允许加载二进制文件的根目录白名单(支持多次指定) |
--max-file-size-mb |
MCP_REVERSE_MAX_FILE_SIZE_MB |
100 |
单文件最大允许体积(MB),超出立即熔断 |
--max-sessions |
MCP_REVERSE_MAX_SESSIONS |
8 |
进程内 LRU 会话池最大驻留数量 |
--auth-token |
MCP_REVERSE_AUTH_TOKEN |
None |
远程 HTTP/SSE 模式可选 Bearer 鉴权令牌 |
--r2-path |
MCP_REVERSE_R2_PATH |
自动四级寻址 | 显式指定 radare2 / rizin 可执行文件路径 |
--objdump-path |
MCP_REVERSE_OBJDUMP_PATH |
自动四级寻址 | 显式指定 llvm-objdump / objdump 可执行文件路径 |
--floss-path |
MCP_REVERSE_FLOSS_PATH |
自动四级寻址 | 显式指定 floss 可执行文件路径 |
--log-level |
MCP_REVERSE_LOG_LEVEL |
INFO |
日志级别(DEBUG、INFO、WARNING、ERROR) |
🛠️ 本地开发与工程规范
# 1. 创建 Python 3.12 虚拟环境并同步依赖
uv venv --python 3.12
uv sync --all-extras --dev
# 2. 激活本地 Conventional Commits 提交守门钩子
git config core.hooksPath .githooks
# 3. 运行静态检查与单元测试
uv run ruff check .
uv run ruff format --check .
uv run pytest --cov=mcp_server_reverse
# 4. 规范化提交与发版演练
bash scripts/commit.sh
bash scripts/release.sh --dry-run
详细贡献流程、CI/CD 机制与安全披露策略请参阅:
📄 开源协议
本项目基于 Apache License 2.0 协议开源。
Metadata
Release files for atengk-mcp-server-reverse 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| atengk_mcp_server_reverse-1.0.0.tar.gz | 205.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| atengk_mcp_server_reverse-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 283.0 kB
Release files / atengk_mcp_server_reverse-1.0.0.tar.gz
| Download URL | atengk_mcp_server_reverse-1.0.0.tar.gz |
|---|---|
| Size | 205.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c1dd4cd9dc24bd3010e6ebc6b3a5ae827ba5d849c354e0e8defc027539118294
|
|
BLAKE2b-256 checksum How to use checksums |
9e5a115d01683a66bbd2f1a20bac5794e08b3bfd1e63e47753706adc655dc0e0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / atengk_mcp_server_reverse-1.0.0-py3-none-any.whl
| Download URL | atengk_mcp_server_reverse-1.0.0-py3-none-any.whl |
|---|---|
| Size | 77.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
95a8ef2c601e22d893e681596ff37aaaa5f0a6a29ed4509d0eff9bfb37fe2d5d
|
|
BLAKE2b-256 checksum How to use checksums |
906142a6050753d6d736b6e88cd317cf8b011994c069615ee8de5db1f502d0d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|