# Doldrums **Repository Path**: mark_mars/Doldrums ## Basic Information - **Project Name**: Doldrums - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-04 - **Last Updated**: 2025-03-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README *To flutter: to move in quick, irregular motions, to beat rapidly, to be agitated.* *Doldrums: a period of stagnation.* Doldrums is a reverse engineering tool for Flutter apps targetting Android. Concretely, it is a parser and information extractor for the Flutter/Dart Android binary, conventionally named `libapp.so`, for all Dart version 2.10 releases. When run, it outputs a full dump of all classes present in the isolate snapshot. The tool is currently in **beta**, and missing some deserialization routines and class information. If it does not work out-of-the-box, please let me know. ## Dependencies Doldrums requires [pyelftools](https://github.com/eliben/pyelftools) to parse the ELF format. You can install it with ``` pip3 install pyelftools ``` ## Usage To use, simply run the following command, substituting `libapp.so` for the appropriate binary, and `output` for the desired output file. Note that the verbose option only works for Dart snapshot v2.12. ``` python3 src/main.py [-v] libapp.so output ``` The expected output is a dump of all classes, in the following format: ``` class MyApp extends StatelessWidget { Widget build(DynamicType, DynamicType) { Code at absolute offset: 0xec85c } String myPrint(DynamicType, DynamicType) { Code at absolute offset: 0xeca80 } } ``` The absolute code offset indicates the offset into the `libapp.so` file where the native function may be found. ## Reading material For a detailed write-up on the format, please check my [blog post](https://rloura.wordpress.com/2020/12/04/reversing-flutter-for-android-wip/). ## Related works [darter](https://github.com/mildsunrise/darter) is a fully implemented and fully tested parser for Dart version 2.5 releases. ## Contribute If you'd like to help the project, consider making a pull request, or donating to * ADA: DdzFFzCqrhsgHAVMtnep9Uq9iF61oxZ31LWVG3izmT8BH54Jz7C2gUBFcy6VnCkrbVNqrkevQ4wSwK7dfh7YrUfvSd5toKdE9tzZrcaB * BTC: 33piC5kfTdqFyQ5ionmuJkTDJXsFYdzGdS * ETH: 0x2bF670503C28B551C80191aeE9F7ACC96e101D9B *** Logo by [Luis Fonseca](https://www.linkedin.com/in/luis-pedro-h-fonseca-4776a024/).