hacktricks/src/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md

4.7 KiB
Raw Blame History

Ανάλυση Εγγενών Βιβλιοθηκών

{{#include ../../banners/hacktricks-training.md}}

Για περισσότερες πληροφορίες δείτε: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html

Οι εφαρμογές Android μπορούν να χρησιμοποιούν εγγενείς βιβλιοθήκες, συνήθως γραμμένες σε C ή C++, για εργασίες που απαιτούν υψηλή απόδοση. Οι δημιουργοί κακόβουλου λογισμικού χρησιμοποιούν επίσης αυτές τις βιβλιοθήκες, καθώς είναι πιο δύσκολο να αναλυθούν σε αντίθεση με τον κωδικό DEX. Η ενότητα τονίζει τις δεξιότητες αντίστροφης μηχανικής προσαρμοσμένες για το Android, αντί να διδάσκει γλώσσες συναρμολόγησης. Παρέχονται εκδόσεις ARM και x86 των βιβλιοθηκών για συμβατότητα.

Κύρια Σημεία:

  • Εγγενείς Βιβλιοθήκες σε Εφαρμογές Android:
  • Χρησιμοποιούνται για εργασίες που απαιτούν υψηλή απόδοση.
  • Γραμμένες σε C ή C++, καθιστώντας την αντίστροφη μηχανική δύσκολη.
  • Βρίσκονται σε μορφή .so (shared object), παρόμοια με τα εκτελέσιμα Linux.
  • Οι δημιουργοί κακόβουλου λογισμικού προτιμούν τον εγγενή κώδικα για να κάνουν την ανάλυση πιο δύσκολη.
  • 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.
  • Παρέχονται ασκήσεις για την πρακτική φόρτωσης βιβλιοθηκών, σύνδεσης μεθόδων και αναγνώρισης εγγενών συναρτήσεων.

Πόροι:

{{#include ../../banners/hacktricks-training.md}}