ホームページ  >  記事  >  運用・保守  >  Androidアプリを暗号化する方法

Androidアプリを暗号化する方法

WBOY
WBOY転載
2023-05-26 08:47:191314ブラウズ

###1つ。 Android インターフェース ハイジャックとは

インターフェース ハイジャックとは、Android システムにおいて、マルウェアがターゲット ソフトウェアの実行を監視し、現在実行中のインターフェースが監視対象アプリケーション (通常はログインまたは支払い) の特定のインターフェースであることを検出した場合を意味します。インターフェイス)を介して偽のフィッシング ページがポップアップし、ユーザーに情報の入力を誘導し、最終的にはユーザーのプライバシーを盗んだり(ユーザーのアカウント番号、カード番号、パスワードなどの情報を悪意を持って盗んだり)、偽のインターフェイスを使用してフィッシング詐欺を犯したりします。 ###############二。一般的な攻撃方法

1. システムの Logocat ログを監視し、アクティビティ インターフェイスの切り替え動作が検出されると、攻撃が実行され、偽のアクティビティ インターフェイスが隠されて欺瞞が実装されます。 Android app如何加密

2. システム API をリッスンする: 悪意のあるプログラムが関連するインターフェイスの API コンポーネント呼び出しをリッスンすると、攻撃を開始する可能性があります。


3. 5.0 より前のモデルの場合、スタックの最上位にあるアクティビティを取得するために列挙し、ターゲット アクティビティの出現を監視し、攻撃を開始します。

4. ターゲット アプリケーションを監視するためにサービスを悪意をもって開始します。ターゲット アクティビティに切り替えると、ダイアログ ボックスがポップアップ表示され、現在のインターフェイスがハイジャックされ、ユーザーが混乱します。

3.予防策

##●ユーザーの皆様へ

##ほとんどのAndroid端末にはホームボタンが搭載されており、長押しすると最近使用したタスクが表示されます。ユーザーがログインするためにパスワードを入力する必要がある場合、ホーム ボタンを長押しして最近のタスクを表示できます。たとえば、ログイン時にホーム ボタンを長押しし、最近のタスクに WeChat が表示されている場合、現在のログインインターフェイスは悪意を持って偽装されたアクティビティである可能性が最も高くなります。別のプログラムに切り替えて最近のタスクを確認し、このログイン インターフェイスがどのプログラムからのものかを確認してください。

#開発者向け

フィッシング アクティビティ タイプのハイジャックの場合、ログイン ウィンドウやユーザー プライバシーなどの主要なアクティビティの onPause メソッドで、フロントエンド アクティビティ アプリケーション自体であるかシステム アプリケーションであるかを検出します。悪意のあるリスクが発見された場合、ログイン インターフェイスが上書きされることをユーザーに通知し、通常のアクティビティをカバーするクラス名を示すいくつかの警告メッセージがユーザーに表示されます。

ポップアップ ダイアログ タイプのハイジャックである場合は、アクティビティのライフ サイクルを引き継ぎます。現在のインターフェイスが onResume で見つかったときに、それがフォーカスを失っているかどうかを確認します。同時に存在する場合は、インターフェイスがフォーカスを失っているかどうかを確認します。 , それはダイアログ クラス ハイジャックである可能性があります。この時点で、実行中のアクティブ プロセスに機密のアクセス許可 (グローバル アラート アクセス許可、タスク スタック アクセス許可の取得など) が含まれているかどうかを確認し、含まれている場合はユーザーに警告が表示されます。

Android APK に逆コンパイルの「爆弾」を配置する方法

上記の記事で言及されている「爆弾」は、実際には逆コンパイラのバグであるため、別の逆コンパイラをターゲットにしています。さまざまな「爆弾」を設計する必要があります。まず、一般的に使用される APK 逆コンパイル ツールについて理解しましょう。

## ● baksmali/smali: baksmali は分析のためにバイナリ dex ファイルを smali テキスト ファイルに変換でき、smali は smali ファイルを dex ファイルに再コンパイルできます。

# Apktool: dex ファイルを処理するために baksmali/smali を統合し、res リソース ファイル (レイアウト/文字列など) の逆コンパイルも実装します。

## ● AxmlPrinter: AndroidManifest.xml のバイナリ形式を AndroidManifest.xml のテキスト形式に変換するために使用されます。 ## ● dex2jar: dex を jar ファイルに変換できます。 ## ● jd-gui: jar ファイルを Java ソース コードに逆コンパイルできます。

# Ida Pro: 主に APK で So ファイルを逆コンパイルするために使用されます。また、dex ファイルを smali 構文に似たテキスト形式の命令に逆コンパイルすることもサポートしています。

上記の逆コンパイル ツールからわかるように、このツールは主に 3 つの機能に分かれています。

# AndroidManifest.xml、layout.xml

などのリソースを逆コンパイルします。 decompile Dex ファイルを逆コンパイルするか、Java コードに変換します。

#● So ファイルを逆コンパイルします。

「bomb」の設定には、特定のファイル形式についての十分な理解が必要であり、特定のファイル形式のみを対象とする場合があります。逆コンパイル ツール。

Android アプリはどのように暗号化しますか?

Android アプリは dex ファイルで構成されているため、ファイル、リソース、アセット リソースが含まれます。このコンテンツは次のように書き換えることができます。 : この暗号化テクノロジは、DEX ファイルの保護、SO ファイルの暗号化、リソース ファイル (リソースやアセットなど) の保護の 3 つの主要な側面に分けることができます。

## ● dex 保護

#未 暗号化された dex ファイルは Java のコンパイルとパッケージ化によって生成されるため、クラッキングコストが低く、攻撃に対して脆弱です 最も基本的な形式のパッキングから始まり、関数の実行本体の抽出、動的ロード、そして現在の vmp 仮想化までマシン保護、このソリューション セキュリティは徐々に向上しています。特に vmp 強化では、関数本体の解釈に自社開発の仮想マシンが使用されます。命令暗号化置換が適切に使用されると、クラッカーにとって非常に困難になります。

#so 暗号化

so ファイルは、初期セグメント暗号化からカスタム elf 構造の暗号化方式に進化しました。これにより、IDA が関数名を閲覧できなくなり、コストとクラッキングの難易度が増加する可能性があります。

#● リソース保護

res リソース ファイルは通常、リバース エンジニアリングの難易度を高めるために難読化のみを使用します。資産リソースは通常、処理されません。 H5 アプリケーションの数が増加しているため、一部のベンダー (Yidun や Naga など) が資産暗号化機能を提供していますが、その実装原理は明確ではありません。

上記の 3 つの保護点に加えて、逆コンパイル防止、二次パッケージング防止、デバッグ防止、シミュレーター防止、xped 防止機能などもあります。

b) 逆コンパイルを防ぐために、通常、市販の逆コンパイル ツール (apktool など) が対策され、その脆弱性を利用して逆コンパイルが失敗します。

b) 二次パッケージ化を防ぐために、通常、署名情報はコード内に保存され、起動時に現在の APK の署名情報がネイティブ層に保存された署名と比較されます。すでに市場には侵害ツールが存在しています。一般的な実装方法に対していくつかのアップグレードを行うことができます。

c) アンチデバッグは、ptrace プロセスを通じて、クラッカーによる ptrace のデバッグを防ぎます。

d) アンチエミュレータ、/system/bin/su および /system/xbin/su ファイルを検出します。

XusedHelpers の methodCache を検出して、xused を防ぐためにフックされているかどうかを判断します。

以上がAndroidアプリを暗号化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。