Unpacking binaries

Μάθετε το χάκινγκ του AWS από το μηδέν μέχρι τον ήρωα με το htARTE (HackTricks AWS Red Team Expert)!

Άλλοι τρόποι για να υποστηρίξετε το HackTricks:

Αναγνώριση συμπιεσμένων δυαδικών αρχείων

  • Έλλειψη συμβολοσειρών: Συνήθως συναντάμε συμπιεσμένα δυαδικά αρχεία που δεν έχουν σχεδόν καμία συμβολοσειρά.

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

  • Μπορείτε επίσης να χρησιμοποιήσετε ορισμένα εργαλεία για να προσπαθήσετε να βρείτε ποιος συμπιεστής χρησιμοποιήθηκε για τη συμπίεση ενός δυαδικού αρχείου:

Βασικές συστάσεις

  • Ξεκινήστε την ανάλυση του συμπιεσμένου δυαδικού αρχείου από το τέλος στο IDA και κινηθείτε προς τα πάνω. Οι αποσυμπιεστές τερματίζουν όταν τερματίζει ο αποσυμπιεσμένος κώδικας, οπότε είναι απίθανο να περάσει ο αποσυμπιεστής την εκτέλεση στον αποσυμπιεσμένο κώδικα στην αρχή.

  • Αναζητήστε JMP ή CALL προς καταχωρητές ή περιοχές μνήμης. Αναζητήστε επίσης συναρτήσεις που προωθούν ορίσματα και μια διεύθυνση κατεύθυνσης και στη συνέχεια καλούν την retn, επειδή η επιστροφή της συνάρτησης σε αυτήν την περίπτωση μπορεί να καλέσει τη διεύθυνση που μόλις προωθήθηκε στη στοίβα πριν την κλήση της.

  • Βάλτε ένα σημείο διακοπής στο VirtualAlloc, καθώς αυτό εκχωρεί χώρο στη μνήμη όπου το πρόγραμμα μπορεί να γράψει αποσυμπιεσμένο κώδικα. Τρέξτε το "run to user code" ή χρησιμοποιήστε το F8 για να φτάσετε στην τιμή μέσα στο EAX μετά την εκτέλεση της συνάρτησης και "ακολουθήστε αυτήν τη διεύθυνση στην αναφορά". Δεν ξέρετε ποτέ αν αυτή είναι η περιοχή όπου θα αποθηκευτεί ο αποσυμπιεσμένος κώδικας.

  • Το VirtualAlloc με την τιμή "40" ως όρισμα σημαίνει Read+Write+Execute (κάποιος κώδικας που χρειάζεται εκτέλεση θα αντιγραφεί εδώ).

  • Κατά την αποσυμπίεση του κώδικα, είναι φυσιολογικό να βρείτε πολλές κλήσεις σε αριθμητικές πράξεις και σε συναρτήσεις όπως memcopy ή VirtualAlloc. Εάν βρεθείτε σε μια συνάρτηση που φαίνεται να εκτελεί μόνο αριθμητικές πράξεις και ίσως κάποιο memcopy, η σύσταση είναι να προσπαθήσετε να βρείτε το τέλος της συνάρτησης (ίσως ένα JMP ή κλήση σε κάποιον καταχωρητή) **ή τ

Last updated