Heretek-RE/re-lief
GitHub: Heretek-RE/re-lief
一个通过 MCP 协议暴露 LIEF 能力的跨格式二进制分析服务器,无需安装任何系统工具即可解析 PE、ELF、MachO、DEX 等多种可执行文件格式。
Stars: 0 | Forks: 0
# re-lief
提供用于跨格式二进制分析的 [LIEF](https://lief-project.github.io/)(Library to Instrument Executable Formats)的 MCP server。通过单一、标准化的 API 处理 **PE, ELF, MachO, COFF, DEX, ART, OAT** 格式。
## 为什么使用它
LIEF 是 `pefile` 的 Python 继任者 —— 包含相同的 PE 数据,并增加了对 ELF, MachO, DEX, ART 和 OAT 的支持。它还处理 DWARF/PDB 调试信息、ObjC 元数据、Dyld Shared Cache,并且(可选地)内置了反汇编器/汇编器。
该 server 是 RE-AI 插件的**基础**:它无需安装任何系统工具即可工作(不需要 rizin,不需要 gdb,不需要任何东西),是纯 Python 实现,并在进程内运行。
## 工具
| 工具 | 功能描述 |
|---|---|
| `check_lief` | 健康检查 — 返回 LIEF 版本、支持的格式 |
| `parse_binary` | 自动检测格式并返回标准化的 header + 高级结构 |
| `get_sections` | 节区列表,包含权限 (R/W/X)、虚拟大小与原始大小对比、熵值 |
| `get_imports_exports` | 符号级别的导入/导出表(按格式区分) |
| `get_authenticode` | PE 签名详情 (Win) |
| `get_overlay` | 追加在最后一个节区之后的数据 |
| `list_dex_classes` | Android DEX 类列表 |
| `list_dex_methods` | DEX 类的方法列表 |
| `list_oat_art` | Android OAT/ART 方法列表 |
| `disasm_capstone` | Capstone 反汇编(适用于任何 LIEF 解析的二进制文件) |
| `extract_strings` | 具备节区感知能力的 ASCII + UTF-16LE 字符串提取 |
| `categorize_strings` | 具备节区感知能力的 ASCII + UTF-16LE 字符串提取,根据 `data/drm-indicators.yaml::string_categories` 中的关键字类别进行分桶。它是 `extract_strings` 的超集。 |
| `get_imphash` | PE 导入哈希(标准化导入表的 MD5) |
| `normalize_for_diff` | 生成适合用于对比两个二进制文件的结构化快照 |
## 安装
该 server 是 RE-AI 插件的一部分。插件的 `install.sh` / `install.bat` 会在标准流程中将其一并安装。
如需独立安装:
```
pip install -e ./servers/re-lief
```
## 运行
```
re-lief # stdio transport (default for MCP)
python -m re_lief # equivalent
```
## 格式支持
LIEF 会自动检测格式并提供一个通用 API。大多数工具会根据格式返回对应的结果:
- **PE** (`.exe`, `.dll`, `.sys`):完整的节区、导入/导出、imphash、Authenticode、资源、异常、TLS、调试信息 (PDB 路径)
- **ELF**(Linux 二进制文件、.so、内核模块):节区、段(program headers)、动态符号、RELRO、BIND_NOW、NX、PIE、RPATH/RUNPATH、SONAME、动态库
- **MachO**(macOS/iOS 二进制文件、.dylib、frameworks):加载命令、段、LC_BUILD_VERSION、代码签名、dyld 信息、ObjC 元数据
- **DEX**(Android Dalvik):带有 FQN 的类列表、每个类的方法列表、字符串池
- **OAT/ART**(Android runtime):带有类/方法索引的方法列表、vdex 引用
- **COFF**(Windows 对象文件、EFI):节区、符号、重定位
## pefile 的弃用
如果你熟悉 v1 版本的 `re-ai` repo,该 server **取代**了以前基于 pefile 的代码。字符串提取算法(ASCII + UTF-16LE)和 imphash 逻辑是从 `backend/analysis/native.py` 移植过来的;API 的其余部分是 LIEF 原生的,并且适用于所有格式。
## 分类词汇表
`categorize_strings` 在 MCP server 加载时,从
`data/drm-indicators.yaml::string_categories` 读取其 11 个关键字类别。
`anti_debug` 和 `hwid` 类别通过 `seed_from:` YAML 指针**继承**了它们的关键字列表,分别来自于
`drm-indicators.yaml::anti_debug_indicators.checks[].name` 以及
`hwid_apis.high_signal[].api` ——
当未来的 agent 向 `hwid_apis.high_signal` 添加新的 HWID API 时,
分类器会在下次重新加载时自动获取它。其他
9 个类别的关键字列表直接内联在 YAML 的
`string_categories.categories[].keywords` 下。
这使得分类器与目录 *幂等*:该
YAML 既是 `re-drm-fingerprint` 读取的指示器集合的单一事实来源,
也是分类器读取的关键字集合的单一事实来源。静态分析和字符串分析
都将给出一致的答案。
在处理大型二进制文件(>100 MB,例如由加密的 VM 字节码解释器包装的 Unity IL2CPP `GameAssembly.dll`)时,请传入
`skip_sections=[".idata", ".xtls", ".xpdata", ".udata", ".xdata",
".didata", ".ecode", ".00cfg"]` 来跳过加密的 VM
字节码区域。注意:在内置的 IL2CPP 目标样本上,
导入表字符串*存在*于这些节区中,
因此跳过它们会使分类器无法看到导入内容。在内存受限的运行环境中使用
`skip_sections`;若要保证完整性,请执行全节区遍历。
标签:LIEF, MCP服务器, Python, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 无后门, 逆向工具, 逆向工程, 静态分析