Dexcaliburは、Androidリバースエンジニアリングプラットフォームであり、楽器自動化に焦点を当てています。その特異性は、動的分析を使用して静的分析のヒューリスティックを改善することです。次のような動的な計装に関連する退屈なタスクを自動化することを目的としています。
何かを共有したいですか、それとも助けが必要ですか?公式チャットに参加してください:
Telegram-応答を与える最も迅速な方法
公式ドキュメントはこちらから入手できます(Webサイト - 進行中の作業)。
こちらの最新ニュースをご覧ください:http://docs.dexcalibur.org/news.html
Dexcaliburデモビデオを表示:デモ:61の方法をフックするのに1分未満ですか?問題ではありません。 (YouTube)
貢献する !
躊躇しないでください!貢献する方法はいくつかあります。
インストールドキュメントに移動します
代替:Dockerを使用します
adbをインストールします(および必要に応じてAndroidエミュレーター)docker-compose build android-dexcaliburdocker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bashLinuxとMacOSの場合
NPMインストール:DexcaliburがNPM( -gオプション)を使用してGlobalyをインストールしている場合、Dexcaliburは$ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js $ dexcaliburを実行してターミナルから起動できます。
ソースからインストール: dexcaliburフォルダーから、 $ dexcaliburまたは$ node dexcalibur.jsを実行します。
Windows用
NPMインストール:イベントDexcaliburがNPM( -gオプション)を使用してGlobalyをインストールしている場合、Dexcaliburは、端末node <NPM_ROOT>/dexcalibur/dexcalibur.jsから次のコマンドを実行して端末から起動する必要があります。
ソースからインストール: dexcaliburフォルダーから端子へ、コマンドnode dexcalibur.jsを実行します。
Dexcaliburの以前のバージョンを使用していますか?
新しいインストールと同じ手順に従って、ワークスペースパスを入力する場合は、現在のワークスペースの場所を入力します。
することによって:
$ npm install -g dexcalibur
既存の構成とワークスペースは自動的に検出されます。
次のスクリーンショットは、実行時にXREFの自動更新を示しています。
実際、最大の制限は、Dexcaliburがネイティブ機能をターゲットとするフックのソースコードを生成できないことです(JNIライブラリに)。ただし、フックを編集して、フリーダのインターセプターを手動で宣言できます。
DexcaliburがJNIライブラリやJNAなどのネイティブ部分を分析するための(現時点で)機能を提供しないと仮定すると、Java部品に関連する機能と制限のみが拘束されています。
分析の精度は、分析の初期段階で使用されるAndroid API画像の完全性に依存します。つまり、Android SDKからAndroid.jarファイルから生成されたDexファイルを使用すると、Android Java APIの内部メソッド、フィールド、またはクラスへのいくつかの参照が欠落している可能性があります。予想されるAndroidバージョンを実行している実際のデバイスから直接抽出された「boot.oat」ファイルから分析が開始されると、より良い結果が得られます。
TODO:テキストを書く
TODO:テキストを書く
追跡された動作
「Run Smali(VM)」アクションに関与する静的分析器は、次の動作を発見して受け入れることができますが、追跡することができます。
実際、このような無効な指示のハンドラー/リスナーはサポートされていませんが、イベントは追跡され、レンダリングされます。
Dexcalibur IR
VMは、アナリストが分析を実行するのに役立つためにのみ表示される、カスタムで簡素化された中間表現(IR)を生成します。
CallStackの深さと構成の値に応じて、IRは呼び出された関数に実行された命令を含めるか、命令を含めることができます。実行がトライブロックに入り、戻り続けているが、キャッチを獲得しない場合、キャッチブロックはレンダリングされません。実際、Dexcalibur IRの目的は、VMコンテキストに「何らかのシンボルの値に応じて実行できるもの」または「実行できるもの」のみをレンダリングすることです。
Dexcalibur IRは、役に立たないGOTOおよび不透明な述語を削除することにより、BytCodeのクリーンバージョンを読むのに役立ちます。 Dexcalibur IRは、2つの簡素化レベルでVMによって生成できます。
2番目のレベルIRを信頼しない場合、1番目のレベルIRを使用できます。
2レベル:
Android APIモック
トト
詳細
Smali VMはステップに従います。
VMはどのようにInvoke-*命令を処理しますか?
マニフェスト分析(限定)
最初の実行の前に、アプリケーションのAndroidマニフェストが解析されます。実際、このレベルでは、このような不安定な構成への異常が実際に検出されます。
Androidマニフェスト解析の唯一の目的は、他の種類の分析装置に入力することです。
許可分析
マニフェストから抽出されたすべてのアクセス許可は、ターゲットAndroid APIバージョンのAndroid仕様と比較され、識別され、識別されます。
Dexcaliburは提供します - 場合によってのみ - 許可目的の説明、最小限のAndroid APIバージョン、...
アクティビティ分析
プロバイダー分析
サービス分析
受信者分析
ネットワーク監視
意図監視
ファイルアクセス監視
マルチユーザーメニューが見つかりませんか?問題ではありません。メニューはありませんが、最小限の共同作業を達成できます。
DexcaliburはWebサーバーを実行します。したがって、複数の人がこのWebサーバーの同じネットワークにあり、ホストファイアウォールが適切に構成されている場合、同じDexcaliburインスタンスで作業するために数人になることができます。
実際の制限は次のとおりです。
貢献者に特別な感謝:
より深く行く前:
dexcalibur --reinstallコマンドを実行して再インストールしようとしましたか?いいえの場合は、試してみてください。まず、グローバル設定が<user_directory>/.dexcalibur/に保存されているかどうかを確認します
$ 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/"
}
次に、Dexcaliburワークスペースの構造が次のとおりであるかどうかを確認します( /apiフォルダーのコンテンツは異なる場合があります)。
$ 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 ..
USBに接続された物理デバイスを使用する場合は、 DevelopPerモードとUSBデバッグが有効になっていることを確認してください。
仮想デバイスを使用する場合は、 /splash.htmlに移動し、 Device Managerを選択し、 Connect over TCP ...をクリックし、指示に従ってください。デバイスのIPアドレスがわからない場合は、ボックスのautomatic configurationをチェックしてDexcaliburを検出させてください。
ターゲットデバイスを使用する前に、ターゲットデバイスを登録する必要があります。登録中、Dexcaliburはデバイスメタデータを収集し、Frida Serverの互換性のあるバージョンをプッシュします。
このようなメタデータは、正しいFrida-ServerおよびFrida-Gadgetのターゲットを選択するために使用されます。
赤い感嘆符の場合!デバイスリストへの行に表示され、デスクトップはデバイスで許可されません。おそらく確認する必要があります
デバイスがDeviceManagerにリストされ、 online列がチェックされている場合は、 enrollをクリックします
デバイスがDeviceManagerにリストされ、 online列がチェックされている場合は、 enrollをクリックします
Dexcaliburバージョン<V0.7は、自動エミュレートされたデバイスを検出できず、ADB出力の解析が不完全で使用されていました。
バージョン> = v0.7以降、仮想デバイスが実行されたら、 /splash.htmlに移動するか、 DEXCALIBURをナビゲーションバーにクリックします。 Device Managerボタンをクリックして左メニューをクリックし、配列の上部にあるRefreshボタンをクリックします。
仮想デバイスのADB IDから始まる行が必要です。
まず、ターゲットデバイスとして、登録する必要があります。
Connect over TCP ... TCPを介して新しいデバイスを追加するか、登録されたデバイスをTCPに接続します。
デバイスが登録されていない場合、登録はTCPを介して実行されます。場合によっては、TCPを介した接続はUSBを超えるよりも遅くなります。したがって、登録には追加の時間がかかる場合があります。
デバイスがUSBに登録されている場合、このデバイスの新しい優先輸送タイプはTCPになります。
このリポジトリにプルリクエストを作成するか、問題を作成します。
Dexcalibur-Docリポジトリにプルリクエストを作成します。
ドキュメントはこちら(Doc Webサイト)とここ(wiki)で入手できます
![]() |
|---|
| 彼らはすべての製品<3にライセンスを提供しました |
実際、Dexcaliburに関するドキュメントとトレーニングのリソースはほとんどありません。 Dexcaliburを使用してCTFチャレンジを獲得したり、脆弱性を見つけたりする場合は、経験を共有することを強くお勧めします。