Reversing Native Libraries
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Ekip Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Ekip Uzmanı (GRTE)
Mobil Güvenlik konusundaki uzmanlığınızı 8kSec Akademisi ile derinleştirin. Kendi hızınıza göre kurslarımızla iOS ve Android güvenliğini öğrenin ve sertifika alın:
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.
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) ve 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 birleştirir.
Kütüphane Yükleme ve Çalıştırma:
Kütüphaneler, System.loadLibrary
veya System.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şlevlerle bağlantı kurarak ç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.
ARM Montaj Dili Öğrenimi:
Temel mimariyi daha iyi anlamak için önerilir.
Azeria Labs'tan ARM Montaj Dili Temelleri önerilmektedir.
JNI ve NDK Belgeleri:
Yerel Kütüphaneleri Hata Ayıklama:
Mobil Güvenlik konusundaki uzmanlığınızı 8kSec Akademisi ile derinleştirin. Kendi hızınıza göre kurslarımızla iOS ve Android güvenliğini öğrenin ve sertifika alın:
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Ekip Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Ekip Uzmanı (GRTE)