扑动:快速、不规则地移动;快速跳动;被搅动。
停滞期:一段停滞不前的时期。
Doldrums 是一款针对 Android 平台 Flutter 应用的逆向工程工具。具体来说,它是一个用于解析并提取 Flutter/Dart Android 二进制文件(通常名为 libapp.so)中信息的工具,支持所有 Dart 2.10 及以上版本。运行时,它会输出隔离快照中所有类的完整转储。
该工具目前处于 beta 阶段,缺少部分反序列化例程和类信息。如果无法直接使用,请告知。
Doldrums 需要 pyelftools 来解析 ELF 格式。可通过以下命令安装:
pip3 install pyelftools
使用方式很简单,运行以下命令,将 libapp.so 替换为实际二进制文件,将 output 替换为期望的输出文件名。注意,详细选项仅适用于 Dart snapshot v2.12。
python3 src/main.py [-v] libapp.so output
预期输出是所有类的转储,格式如下:
class MyApp extends StatelessWidget {
Widget build(DynamicType, DynamicType) {
Code at absolute offset: 0xec85c
}
String myPrint(DynamicType, DynamicType) {
Code at absolute offset: 0xeca80
}
}
绝对代码偏移量表示原生函数在 libapp.so 文件中的偏移位置。
如需详细了解该格式,请查看我的博客文章。
darter 是一个针对 Dart 2.5 版本的完整实现并经过全面测试的解析器。
如果您愿意帮助这个项目,请考虑提交 Pull Request,或向以下地址捐赠:
Logo 由 Luis Fonseca 设计。