Reversing Native Libraries
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
詳細情報は次を確認してください: 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ドキュメント:
ネイティブライブラリのデバッグ:
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)