# darter Dart 快照解析器

> 用于解析二进制 Dart VM 快照（例如 Flutter 发布版应用中的 libapp.so）的 Python 模块，可把快照内容还原为带反向引用、便于浏览的 VM 对象图，连同快照中转储的内存结构一并解析。它支持旧式、AppJIT 和 AppAOT 三类快照，通常能从快照本身自动识别编译标志和设置，可从 app.so 或 .snapshot 文件中自动提取快照数据块；其 darter.asm 模块借助 Capstone 反汇编 ARM 和 ARM64 代码，查找其中对 VM 对象的引用。README 列举的用法包括提取应用的字符串表、查找某个对象在何处被使用、生成调用图和库依赖图、为 Radare2 导出元数据，以及与参考快照比对来对快照去混淆。

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

## 使用条件与局限

- README 警告该项目已经过时，由较新版本 Dart 或 Flutter 生成的快照很可能无法正确解析。解析器依据 Dart SDK 提交 1ef83b86ae 编写，info/versions.md 称唯一受支持的快照哈希为 c8562f0ee0ebc38ba217c7955956d1cb，其 Flutter 版本表显示它对应 2019 年发布的 v1.9.1+hotfix.2 至 v1.9.1+hotfix.6。解析器代码最后一次修改是在 2021 年；所审阅的 2026-02-03 master 提交只扩充了该版本表（现已列到 Flutter 3.38.9），仓库也没有发行版或标签。
- darter 是一个库，没有独立程序或命令行界面；README 推荐在 Jupyter 中使用，先看 1-introduction，再看 2-playground 两个笔记本。大部分代码没有外部依赖，但 parse_elf_snapshot 需要 pyelftools，darter.asm 需要 Capstone 及其 Python 绑定；仓库未注明 Python 版本，也没有软件包元数据。
- README 称只在 ARM 和 ARM64 的 AppAOT 产品快照上做过大量测试，在 x64 的 AppJIT 发布快照上做过少量测试，反汇编分析也只支持 ARM 和 ARM64。不支持 .dill 等 Kernel AST 快照。README 建议先用自己构建的快照练习，再分析其他快照；要研究的 libapp.so 或快照需由用户自备。
- samples/ 目录提交了 arm-app.so 和 arm64-app.so，入门笔记本称它们是默认 Flutter 应用的构建产物；笔记本中用于演示 AppJIT 输入的 samples/appjit.snapshot 并未提交。utils/ 目录提供 Radare2 元数据生成器和导入文件生成器，以及一个 Node 脚本：它通过本地 HTTPS 代理模拟过去某一日期的 pub 包仓库，为此使用仓库中提交的自签名 CA 以及 pub.dartlang.org 证书和私钥，该证书已于 2022 年过期。
- 采用 AGPL-3.0 许可。

## 一手来源

1. <https://github.com/mildsunrise/darter/blob/a6498786ed0f96b2b70635f008fee62dc07796da/README.md>
2. <https://github.com/mildsunrise/darter/blob/a6498786ed0f96b2b70635f008fee62dc07796da/info/versions.md>
3. <https://github.com/mildsunrise/darter/blob/a6498786ed0f96b2b70635f008fee62dc07796da/1-introduction.ipynb>
4. <https://github.com/mildsunrise/darter/blob/a6498786ed0f96b2b70635f008fee62dc07796da/2-playground.ipynb>
5. <https://github.com/mildsunrise/darter/blob/a6498786ed0f96b2b70635f008fee62dc07796da/darter/file.py>
6. <https://github.com/mildsunrise/darter/tree/a6498786ed0f96b2b70635f008fee62dc07796da/samples>
7. <https://github.com/mildsunrise/darter/blob/a6498786ed0f96b2b70635f008fee62dc07796da/utils/timemachine_pub.js>
8. <https://github.com/mildsunrise/darter/blob/a6498786ed0f96b2b70635f008fee62dc07796da/LICENSE>

## 同分区更多条目：应用

- [Appshark Android 静态污点分析引擎](https://awesomerea.org/zh/resources/appshark/index.md) · 工具
- [Wallbreaker Java 堆查看工具](https://awesomerea.org/zh/resources/wallbreaker/index.md) · 工具
- [axmlprinter Android 二进制 XML 解析器](https://awesomerea.org/zh/resources/axmlprinter/index.md) · 工具
- [FlowDroid Android 静态污点分析工具](https://awesomerea.org/zh/resources/flowdroid/index.md) · 工具
- [Enjarify Dalvik 转 Java 字节码工具](https://awesomerea.org/zh/resources/enjarify/index.md) · 工具
- [MagiskFrida 开机自启 frida-server 的 root 模块](https://awesomerea.org/zh/resources/magisk-frida/index.md) · 工具

## 关于此条目

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