Reversing Native Libraries
Last updated
Last updated
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Για περισσότερες πληροφορίες ελέγξτε: 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.
Παρέχονται ασκήσεις για την εξάσκηση φόρτωσης βιβλιοθηκών, σύνδεσης μεθόδων και αναγνώρισης εγγενών συναρτήσεων.
Μάθηση ARM Assembly:
Προτείνεται για μια πιο βαθιά κατανόηση της υποκείμενης αρχιτεκτονικής.
ARM Assembly Basics από την Azeria Labs συνιστάται.
Τεκμηρίωση JNI & NDK:
Αποσφαλμάτωση Εγγενών Βιβλιοθηκών:
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)