ネイティブライブラリのリバースエンジニアリング

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をサポートする

詳細情報は次を確認してください: 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関数と相互作用を理解するために重要です。
  • ライブラリのロード、メソッドのリンク、ネイティブ関数の特定を練習するための演習が提供されています。

リソース:

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をサポートする