
Flutter/Dart リバースエンジニアリングツール
flutter: 素早く不規則に動くこと、激しく鼓動すること、動揺すること。
Doldrums: 停滞期。
Doldrumsは、Android向けFlutterアプリのリバースエンジニアリングツールです。具体的には、Dartバージョン2.10リリース向けのFlutter/Dart Androidバイナリ(通常libapp.soという名前)のパーサーおよび情報抽出ツールです。実行すると、アイソレートスナップショット内のすべてのクラスの完全なダンプを出力します。
このツールは現在ベータ版であり、一部のデシリアライズルーチンやクラス情報が欠けています。もしそのまま動作しない場合は、お知らせください。
Doldrumsは、ELF形式を解析するためにpyelftoolsを必要とします。以下のコマンドでインストールできます。
pip3 install pyelftools
使用するには、以下のコマンドを実行してください。libapp.soを適切なバイナリに、outputを希望の出力ファイルに置き換えてください。なお、verboseオプションはDartスナップショット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リリース向けの完全に実装およびテストされたパーサーです。
プロジェクトに貢献したい場合は、プルリクエストを送るか、以下のアドレスに寄付を検討してください。
ロゴ作成: Luis Fonseca