Reversing Native Libraries

Υποστήριξη HackTricks

Για περισσότερες πληροφορίες ελέγξτε: 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.

  • Παρέχονται ασκήσεις για την εξάσκηση φόρτωσης βιβλιοθηκών, σύνδεσης μεθόδων και αναγνώρισης εγγενών συναρτήσεων.

Πόροι:

Υποστήριξη HackTricks

Last updated