Reversing Native Libraries
Για περισσότερες πληροφορίες ελέγξτε: 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:
Αποσφαλμάτωση Εγγενών Βιβλιοθηκών:
Last updated