####注意:機能文字列は非常に重要です。 それは堅くなるサービスの進化と共に変わるかもしれない。 それが正しくない場合、開梱プロセスをトリガーできません。 DexHunterは、ファイルを操作するために”fwrite”やその他のlibc関数を活用しています。 しかし、これらの機能は、プロセスのクラッシュをもたらすサービスを強化するこ その結果、提供されたイメージを利用して最新のhardedningサービスを解凍することはできません。 いということだったの置き換えこれらの機能を直接システム呼び出しは避ける。,
DexHunterは、硬化したdexファイルを自動的に開梱することを目的としています。
DexHunterはAndroidランタイムのソースコードに基づいています。 それは修正されたARTとDVMランタイムで構成されています。 利用できるの実行時に置き換えオリジナルのコンテンツをスケーラビリティのソースコード(Android4.4.3). 変更は主に”art/runtime/class_linker.cc”(ART)および”dalvik/vm/native/dalvik_system_DexFile”にあります。cpp”(DVM)。
###使用法:
アプリを解凍する場合は、アプリを起動する前に、モバイルで”dexname”ファイルを”/data/”にプッシュする必要があります。, “Dexname”の最初の行は機能文字列です(”slide.”)となっている。 次の行は、ターゲットアプリのデータパスです(例:”/data/data/com。テスト。テスト/”)。 その行末はUnix/Linuxのスタイルでなければなりません。 “Logcat”を使用してログを観察して、開梱手順が完了したかどうかを判断できます。 完了すると、生成された”全体。dex”ファイルは、アプリのデータディレクトリにある望ましい結果です。
###Tips:
-
DexHunterは、効率のために解析するのではなく、”class_def”セクションの前のコンテンツを再利用するだけです。, いくつかの問題がある場合は、それらを解析して再組み立てるか、静的に修正することができます。
-
一部の”annotation_off”または”debug_info_off”フィールドが結果で無効になる可能性があることに注意してください。 これらのファイルは、逆コンパイルを妨げるだけの実行とは関係ありません。 私たちは現時点ではこのような状況には特に対処していません。 いくつかのスクリプトをプログラムして、無効なfiledsを0x00000000で設定するだけです。,
-
知られているように、一部の強化サービスは、実行直前に命令を復元し、終了直後に命令を消去することによって、dexファイル内のいくつかのメソッドを保護することができます。 したがって、実行中に保護された命令を抽出するには、”DoInvoke”(ART)または”dvmMterp_invokeMethod”(DVM)関数を変更する必要もあります。
4)機能文字列は、強化サービスの進化に伴って変更される可能性があります。
5)”fwrite”やその他のlibc関数が失敗した場合、これらの関数はサービスを強化することによって引っ掛かる可能性があります。, その結果、それらを介してメモリをダンプすることはできませ できるバイパスこの制限を呼び出し関連するシステム呼び出します。
DexHunterには独自の制限があります。 硬化サービスが発展するにつれて、DexHunterは将来有効ではないかもしれません。 ご興味のある方は、お気軽にお問い合わせくださいませ。
###ファイルの説明:
“demo.mp4″は、Aliによる強化されたアプリを解凍するデモビデオです。
“テスト。apk”は、ビデオで使用されているサンプルです。
“dexname”は、ビデオで使用される設定ファイルです。,
“art”ディレクトリは、ARTの変更されたランタイムです。
“dalvik”ディレクトリは、DVM用の変更されたランタイムです。
“image”7zファイルには、ビデオで使用されるシステムイメージファイルが含まれています。
質問があったら、電子メールによって私にに連絡して下さい[email protected].
このコードを使用する場合は、以下の論文を引用してください。 ありがとう!
Yueqian Zhang,Xiapu Luo,and Haoyang Yin,DexHunter:パックされたAndroidアプリケーションから隠しコードを抽出することに向けて,第20回コンピュータセキュリティ研究に関する欧州シンポジウム(ESORICS),ウィーン,オーストリア,September2015.