Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
reFlutter — Flutterエンジンライブラリにパッチを適用し、ルートや証明書のインストールなしでAndroidおよびiOSアプリのランタイムリバースエンジニアリング、トラフィック傍受、SSLピンバイパスを可能にします。 | Kitploit
ツール/GitHubGitHub/impact-i/reflutter
Androidセキュリティ動的分析 (サンドボックス)iOSセキュリティリバースエンジニアリングペネトレーションテストモバイルセキュリティ
GitHubimpact-i/reflutter

reFlutter

Flutterエンジンライブラリにパッチを適用し、ルートや証明書のインストールなしでAndroidおよびiOSアプリのランタイムリバースエンジニアリング、トラフィック傍受、SSLピンバイパスを可能にします。

リポジトリを見る
2.7k293296日前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

stars

ブログで詳しく読む: https://swarm.ptsecurity.com/fork-bomb-for-flutter/

このフレームワークは、すでにコンパイル済みでアプリの再パッケージングに対応したパッチ適用版 Flutter ライブラリを使用して、Flutter アプリのリバースエンジニアリングを支援します。このライブラリはスナップショットのデシリアライズ処理が変更されており、動的解析を便利な方法で実行できます。

主な機能:

  • socket.cc はトラフィックの監視と傍受のためにパッチが適用されています;
  • dart.cc はクラス、関数、一部のフィールドを出力するように変更されています;
  • 関数の絶対コードオフセットを表示します;
  • コンパイルを成功させるための軽微な変更が含まれています;
  • 独自のパッチを実装したい場合、特別に作成された Dockerfile を使用して手動での Flutter コード変更がサポートされています。

対応エンジン

  • Android: arm64, arm32;
  • iOS: arm64;
  • リリース: Stable, Beta

インストール

# Linux, Windows, MacOS
pip3 install reflutter==0.8.6

使用方法

impact@f:~$ reflutter main.apk

Please enter your Burp Suite IP: <input_ip>

SnapshotHash: 8ee4ef7a67df9845fba331734198a953
The resulting apk file: ./release.RE.apk
Please sign the apk file

impact@f:~$ reflutter main.ipa

オプション:

  • -p, --patch-dump — ダンプモード: 起動時に dump.dart (クラス/メソッド/オフセット) を出力するようにエンジンにパッチを適用し、プロキシの手順の代わりに frida.js のヒントを表示します。
  • -n, --no-interact — Burp IP の入力を一切求めません (127.0.0.1 を暗黙的に使用); CI での古いエンジンに便利です。
  • -b <Snapshot_Hash>, --build-engine — エンジンビルドモード: スナップショットハッシュに対応するエンジンコミットを表示し、(flutter/flutter チェックアウト内で実行した場合) reFlutter のソースパッチを適用します。scripts/local-release を参照してください。

トラフィックの傍受

Flutter アプリケーションを実行しているデバイスと同じネットワーク上にある Burp Suite プロキシサーバーの IP を指定する必要があります。次に BurpSuite -> Listener Proxy -> Options tab でプロキシを設定します:

  • ポートを追加: 8083
  • バインド先アドレス: All interfaces
  • リクエスト処理: Support invisible proxying = True

Android では証明書のインストールや root 権限は不要です。reFlutter は Flutter の証明書ピンニング実装の一部をバイパスすることもできます。

⚠️ 注意: Flutter 3.24.x (スナップショットハッシュ 80a49c7111088100a233b2ae788e1f48) までのエンジンは、ハードコードされたプロキシ IP を依然として保持しており、その場でパッチが適用されます。3.27.x 以降ではハードコードされた IP は削除されているため、代わりにデバイス上で直接プロキシを設定してください。

Android の場合

ADB を使用してデバイスのプロキシを設定します:

adb -s <device> shell "settings put global http_proxy <proxy_ip:port>"

APK に署名、アライメント、インストールします。オプションで TunProxy を設定してトラフィックを Burp Suite 経由でルーティングします。

iOS の場合

IPA に署名してインストールします。Potatso を設定して Burp Suite プロキシサーバーを使用します。

Android での使用方法

生成された apk はアライメントと署名を行う必要があります。推奨ツールは uber-apk-signer です:

java -jar uber-apk-signer.jar --allowResign -a release.RE.apk

デバイスでアプリを実行します。バイナリ検索で _kDartIsolateSnapshotInstructions を特定します。reFlutter はダンプファイルをアプリのルートフォルダに書き込み、777 パーミッションを設定します。次のコマンドで取得します:

adb -d shell "cat /data/data/<PACKAGE_NAME>/dump.dart" > dump.dart
ファイルの内容
Library:'package:anyapp/navigation/DeepLinkImpl.dart' Class: Navigation extends Object {
String* DeepUrl = anyapp://evil.com/ ;
...

iOS での使用方法

reflutter main.ipa を実行した後、デバイスでアプリを実行します。ダンプファイルのパスは Xcode コンソールログに出力されます:

Current working dir: /private/var/mobile/Containers/Data/Application/<UUID>/dump.dart

デバイスからファイルを取得します。

Frida

frida-tools==13.7.1
frida==16.7.19

Frida スクリプト でダンプオフセットを使用します:

frida -U -f <package> -l frida.js

_kDartIsolateSnapshotInstructions を見つけるには:

readelf -Ws libapp.so

Value フィールドを探します。

To Do

  • 関数の絶対コードオフセットを表示する;
  • より多くの文字列とフィールドを抽出する;
  • socket パッチを追加する;
  • Fork と Github Actions を使用してエンジンサポートを Debug に拡張する;
  • zip アーカイブ内の App.framework と libapp.so の検出を改善する

エンジンのビルド

エンジンは enginehash.csv のデータに基づき、scripts/local-release (macOS; iOS および Android arm64/arm/x64 用の v2 + v3 をビルドし、すべてのパッチが適用されたことを検証し、リリースアセットをアップロードします) でビルドされます。スナップショットハッシュに対応するエンジンコミットは reflutter -b <Snapshot_Hash> で解決されます。スナップショットハッシュは次から取得します:

https://storage.googleapis.com/flutter_infra_release/flutter/<hash>/android-arm64-release/linux-x64.zip
リリース

gif

カスタムビルド

Docker を使用して手動での Flutter コードパッチ適用がサポートされています:

git clone https://github.com/Impact-I/reFlutter && cd reFlutter
docker build -t reflutter -f Dockerfile .

次のコマンドで実行します:

docker run -it -v "$(pwd):/t" -e HASH_PATCH=<Snapshot_Hash> -e COMMIT=<Engine_commit> reflutter

例:

docker run -it -v "$(pwd):/t" -e HASH_PATCH=aa64af18e7d086041ac127cc4bc50c5e -e COMMIT=d44b5a94c976fbb65815374f61ab5392a220b084 reflutter

例: Android ARM64 のビルド (Linux/Windows)

docker run -e WAIT=300 -e x64=0 -e arm=0 -e HASH_PATCH=<Snapshot_Hash> -e COMMIT=<Engine_commit> --rm -iv${PWD}:/t reflutter

フラグ:

  • -e x64=0: x64 ビルドを無効化
  • -e arm64=0: arm64 ビルドを無効化
  • -e arm=0: arm32 ビルドを無効化
  • -e WAIT=300: ビルド前にソースを変更する時間 (秒)
  • -e HASH_PATCH: enginehash.csv のスナップショットハッシュ
  • -e COMMIT: エンジンコミットハッシュ

ツールをダウンロード