# SMDA 递归反汇编库

> 基于 Capstone 的 Python 递归反汇编库，借助 x86/x64、AArch64、32 位 ARM/Thumb、CIL 和 Dalvik 后端，从 PE、ELF、Mach-O 文件、.NET 程序集、原始 DEX 文件以及已知基址的内存转储中恢复控制流图。其 JSON 报告列出函数、基本块、指令及其间的边，并补充来自导入表、导出表、PDB、Go、Rust 与 Delphi 元数据的符号、被引用的字符串、用 ApiScout 方法推断的 Windows API 引用以及位置无关代码哈希。函数发现有意以完整性优先于精确性；README 称 SMDA 是 capa 的反汇编后端和 MCRIT 的代码分析层，IDA Pro 或 Binary Ninja 的分析结果也可导出为同一报告格式。

- 类型：工具
- 目标：二进制
- 类别：二进制分析库
- 关联：基础工具
- 来源复核于：2026-10-27
- 收录于：2026-11-03
- 原始资源：<https://github.com/danielplohmann/smda>
- 一手来源：<https://github.com/danielplohmann/smda/blob/04652e6662fde57d146a14d80399e2c1d128e26b/README.md>
- 目录页面：<https://awesomerea.org/zh/resources/smda/>
- 记录 JSON：<https://awesomerea.org/resources/smda/record.json>
- 英文版：[English](https://awesomerea.org/resources/smda/index.md)

## 使用条件与局限

- 审阅对象为 2026-10-20 的 v5.0.1 发布提交，它也是 GitHub 和 PyPI 上的最新版本；2026-10-16 的 v5.0.0 新增了 32 位 ARM 后端。CHANGELOG 说明版本号只是发布计数，并非语义化版本；pyproject.toml 将该包标为 Beta。
- pip install smda 需要 Python 3.11+，并会安装 5.0.2 及以上但低于 6 的 capstone、demangle 0.6.0、dncil、dnfile、LIEF 0.16+ 和 purepdb。CI 在 Ubuntu 上用 Python 3.11 至 3.14、在 Windows 和 macOS 上用 3.11 运行测试。analyze.py、batch_analyze.py 和导出脚本不会随 pip 安装，需要克隆仓库；IDA 前端需要 IDA Pro 8.4+，无界面 IDA 导出需要 IDA 9.1+ 及可选的 ida-domain 包，Binary Ninja 导出则需要可导入其 Python API 的正版 Binary Ninja。
- README 将 intel 后端评为生产级并已与其他反汇编器对比测试，称 AArch64 在其测试语料上与 IDA 的结果非常接近，ARM、CIL 和 Dalvik 后端则较新；两个托管代码后端未在混淆代码上做过基准测试，报告的是文件偏移而非虚拟地址。Dalvik 只接受原始的单个 DEX 文件，不支持 APK、多 DEX、ODEX 或 CDEX；大端 ARM32、MIPS、PowerPC、SPARC、RISC-V 等可识别的机器类型没有对应后端。二进制文件、内存转储以及 IDA 或 Binary Ninja 数据库均由分析者提供；分析无文件头的转储时应传入架构和基址，ApiScout 解析需要与被转储系统相符的 WinAPI 配置文件，data/ 目录附带 Windows 7 SP1 和 Windows XP SP3 的配置文件。默认分析预算为 300 秒，以协作方式执行，超时的报告只是下限；根据报告合成二进制文件的功能仍属实验性质。
- 测试使用在内存中解码的 XOR 编码二进制文件：为项目构建的程序、一个类均为 Apache HttpClient 代码的 DEX 文件（blockblast_classes_xored），以及恶意软件样本，包括 12 种架构的 Mirai 构建、Asprox、Cutwail、Bashlite、Komplex 和 njRAT，另有 tests/aarch64_macho_corpus 下来自 Objective-See 和 Malpedia 的 AArch64 Mach-O 恶意软件，其 README 禁止执行这些样本。CI 基准测试还使用 .github/workflows/data/malpedia.zip，这是一个 74 MB、带密码保护的 Malpedia 语料包，密码保存在仓库机密中，因此 AGENTS.md 说明该基准无法在本地复现。
- 采用 BSD-2-Clause 许可（LICENSE）；NOTICE 列出第三方部分，包括以 MIT 许可、源自 rust_demangler 的代码，以及取自 LLVM 符号还原测试、以 Apache-2.0 加 LLVM 例外许可的 MSVC 符号名。AGENTS.md 为参与开发的 AI 编程代理提供指引。

## 一手来源

1. <https://github.com/danielplohmann/smda/blob/04652e6662fde57d146a14d80399e2c1d128e26b/README.md>
2. <https://github.com/danielplohmann/smda/blob/04652e6662fde57d146a14d80399e2c1d128e26b/README.md#L170-L199>
3. <https://github.com/danielplohmann/smda/blob/04652e6662fde57d146a14d80399e2c1d128e26b/pyproject.toml>
4. <https://github.com/danielplohmann/smda/blob/04652e6662fde57d146a14d80399e2c1d128e26b/CHANGELOG.md>
5. <https://github.com/danielplohmann/smda/blob/04652e6662fde57d146a14d80399e2c1d128e26b/.github/workflows/ci.yml>
6. <https://github.com/danielplohmann/smda/blob/04652e6662fde57d146a14d80399e2c1d128e26b/.github/workflows/perf_benchmark.yml>
7. <https://github.com/danielplohmann/smda/blob/04652e6662fde57d146a14d80399e2c1d128e26b/AGENTS.md>
8. <https://github.com/danielplohmann/smda/blob/04652e6662fde57d146a14d80399e2c1d128e26b/tests/aarch64_macho_corpus/README.md>
9. <https://github.com/danielplohmann/smda/tree/04652e6662fde57d146a14d80399e2c1d128e26b/tests>
10. <https://github.com/danielplohmann/smda/tree/04652e6662fde57d146a14d80399e2c1d128e26b/data>
11. <https://github.com/danielplohmann/smda/blob/04652e6662fde57d146a14d80399e2c1d128e26b/LICENSE>
12. <https://github.com/danielplohmann/smda/blob/04652e6662fde57d146a14d80399e2c1d128e26b/NOTICE>
13. <https://github.com/danielplohmann/smda/releases/tag/v5.0.1>
14. <https://pypi.org/project/smda/5.0.1/>

## 同分区更多条目：原生二进制

- [frida-trace（NowSecure 声明式跟踪库）](https://awesomerea.org/zh/resources/nowsecure-frida-trace/index.md) · 工具
- [BTD（Bin To DNN）DNN 可执行文件反编译器](https://awesomerea.org/zh/resources/btd-dnn-decompiler/index.md) · 工具
- [Boomerang 机器码反编译器](https://awesomerea.org/zh/resources/boomerang-decompiler/index.md) · 工具
- [ktool Mach-O 与 Objective-C 分析工具包](https://awesomerea.org/zh/resources/ktool/index.md) · 工具
- [Brida Burp Suite 与 Frida 桥接扩展](https://awesomerea.org/zh/resources/brida/index.md) · 工具
- [Qu1cksc0pe 恶意软件分析工具](https://awesomerea.org/zh/resources/qu1cksc0pe/index.md) · 工具

## 关于此条目

说明已依据一手来源复核。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
