mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
4.7 KiB
4.7 KiB
Ανάλυση Εγγενών Βιβλιοθηκών
{{#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. - Παρέχονται ασκήσεις για την πρακτική φόρτωσης βιβλιοθηκών, σύνδεσης μεθόδων και αναγνώρισης εγγενών συναρτήσεων.
Πόροι:
- Μάθηση 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
{{#include ../../banners/hacktricks-training.md}}