Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
dexcalibur — [公式] Androidリバースエンジニアリングツール。Fridaを活用した動的インストゥルメンテーション自動化に重点を置いています。dexを逆アセンブルし、静的に解析し、フックを生成し、リフレクションメソッドを発見し、傍受したデータを保存し、そこから新しいことを行います。オールインワンのAndroidリバースエンジニアリングプラットフォームを目指しています。 | Kitploit
ツール/GitHubGitHub/reversenseorg/dexcalibur
Androidセキュリティ静的分析動的分析 (サンドボックス)リバースエンジニアリングデバッガファジングモバイルセキュリティバイナリ解析
GitHubreversenseorg/dexcalibur

dexcalibur

[公式] Androidリバースエンジニアリングツール。Fridaを活用した動的インストゥルメンテーション自動化に重点を置いています。dexを逆アセンブルし、静的に解析し、フックを生成し、リフレクションメソッドを発見し、傍受したデータを保存し、そこから新しいことを行います。オールインワンのAndroidリバースエンジニアリングプラットフォームを目指しています。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

WiP : データキャリバー2.0への移行中 | コードネーム : リバース

npm dependencies npm npm Docker Automated build Build Status Twitter Follow PRs Welcome Maintainability

Dexcalibur banner

データキャリバー

データキャリバーは、インストルメンテーションの自動化に焦点を当てたAndroidリバースエンジニアリングプラットフォームです。その特徴は、動的解析を使用して静的解析のヒューリスティクスを改善することです。動的インストルメンテーションに関連する退屈なタスクを自動化することを目的としています。例えば:

  • 実行時にインターセプトされたバイトコードの逆コンパイル/逆アセンブル
  • フックコードの作成と多数のフックメッセージの管理
  • フックする価値のあるパターン/対象の検索
  • フックによって収集されたデータ(DEXファイル、呼び出されたメソッド、クラスローダーなど)の処理
  • その他...

しかし、それだけではありません。データキャリバーは独自の静的解析エンジンを持ち、smaliの部分的な断片を実行することができます。

何か共有したいことや、助けが必要ですか? 公式チャットに参加してください:

Telegram - 最も迅速に回答を得られる方法

https://discord.gg/Pfw7Kc3dS

公式ドキュメントはこちらから入手できます こちら (ウェブサイト - 作業中).

最新ニュースはこちらをご覧ください:http://docs.dexcalibur.org/News.html

データキャリバーのデモ動画をご覧ください:デモ: 61のメソッドをフックするのに1分もかからない?問題ありません。(youtube)

データキャリバーをサポートするには?

貢献してください!

ためらわないでください! 貢献する方法はいくつかあります:

  • 修正や新機能に関するプルリクエストを作成する
  • ツールのパッチ適用や改善に役立つIssueを作成する
  • UIの開発を手伝う
  • フィードバックをメールで送る
  • などなど...

A. インストール

A.1 新規インストール

インストールドキュメントをご覧ください。

代替案:Dockerを使用する

  • ホスト上で adb をインストールします(適宜Androidエミュレーターも)
  • docker-compose build android-dexcalibur
  • docker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bash

A.2 データキャリバーの起動

LinuxおよびMacOSの場合

NPMインストール:データキャリバーがNPMを使用してグローバルにインストールされている場合(-gオプション)、ターミナルから $ dexcalibur で起動できます。それ以外の場合は、$ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js で起動できます。

ソースからのインストール:dexcalibur フォルダから、$ dexcalibur または $ node dexcalibur.js を実行します。

Windowsの場合

NPMインストール:データキャリバーがNPMを使用してグローバルにインストールされている場合でも(-gオプション)、ターミナルから以下のコマンドを実行して起動する必要があります:node <NPM_ROOT>/dexcalibur/dexcalibur.js。

ソースからのインストール:dexcalibur フォルダから、ターミナルで node dexcalibur.js コマンドを実行します。

A.3 アップデート

バージョン <= 0.6.x からの場合

以前のバージョンのデータキャリバーを使用していますか?

新規インストールと同じ手順に従い、ワークスペースパスを入力する際に、現在のワークスペースの場所を入力してください。

バージョン >= 0.7 からの場合

以下のコマンドを実行するだけです:

root@kitploit:~
$  npm install -g dexcalibur

既存の設定とワークスペースが自動的に検出されます。

C. スクリーンショット

以下のスクリーンショットは、実行時におけるxrefsの自動更新を示しています。

Xref auto update

Features

D. 機能と制限事項

現在の最大の制限は、データキャリバーがネイティブ関数(JNIライブラリ内)をターゲットとするフックのソースコードを生成できないことです。ただし、フックを編集することで手動でFridaのインターセプターを宣言することは可能です。

データキャリバーは現在、JNIライブラリやJNAなどのネイティブ部分を分析する機能を提供していないため、Java部分に関連する機能と制限のみを詳細に説明します。

分析の精度は、分析の初期段階で使用されるAndroid APIイメージの完全性に依存します。つまり、Android SDKのandroid.jarファイルから生成されたDEXファイルを使用する場合、Android Java APIの内部メソッド、フィールド、クラスへの参照が欠落する可能性があります。予想されるAndroidバージョンを実行している実際のデバイスから直接抽出された "boot.oat" ファイルから分析を開始すると、より良い結果が得られます。

D.1 機能

D.1.A 静的解析ツール

TODO : テキストを書く

D.1.B フックマネージャー

TODO : テキストを書く

D.1.C データキャリバーのSmali VM

追跡される動作

"Run smali (VM)" アクションに関与する静的解析ツールは、以下の動作を検出し、受け入れ、追跡することができます:

  • 範囲外の出力先レジスタ(v0 - v255 の範囲外のレジスタ)
  • 範囲外のソースレジスタ(v0 - v65535 の範囲外のレジスタ)
  • 暗黙的に内部例外をスローする不正な命令の検出
  • Android仕様に準拠していない有効なバイトコードの断片の検出
  • 未定義の配列の長さの計算
  • 未定義の配列の埋め込み
  • など...

実際には、そのような不正な命令に対するハンドラー/リスナーはサポートされていませんが、イベントは追跡され、表示されます。

データキャリバーIR

VMはカスタムで簡略化された中間表現(IR)を生成し、これはアナリストが分析を実行するのを助けるためにのみ表示されます。

コールスタックの深さと設定の値に応じて、IRには呼び出された関数内で実行された命令を含めることも含めないこともできます。実行がtryブロックに入り、リターンまで継続したがcatchを実行しなかった場合、catchブロックは表示されません。実際、データキャリバーIRの目的は、VMコンテキスト内で「実行されたもの」または「シンボルの値に応じて実行される可能性があるもの」のみを表示することです。

データキャリバーIRは、不要なgotoや不透明な述語を削除して、バイトコードのクリーンなバージョンを読み取るのに役立ちます。データキャリバーIRは、VMによって2つの簡略化レベルで生成できます。

第1レベルのIR(第2レベルのIRを信頼できない場合に使用可能):

  • CFGの簡略化なし:条件付きおよび無条件のジャンプが表示されます。
  • レジスタへのすべてのmoveが表示されます。

第2レベル:

  • レジスタが使用前に未知の値で変更されていない場合、代入を非表示にします。
  • 常にTRUE/FALSEの述語が削除されます。
  • 特定の条件下で、ターゲットの基本ブロックの先行者が1つだけの場合など、gotoなどの無条件ジャンプが削除されます。
  • 可能な場合、Method.invoke()呼び出しを呼び出されたメソッドに解決して置換します。
  • 例外がスローされる前に、Tryブロック内の命令は表示されません。
  • など...

Android APIモック

TODO

詳細

Smali VMは以下の手順に従います:

  1. VMの初期化:スタックメモリ、ヒープ、クラスローダー、メソッドエリアなど
  2. VMはメソッドを宣言するクラスをロードします。
  3. (オプション) クラスに静的ブロックがある場合、clinit() が実行されます。これにより、静的プロパティに格納されている具体的な値を解決するのに役立ちます。
  4. メソッドのメタデータをロードします。
  5. メソッドの命令を実行します。PseudoCodeMakerが有効な場合、データキャリバーIRが生成されます。

VMはinvoke-*命令をどのように処理しますか?

  1. invoke-*が発生すると、ローカルシンボルテーブルが保存され、呼び出されたメソッドがロードされます。
  2. 呼び出されたメソッドを宣言するクラスがまだロードされていない場合、クラスがロードされます。
  3. メソッドがまだロードされていない場合、メソッドが(MethodAreaによって)ロードされ、呼び出し元のシンボルテーブルから引数のシンボルをインポートしてローカルシンボルテーブルが初期化されます。
  4. 呼び出されたメソッドがコールスタック(StackMemory)にプッシュされます。
  5. メソッドの命令が実行されます。
  6. リターンがスタックメモリにプッシュされます。
  7. 呼び出し元が制御フローを取得します。

D.1.D アプリケーショントポロジーアナライザー

マニフェスト分析(制限あり)

最初の実行前に、アプリケーションのAndroidマニフェストが解析されます。現在、マニフェスト内の安全でない設定などの異常は実際にこのレベルで検出されます。

Androidマニフェスト解析の唯一の目的は、他の種類のアナライザーにデータを提供することです。

パーミッション分析

マニフェストから抽出されたすべてのパーミッションがリストされ、識別され、ターゲットのAndroid APIバージョンのAndroid仕様と比較されます。

データキャリバーは、一部の場合において、パーミッションの目的の説明、最小Android APIバージョンなどを提供します。

アクティビティ分析

プロバイダー分析

サービス分析

レシーバー分析

D.1.E ランタイムモニタリング(未実装)

ネットワークモニタリング

インテントモニタリング

ファイルアクセスモニタリング

D.1.F コラボレーション機能

マルチユーザーメニューが見つかりませんか?問題ありません。メニューはありませんが、最小限の共同作業が可能です。

データキャリバーはWebサーバーを実行します。そのため、複数の人がこのWebサーバーの同じネットワーク上にいて、ホストのファイアウォールが適切に設定されている場合、複数の人が同じデータキャリバーインスタンスで作業できます。

現在の制限事項は次のとおりです:

  • 認証なし: ネットワーク内の誰でもデータキャリバーインスタンスにリクエストを送信でき、検索エンジンを介してホストのRCEを実行できます。
  • 識別なし: 変更は追跡されないため、誰かがシンボルの名前を変更しても、誰が変更したかわかりません。同様に、特定のフックを作成したのが誰かを知ることもできません。
  • 単一デバイスのインストルメンテーション: 複数のデバイスがデータキャリバーのホストに接続されている場合でも、インストルメンテーション対象のデバイスを選択できますが、インストルメンテーションとフックメッセージは最後に選択されたデバイスにリンクされます。そのため、複数のデバイスに対して同時にインストルメンテーションを生成することはできません。

E. Github コントリビューター

コントリビューターの皆様に特別な感謝を捧げます:

  • ubamrein
  • jhscheer
  • eybisi
  • monperrus
  • cryptax

F. トラブルシューティング

F.1 データキャリバーが「インストールモード」で起動し続ける

詳細に入る前に:

  • インターネットに接続していることを確認してください:インストール中にApktoolとターゲットプラットフォームがダウンロードされます。
  • dexcalibur --reinstall コマンドで再インストールを試しましたか?試していなければ、試してください。

まず、グローバル設定が <user_directory>/.dexcalibur/ に保存されているか確認してください。

root@kitploit:~
$ ls -la ~/.dexcalibur      

total 8
drwxr-xr-x   3 test_user  staff    96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user  staff  2784 29 avr 11:47 ..
-rw-r--r--   1 test_user  staff   204 29 avr 11:41 config.json


$ cat ~/.dexcalibur/config.json 

{
    "workspace":"/Users/test_user/dexcaliburWS3",
    "registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
    "registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}

次に、データキャリバーワークスペースの構造が以下のようになっているか確認してください(/apiフォルダの内容は異なる場合があります)。

root@kitploit:~
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x  3 test_user  staff   96 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..
drwxr-xr-x  8 test_user  staff  256 29 avr 11:41 sdk_androidapi_29_google

/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x   4 test_user  staff       128 29 avr 11:41 .
drwxr-xr-x   7 test_user  staff       224 29 avr 11:41 ..
-rwxr-xr-x   1 test_user  staff  17661172 29 avr 11:41 apktool.jar
drwxr-xr-x  18 test_user  staff       576 29 avr 11:41 platform-tools

/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x  3 test_user  staff   96 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..
-rw-r--r--  1 test_user  staff  314 29 avr 11:41 config.json

/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x  2 test_user  staff   64 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..

/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x  2 test_user  staff   64 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..

G. FAQ

デバイスリストにデバイスが表示されない

USB経由で物理デバイスを使用している場合は、開発者モードとUSBデバッグが有効になっていることを確認してください。

仮想デバイスを使用している場合は、/splash.htmlにアクセスし、Device Managerを選択し、Connect over TCP ...をクリックして指示に従ってください。デバイスのIPアドレスがわからない場合は、automatic configuration チェックボックスをオンにしてデータキャリバーに検出させてください。

USBデバッグが有効になっているが、デバイスリストにデバイスが表示されない

  • USBを接続/切断し、コンピューターが許可されていることを確認してください。
  • ファイル転送を選択してください。

新しいデバイスを登録する理由は?

デバイスを使用する前に、ターゲットデバイスを登録する必要があります。 登録中に、データキャリバーはデバイスのメタデータを収集し、互換性のあるバージョンのFridaサーバーをプッシュします。

このようなメタデータは、適切なfrida-serverとfrida-gadgetのターゲットを選択するために使用されます。

デバイスがデバイスマネージャーにリストされているが、登録できない

デバイスリストの行に感嘆符 ! が表示されている場合、デスクトップがデバイスによって許可されていません。おそらく確認が必要です。

デバイスがデバイスマネージャーにリストされ、online列がチェックされている場合は、enrollをクリックしてください。

G.1 デバイスがデバイスマネージャーにリストされている

デバイスがデバイスマネージャーにリストされ、online列がチェックされている場合は、enrollをクリックしてください。

物理デバイスの代わりにエミュレーターを使用するには?

バージョン < v0.7 のデータキャリバーは、不完全なADB出力解析のため、エミュレートされたデバイスを自動的に検出して使用することができませんでした。

バージョン >= v0.7 以降では、仮想デバイスが実行されている状態で、/splash.htmlにアクセスするか、ナビゲーションバーのDEXCALIBURをクリックしてください。左メニューのDevice Managerボタンをクリックし、テーブルの上部にあるRefreshボタンをクリックします。

仮想デバイスのADB IDで始まる行が表示されるはずです。

TCP経由でデバイスを使用するには?

まず、他のターゲットデバイスと同様に、登録する必要があります。

Connect over TCP ...をクリックして、TCP経由で新しいデバイスを追加するか、登録済みのデバイスをTCP経由で接続します。

デバイスがこれまでに登録されたことがない場合、登録はTCP経由で行われます。 場合によっては、TCP経由の接続はUSB経由よりも遅くなります。そのため、登録に追加の時間がかかることがあります。

デバイスがUSB経由で登録されている場合、このデバイスの新しい優先トランスポートタイプはTCPになります。

データキャリバーに貢献するには?

このリポジトリにプルリクエストを作成するか、Issueを作成してください。

ドキュメントに貢献するには?

dexcalibur-doc リポジトリにプルリクエストを作成してください。

ドキュメントはこちら(ドキュメントウェブサイト)とこちら(wiki)で入手できます。

H. スポンサー

https://www.jetbrains.com/?from=dexcalibur
All Productsのライセンスを提供してくださいました <3

I. リソース

現在、データキャリバーに関するドキュメントやトレーニングリソースはほとんどありません。データキャリバーをCTFチャレンジの勝利や脆弱性の発見に使用した場合、ぜひ経験を共有することをお勧めします。

  • THCon 2020
  • SSTIC 2020
  • Pass the SALT 2019 のスライド (PDF)
  • Youtube : デモ
  • CLI ユーザーガイド
  • ユーザーガイド
  • トラブルシューティング
  • スクリーンショット

J. データキャリバーについて書かれた記事

  • Awesome Frida
  • Awesome OpenSource Security
  • n0secure.org - PassTheSalt2019 J2
  • rootshell.be - PassTheSalt2019 Wrap Up
  • PentesterLand - the 5 hacking newsletter 61
  • Technology Knowledge Database
  • Xuanwu Lab Security
  • Mobile Gitbook
  • 274 - AppsSec Ezine
  • ysh329 / Android Reverse Engineering
ツールをダウンロード