・リバース分析テクノロジーを学び、Androidプラットフォームの静的分析と動的分析の原則を理解します。
・Androidプラットフォームの実際の戦闘の逆分析を通じて、AndroidKiller、GDA、およびその他のツールの使用についての理解を深めます。
・Androidの静的分析クラッキングの概念を理解する。
システムアーキテクチャ、コンポーネント、:・のようなAndroidプラットフォームの基礎習得バインダー、メカニズムをつもりメカニズム、smali 文法を。
実験:Android静的分析ツールを使用してAddNumber.apkファイルを分析し、フラグを見つけます。
このコンピューターのオペレーティングシステム:Win10
Android Emulator:Night God Simulator
JDKバージョン:jdk-1.8.0およびjdk-14がこのマシンにインストールされています。環境変数の構成パスを以前のバージョンに変更する必要があります
分析ツール:AndroidKiller_v1.3、GDA3.68(どちらもAPK総合分析ツール、統合理解パッケージ、
逆コンパイル、再パック、その他の機能)
実験:Android静的分析ツールを使用してAddNumber.apkファイルを分析し、フラグを見つけます。
Androidエミュレーターを開き、初期バージョンのAPKをインストールしてみます。エラー1007:アプリケーションのインストールに失敗しました。
これは、APKファイルが破損しているか、署名がないか、パッケージ方法に問題があるか、またはアプリケーション/ゲームの製造元が、インストールパッケージに付属するエミュレータを互換性がないために発生した可能性があります。
図1 最初のAPKのインストールに失敗しました
AndroidKillerを開いてAddNumber.apkをロードし、ソースコードを抽出して逆コンパイルします。
図2 ソースコードの抽出と逆コンパイルの成功
APKファイルを直接再コンパイルしてみてください。APKはコンパイルに失敗し、次のステップへの署名を続行できないことを示唆しています。
図3 元のAPKのコンパイルに失敗しました
次のようにロードした後、GDAツールを使用してAPKを表示します。
図4 GDA が元のAPK ファイルを読み込む
( 追記:メインインターフェースはDexヘッダーを異なる色で表示し、上から下への右側の列は以下を意味します:1.すべての文字を表示する
文字列; 2.使用されているすべての文字列を表示; 3すべてのAPIを表示; 4. AndroidManifestファイルを表示; 5. 16進表示
トランザクション; 6疑わしい(悪意行為分析); 7クラス及びメソッド、DexClass複数の使用:. APK示しmulitdex技術を発生した場合)
オプションバーの[署名の表示]ボタンをクリックしてAPKの署名情報を表示し、コンテンツが空であることを確認します。そのため、APKをシミュレーターに正常にインストールできず、再コンパイルできない理由は署名されていないはずです。
図5 GDAを使用して元のAPKの署名を表示する
AndroidKillerを使用して元のファイルに署名します。ここでの署名方法はDefaultとAndroidKillerです。両方を試したところ、後者のみが成功することがわかりました。
図6 AndroidKiller 元のAPKの署名
もう一度GDAを使用して、署名後に新しく生成されたファイルを表示し、APKの署名情報を確認します。次のコンテンツが表示されます。
図7 GDAを使用して署名された新しいAPK を表示する
Androidエミュレーターにサインインした後、新しく生成されたAPKファイルをインストールし、正常にインストールします。同時に、最初のリンクが累積レベルであることもわかりますが、レベルを手動でクリックするのは現実的ではありません。
図8 APKが正常にインストールされた後のプログラムの最初のインターフェイス
AndroidKillerを使用してsmaliフォルダー内のファイルを表示し、Java逆コンパイルを実行して、MainActivity.classファイルを見つけて主な機能を理解します。
図9 AndroidKillerを使用してMainActivity.classを表示する
クリック監視機能セクションの内容を見ると、ボタンがクリックされるたびにmynumberが1ずつ増加し、現在の数が特定の値より大きい場合、ループからジャンプして、表示インテント(インテント、アプリケーションのアクションとそれに対応するデータを説明する)を使用していることがわかります;通信キャリアの役割を果たす)succcess.classを開始する方法。
図10 監視機能の内容を見る
シミュレーターのAPKコンテンツによると、設定の数が比較的多く、手動クリックの効率が低すぎるため、最初にボタンをクリックするループからジャンプする必要があります。対応するsmaliファイルで条件判定文を見つけ、ループから飛び出す判定を見つけ、一度クリックするとループから飛び出すことができるように判定ロジックを修正します。
図11 でsmali ファイル位置付け文の解析
(if-eq等しい(等しい)、-ne等しくない(等しくない)、-gtより大きい(より大きい)、-geより大きいまたは等しい、-ltより小さい(より小さい)、-leより小さいまたは等しい
変更後、[compile]をクリックします。コンパイルが成功したら、新しくコンパイルしたapkファイルをAndroidエミュレータにインストールしてプロンプトを表示します。
図12 ループから抜けた後のプロンプトインターフェイス
前のページに戻って真のフラグを取得してください:0218d33b334a0a15260d149db58a6e50:
図13フラグを取得
フラグを取得する操作に対応したsuccess.classに対応する操作ロジックを確認できます。ループからジャンプした後、プログラムは最初にonCreate関数を実行して新しいページにジャンプします。フラグは、ユーザーがクリックして前のページに戻った後にのみ表示されます。
図14 success.classの運用ロジック分析
1.再コンパイルする前に、APKのバージョンがネイティブJDKと一致しているかどうかを確認してください。一致していない場合、コンパイルされない可能性があります。
2. Androidの静的分析とクラッキングの一般的な考え方は次のとおりです。
・apkのインストール後に使用して観察します。
・ツールを使用してapkを逆コンパイルし、メインプログラムのロジックを理解し、キーワードの意味を確認し、対応するsmaliファイルを見つけます。
・ロジック判定ステートメントや対応するsmaliファイル内のジャンプなどの主要なコンテンツを検索し、実行するステートメントを制御するコードを分析した後、ロジックを手動で変更します。
・完了後に保存してコンパイルし、クラックされたアプリアプリケーションを実行して、成功するかどうかを確認します。
3. Androidの静的分析メソッドに対して:
コード難読化技術を使用します。たとえば、GoogleはProGuardコード難読化ツールを提供しています。開発者は独自のコードを難読化できます。
・パッキング。これはlove暗号化、360シェルで現在市場に出ています。
・Androidデバッグ検出機能、IDAデバッグポート検出などのデバッグ検出