Reversing Native Libraries
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
モバイルセキュリティの専門知識を8kSecアカデミーで深めましょう。自己ペースのコースを通じてiOSとAndroidのセキュリティをマスターし、認定を取得しましょう:
詳細情報は次を確認してください: 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アセンブリの基本が推奨されます。
JNIおよびNDKドキュメント:
ネイティブライブラリのデバッグ:
モバイルセキュリティの専門知識を8kSecアカデミーで深めましょう。自己ペースのコースを通じてiOSとAndroidのセキュリティをマスターし、認定を取得しましょう:
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)