Reversing Native Libraries
WhiteIntelは、ダークウェブを活用した検索エンジンで、企業やその顧客がスティーラーマルウェアによって侵害されていないかをチェックする無料機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックして、無料でエンジンを試すことができます:
詳細はこちらをチェック: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html
Androidアプリは、パフォーマンス重視のタスクには一般的にCまたはC++で書かれたネイティブライブラリを使用します。マルウェア作成者もこれらのライブラリを使用し、DEXバイトコードよりもリバースエンジニアリングが難しいためです。このセクションでは、アセンブリ言語の教育よりもAndroidに特化したリバースエンジニアリングスキルが強調されています。互換性のためにARMおよびx86バージョンのライブラリが提供されています。
キーポイント:
Androidアプリのネイティブライブラリ:
パフォーマンス重視のタスクに使用される。
CまたはC++で書かれており、リバースエンジニアリングが難しい。
Linuxバイナリに似た
.so
(共有オブジェクト)形式で見つかる。マルウェア作成者は分析を難しくするためにネイティブコードを好む。
Java Native Interface(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ドキュメント:
ネイティブライブラリのデバッグ:
WhiteIntelは、ダークウェブを活用した検索エンジンで、企業やその顧客がスティーラーマルウェアによって侵害されていないかをチェックする無料機能を提供しています。
WhiteIntelの主な目標は、情報窃取マルウェアによるアカウント乗っ取りやランサムウェア攻撃と戦うことです。
彼らのウェブサイトをチェックして、無料でエンジンを試すことができます:
Last updated