| dc.contributor.advisor | Patsakis, Constantinos | |
| dc.contributor.advisor | Πατσάκης, Κωνσταντίνος | |
| dc.contributor.author | Olymbios, Andreas | |
| dc.contributor.author | Ολύμπιος, Αντρέας | |
| dc.date.accessioned | 2026-07-24T09:28:29Z | |
| dc.date.available | 2026-07-24T09:28:29Z | |
| dc.date.issued | 2026-07 | |
| dc.identifier.uri | https://dione.lib.unipi.gr/xmlui/handle/unipi/19630 | |
| dc.description.abstract | Η παρούσα πτυχιακή εργασία παρουσιάζει ένα εργαλείο που εντοπίζει και αποτυπώνει τον αποσυμπιεσμένο κώδικα συσκευασμένων εκτελέσιμων των Windows κατά την εκτέλεσή τους. Η συσκευασία κρύβει τον πραγματικό κώδικα ενός προγράμματος διατηρώντας τον συμπιεσμένο ή κρυπτογραφημένο, και τον επαναφέρει στη μνήμη μόνο όταν το πρόγραμμα εκτελείται. Το εργαλείο δεν ανακατασκευάζει ένα λειτουργικό εκτελέσιμο από το συσκευασμένο αρχείο. Αντ' αυτού, παρακολουθεί τη διεργασία-στόχο καθώς εκτελείται, εντοπίζει το σημείο όπου εκτελείται μνήμη που είχε εγγραφεί νωρίτερα, και γράφει αυτή τη μνήμη στον δίσκο ώστε να την εξετάσει ένας αναλυτής. Αυτός είναι ο στόχος που συμφωνήθηκε με τον επιβλέποντα: λήψη αποτυπώσεων μνήμης μιας διεργασίας που εκτελείται και κρίση για το αν ένα εκτελέσιμο αποσυσκευάστηκε, αντί για την παραγωγή ενός πλήρως ανακατασκευασμένου δυαδικού.
Η μέθοδος ανίχνευσης είναι η εγγραφή-έπειτα-εκτέλεση (write-then-execute), η καθιερωμένη ευρετική μέθοδος στη βιβλιογραφία της γενικής αποσυσκευασίας. Το εργαλείο εκτελεί έναν στόχο 32-bit μέσω του debug API των Windows και επιβάλλει πολιτική εγγραφής-ή-εκτέλεσης (write-xor-execute) στις σελίδες μνήμης. Όταν μια σελίδα εγγράφεται και αργότερα εκτελείται, αυτό σηματοδοτεί ένα γεγονός αποσυσκευασίας. Το εργαλείο αποτυπώνει την εικόνα της διεργασίας εκείνη τη στιγμή και συνεχίζει, ώστε να παρακολουθεί συσκευαστές που αποκωδικοποιούν σε πολλά στάδια.
Το εργαλείο αξιολογήθηκε σε ένα δημόσιο σύνολο δεδομένων από καλοήθη εκτελέσιμα συσκευασμένα με είκοσι τέσσερις κοινούς συσκευαστές, πέντε δείγματα ανά συσκευαστή, και ελέγχθηκε ως προς τα αρχικά αποσυσκευασμένα αρχεία. Στους συσκευαστές που αποσυσκευάζουν εντός της εικόνας της διεργασίας, ανέκτησε τον αρχικό κώδικα στα περισσότερα ή σε όλα τα δείγματα, μεταξύ άλλων για τους MEW, MPRESS, FSG, NSPack και WinUpack, με μερική ανάκτηση σε άλλους όπως οι UPX, RLPack και ASPack, με την εντροπία της αποτύπωσης να μειώνεται από περίπου 7,9 έως και 3,8. Η αξιολόγηση αποτύπωσε επίσης τα όρια της μεθόδου: συσκευαστές εικονικοποίησης και πακετοποιητές όπως το Themida και το Molebox, καθώς και συσκευαστές που αποσυσκευάζουν μέσω διαδρομών που τα τρέχοντα άγκιστρα δεν παρακολουθούν. Αυτά αναφέρονται πλήρως.
Επιστημονική περιοχή: Ασφάλεια συστημάτων, ανάλυση κακόβουλου λογισμικού. | el |
| dc.format.extent | 58 | el |
| dc.language.iso | en | el |
| dc.publisher | Πανεπιστήμιο Πειραιώς | el |
| dc.rights | Αναφορά Δημιουργού-Μη Εμπορική Χρήση-Όχι Παράγωγα Έργα 3.0 Ελλάδα | * |
| dc.rights.uri | http://creativecommons.org/licenses/by-nc-nd/3.0/gr/ | * |
| dc.title | Automated malware unpacking | el |
| dc.title.alternative | Αυτοματοποιημένο ξεπακετάρισμα κακόβουλου λογισμικού | el |
| dc.type | Bachelor Dissertation | el |
| dc.contributor.department | Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών. Τμήμα Πληροφορικής | el |
| dc.description.abstractEN | This thesis presents a tool that detects and captures the unpacked code of packed Windows executables while they run. Packing hides a program's real code by keeping it compressed or encrypted, then restoring it in memory only when the program runs. The tool does not rebuild a working executable from the packed file. Instead, it watches the target process as it runs, finds the point where memory that was written earlier gets executed, and writes that memory to disk so an analyst can inspect it.
The detection method is write-then-execute, the standard heuristic in the generic unpacking literature. The tool runs a 32-bit target under the Windows debug API and enforces a write-xor-execute policy on memory pages. When a page is written and later executed, that marks an unpacking event. The tool captures the process image at that moment, clears its record for that page, and keeps going. This way packers that decode in several stages are followed through each stage instead of being stopped at the first. Code that is unpacked into memory allocated at runtime is covered by hooks on VirtualAlloc and VirtualProtect.
The tool was evaluated on a public dataset of benign binaries packed with twenty-four commodity packers, five samples each, and cross-checked against the original unpacked files. On the packers that unpack inside the process image, it recovered the original code in most or all sampled files, including MEW, MPRESS, FSG, NSPack and WinUpack, with partial recovery on others such as UPX, RLPack and ASPack. This was confirmed by matching the dumps against the original files, and the recovered dumps entropy dropped from roughly 7.9 to as low as 3.8. The evaluation also mapped where the method stops: virtualization protectors and bundlers such as Themida and Molebox, and packers that unpack through paths the current hooks do not observe. These are reported in full rather than left out. | el |
| dc.subject.keyword | Dynamic analysis | el |
| dc.subject.keyword | Malware unpacking | el |
| dc.subject.keyword | Packers | el |
| dc.subject.keyword | Write-then-execute | el |
| dc.subject.keyword | Memory dump | el |
| dc.date.defense | 2026-07-16 | |