Reversing Native Libraries
Daha fazla bilgi için kontrol edin: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html
Android uygulamaları, performans açısından kritik görevler için genellikle C veya C++ ile yazılmış yerel kütüphaneler kullanabilir. Kötü amaçlı yazılım yaratıcıları da bu kütüphaneleri kullanır, çünkü bunları tersine mühendislik yapmak DEX bytecode'dan daha zordur. Bu bölüm, Android'e özel tersine mühendislik becerilerini vurgular, montaj dillerini öğretmek yerine. Uyum sağlamak için ARM ve x86 sürümleri sağlanmaktadır.
Ana Noktalar:
Android Uygulamalarında Yerel Kütüphaneler:
Performans yoğun görevler için kullanılır.
Tersine mühendislik yapmayı zorlaştıran C veya C++ ile yazılmıştır.
Linux ikili dosyalarına benzer şekilde
.so
(paylaşılan nesne) formatında bulunur.Kötü amaçlı yazılım yaratıcıları, analizi zorlaştırmak için yerel kodu tercih eder.
Java Yerel Arayüzü (JNI) & Android NDK:
JNI, Java yöntemlerinin yerel kodda uygulanmasına olanak tanır.
NDK, yerel kod yazmak için Android'e özgü bir araç setidir.
JNI ve NDK, Java (veya Kotlin) kodunu yerel kütüphanelerle köprüler.
Kütüphane Yükleme ve Çalıştırma:
Kütüphaneler,
System.loadLibrary
veyaSystem.load
kullanılarak belleğe yüklenir.Kütüphane yüklenirken JNI_OnLoad çalıştırılır.
Java'da tanımlanan yerel yöntemler, yerel işlevlere bağlanarak çalıştırılmasını sağlar.
Java Yöntemlerini Yerel İşlevlere Bağlama:
Dinamik Bağlama: Yerel kütüphanelerdeki işlev adları belirli bir desene uyar, otomatik bağlamaya olanak tanır.
Statik Bağlama: Bağlama için
RegisterNatives
kullanır, işlev adlandırma ve yapı konusunda esneklik sağlar.Tersine Mühendislik Araçları ve Teknikleri:
Ghidra ve IDA Pro gibi araçlar, yerel kütüphaneleri analiz etmeye yardımcı olur.
JNIEnv
, JNI işlevlerini ve etkileşimlerini anlamak için kritik öneme sahiptir.Kütüphaneleri yükleme, yöntemleri bağlama ve yerel işlevleri tanımlama pratiği yapmak için alıştırmalar sağlanmaktadır.
Kaynaklar:
ARM Montaj Dili Öğrenimi:
Temel mimariyi daha iyi anlamak için önerilir.
Azeria Labs'tan ARM Montaj Dili Temelleri önerilmektedir.
JNI & NDK Belgeleri:
Yerel Kütüphaneleri Hata Ayıklama:
Last updated