Android静的分析実験記録ソフトウェアセキュリティ(1)

1.実験の目的

・リバース分析テクノロジーを学び、Androidプラットフォームの静的分析と動的分析の原則を理解します。

・Androidプラットフォームの実際の戦闘の逆分析を通じて、AndroidKiller、GDA、およびその他のツールの使用についての理解を深めます。

・Androidの静的分析クラッキングの概念を理解する。

システムアーキテクチャ、コンポーネント、:・のようなAndroidプラットフォームの基礎習得バインダー、メカニズムをつもりメカニズム、smali 文法を。

2.実験的な内容

実験:Android静的分析ツールを使用してAddNumber.apkファイルを分析し、フラグを見つけます。

3.実験装置

このコンピューターのオペレーティングシステム:Win10

Android Emulator:Night God Simulator

JDKバージョン:jdk-1.8.0およびjdk-14がこのマシンにインストールされています。環境変数の構成パスを以前のバージョンに変更する必要があります

分析ツール:AndroidKiller_v1.3、GDA3.68(どちらもAPK総合分析ツール、統合理解パッケージ、

逆コンパイル、再パック、その他の機能)

4.実験手順

実験: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の運用ロジック分析

5、注意が必要な事項
 

1.再コンパイルする前に、APKのバージョンがネイティブJDKと一致しているかどうかを確認してください。一致していない場合、コンパイルされない可能性があります。

2. Androidの静的分析とクラッキングの一般的な考え方は次のとおりです。

・apkのインストール後に使用して観察します。

・ツールを使用してapkを逆コンパイルし、メインプログラムのロジックを理解し、キーワードの意味を確認し、対応するsmaliファイルを見つけます。

・ロジック判定ステートメントや対応するsmaliファイル内のジャンプなどの主要なコンテンツを検索し、実行するステートメントを制御するコードを分析した後、ロジックを手動で変更します。

・完了後に保存してコンパイルし、クラックされたアプリアプリケーションを実行して、成功するかどうかを確認します。

3. Androidの静的分析メソッドに対して:

コード難読化技術を使用します。たとえば、GoogleはProGuardコード難読化ツールを提供しています。開発者は独自のコードを難読化できます。

・パッキング。これはlove暗号化、360シェルで現在市場に出ています。

・Androidデバッグ検出機能、IDAデバッグポート検出などのデバッグ検出

リリース元の2件の記事 ウォンの賞賛0 ビュー549

おすすめ

転載: blog.csdn.net/weixin_42056969/article/details/105541259