Ανάλυση Εγγενών Βιβλιοθηκών
Reading time: 3 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Για περισσότερες πληροφορίες δείτε: 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:
- Oracle's JNI Specification
- Android's JNI Tips
- Getting Started with the NDK
- Αποσφαλμάτωση Εγγενών Βιβλιοθηκών:
- Debug Android Native Libraries Using JEB Decompiler
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.