Dart 检查
域名:dart-inspector
从 Flutter AOT libapp.so 中抽取并分类字符串、还原 Smi 整数常量,并使用开发者提供的混淆映射反查原始符号。
Profile
- full
典型场景
- Flutter 应用逆向
- libapp.so 字符串审计
- Smi 整数常量恢复
- 混淆符号反查(obfuscation-map.json)
常见组合
- dart-inspector + binary-instrument
- dart-inspector + adb-bridge
工具清单(12)
| 工具 | 说明 |
|---|---|
dart_strings_extract | 从 Dart AOT libapp.so 流式提取 ASCII/UTF-16LE 字符串并分类(URL、路径、类名、package 引用、加密关键词,支持自定义规则),带 ReDoS 防护。 |
dart_smi_scan | 从 libapp.so 读取对齐的小端序字读取并剥离堆指针标记位,恢复 Dart 小整数(Smi)常量。 |
dart_symbolize | 使用开发者提供的 Flutter --save-obfuscation-map JSON(支持 flat/pairs/object 格式)解析混淆的 Dart 标识符。 |
flutter_packages_detect | 检测 Flutter libapp.so 中引用的第三方 Dart package:,已过滤 SDK 标准库并聚合。 |
dart_snapshot_header_parse | 只读解析 libapp.so 中的 Dart isolate snapshot 头:魔数、类型、32 字节哈希、特性标志、目标架构。 |
dart_version_fingerprint | 通过解析 snapshot 头并结合内置(及可选的用户提供)哈希表,识别 libapp.so 的 Flutter/Dart SDK 版本。 |
dart_object_pool_dump | 只读静态转储 libapp.so 中的 Dart isolate ObjectPool:分类每个槽位为 smi/mint/double/string/classRef/functionRef/pool/null/unknown。 |
dart_load_snapshot | 从 libapp.so 加载并解析 Dart AOT snapshot,提取元数据和统计信息(Code 对象、ObjectPool 条目、clusters)。 |
dart_list_functions | 列出已加载 snapshot 中的所有 Dart Code 对象(编译后的函数),包含入口地址、大小和函数名(如果可用)。 |
dart_call_function | 在 ARM64 仿真器中按地址或名称执行 Dart 函数,带简化运行时(模拟 built-ins、标记指针)。 |
dart_inspect_object_pool | 转储指定地址的 ObjectPool,显示所有条目的类型和值。 |
dart_trace_execution | 逐步跟踪 Dart 函数执行,输出每条指令及寄存器状态(PC、x0-x30、PP、THR)。 |