ネイティブライブラリのリバースエンジニアリング
Reading time: 5 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
詳細情報は次を確認してください: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html
Androidアプリは、パフォーマンスが重要なタスクのために、通常CまたはC++で書かれたネイティブライブラリを使用します。マルウェア作成者もこれらのライブラリを使用します。なぜなら、DEXバイトコードよりもリバースエンジニアリングが難しいからです。このセクションは、アセンブリ言語を教えるのではなく、Androidに特化したリバースエンジニアリングスキルを強調しています。互換性のためにARMおよびx86バージョンのライブラリが提供されています。
重要なポイント:
- Androidアプリのネイティブライブラリ:
- パフォーマンス集約型タスクに使用されます。
- CまたはC++で書かれており、リバースエンジニアリングが難しいです。
- Linuxバイナリに似た
.so
(共有オブジェクト)形式で見つかります。 - マルウェア作成者は分析を難しくするためにネイティブコードを好みます。
- Javaネイティブインターフェース(JNI)とAndroid NDK:
- JNIはJavaメソッドをネイティブコードで実装することを可能にします。
- NDKはネイティブコードを書くためのAndroid特有のツールセットです。
- JNIとNDKはJava(またはKotlin)コードとネイティブライブラリを橋渡しします。
- ライブラリのロードと実行:
- ライブラリは
System.loadLibrary
またはSystem.load
を使用してメモリにロードされます。 - JNI_OnLoadはライブラリのロード時に実行されます。
- Javaで宣言されたネイティブメソッドはネイティブ関数にリンクし、実行を可能にします。
- Javaメソッドとネイティブ関数のリンク:
- 動的リンク: ネイティブライブラリ内の関数名は特定のパターンに一致し、自動リンクを可能にします。
- 静的リンク:
RegisterNatives
を使用してリンクし、関数名や構造に柔軟性を提供します。 - リバースエンジニアリングツールと技術:
- GhidraやIDA Proなどのツールはネイティブライブラリの分析に役立ちます。
JNIEnv
はJNI関数と相互作用を理解するために重要です。- ライブラリのロード、メソッドのリンク、ネイティブ関数の特定を練習するための演習が提供されています。
リソース:
- ARMアセンブリの学習:
- 基礎となるアーキテクチャを深く理解するために推奨されます。
- Azeria LabsのARM Assembly Basicsが推奨されています。
- JNIとNDKのドキュメント:
- OracleのJNI仕様
- AndroidのJNIヒント
- NDKの始め方
- ネイティブライブラリのデバッグ:
- JEBデコンパイラを使用してAndroidネイティブライブラリをデバッグする
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。