hacktricks/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md
2024-02-10 18:14:16 +00:00

5.2 KiB
Raw Blame History

Native Kütüphanelerin Tersine Mühendisliği

AWS hackleme becerilerinizi sıfırdan kahramana dönüştürün htARTE (HackTricks AWS Kırmızı Takım Uzmanı)ile!

HackTricks'i desteklemenin diğer yolları:

Daha fazla bilgi için: 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ış olan yerel kütüphaneleri kullanabilir. Kötü amaçlı yazılım oluşturucuları da bu kütüphaneleri kullanır çünkü DEX bytecode'dan daha zor tersine mühendislik yapılırlar. Bu bölüm, Android'e özgü tersine mühendislik becerilerine odaklanırken, derleme dillerini öğretmek yerine Android'e özgü tersine mühendislik becerilerini vurgular. Uyumluluk için ARM ve x86 sürümleri sağlanmıştır.

Ana Noktalar:

  • Android Uygulamalarında Yerel Kütüphaneler:

  • Performans yoğun görevler için kullanılır.

  • Tersine mühendisliği 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 oluşturucuları analizi zorlaştırmak için yerel kodu tercih eder.

  • Java Native Interface (JNI) ve Android NDK:

  • JNI, Java yöntemlerinin yerel kodda uygulanmasına izin verir.

  • 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 Yürütme:

  • Kütüphaneler, belleğe System.loadLibrary veya System.load kullanılarak yüklenir.

  • Kütüphane yüklendiğinde JNI_OnLoad çalıştırılır.

  • Java tarafında bildirilen yerel yöntemler, yerel işlevlerle bağlantı kurarak yürütme sağlar.

  • Java Yöntemlerini Yerel İşlevlere Bağlama:

  • Dinamik Bağlama: Yerel kütüphanelerdeki işlev adları belirli bir desene uyar, böylece otomatik bağlantı sağlanır.

  • Statik Bağlama: Bağlantı için RegisterNatives kullanır, işlev adlandırma ve yapısında 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şimleri anlamak için önemlidir.

  • Kütüphane yükleme, yöntemleri bağlama ve yerel işlevleri tanımlama pratiği için egzersizler sunulur.

Kaynaklar:

AWS hackleme becerilerinizi sıfırdan kahramana dönüştürün htARTE (HackTricks AWS Kırmızı Takım Uzmanı)ile!

HackTricks'i desteklemenin diğer yolları: