Τι είναι ένα Decompiler;
Μια decompiler είναι ένα πρόγραμμα το οποίο λαμβάνει εκτελέσιμο κώδικα και παράγει πηγαίο κώδικα από αυτό.
A compiler δημιουργεί εκτελέσιμο κώδικα από πηγαίο κώδικα? A decompiler προσπάθειες για την αντιστροφή αυτής της διαδικασίας.
Μια decompiler είναι μια εξειδικευμένη έκδοση ενός disassembler. Ενώ ένα disassembler μετατρέπει το εκτελέσιμο κώδικα για συναρμολόγηση γλώσσα, ένα decompiler επιχειρεί να προχωρήσει περισσότερο και να μετατρέπουν το εκτελέσιμο κώδικα για να τον πηγαίο κώδικα σε ένα υψηλότερο επίπεδο γλώσσας, όπως η C ή C + +.
Decompilers
Boomerang
Ο στόχος είναι το Boomerang έργο είναι μια προσπάθεια να αναπτυχθεί ένα πραγματικό decompiler για κώδικα μηχανής προγράμματα μέσω της ανοικτής πηγής. A decompiler λαμβάνει ως είσοδο ένα εκτελέσιμο αρχείο, και προσπαθεί να δημιουργήσει ένα υψηλό επίπεδο, compilable, ενδεχομένως ακόμα διατηρηθεί πηγή αρχείο που κάνει το ίδιο πράγμα. Ως εκ τούτου, είναι το αντίθετο του μεταγλωττιστή, το οποίο λαμβάνει μια πηγή αρχείο και κάνει ένα εκτελέσιμο. Ωστόσο, μια γενική decompiler δεν επιχειρεί να αναστρέψει κάθε δράση του decompiler, αλλά μετατρέπει τη συμβολή του προγράμματος μέχρι το αποτέλεσμα είναι υψηλό επίπεδο πηγαίου κώδικα. Ως εκ τούτου, δεν θα αναδημιουργήσει το αρχικό αρχείο προέλευσης? Ίσως δεν αρέσει. Δεν έχει σημασία αν το εκτελέσιμο αρχείο ή δεν έχει σύμβολα, ή συντάχθηκε από κάποια συγκεκριμένη γλώσσα. (Ωστόσο, δηλωτική γλώσσες όπως η ML δεν θεωρούνται.)
Η πρόθεση είναι να δημιουργηθεί ένα retargetable decompiler (δηλαδή εκείνη που μπορεί απομεταγλώττιση διαφορετικούς τύπους αρχείων κώδικα μηχανής με μικρή προσπάθεια, π.χ. X86-παράθυρα, sparc-solaris, κτλ). Ήταν επίσης να είναι άκρως σπονδυλωτή, ώστε διάφορα μέρη του decompiler μπορεί να αντικατασταθεί με πειραματικές μονάδες. Είχε ως στόχο να καταστεί τελικά διαλογική, a la IDA Pro, επειδή ορισμένα πράγματα (δεν αφορά μόνο τα ονόματα των μεταβλητών και, παρόλο που αυτά είναι προφανώς πολύ σημαντικό) απαιτούν παρέμβαση εμπειρογνωμόνων. Το αν η διαδραστικότητα ανήκει στην decompiler ή σε ένα ξεχωριστό εργαλείο παραμένει ασαφής.
Με τη μετατροπή της σημασιολογίας των επιμέρους οδηγίες, και με τη χρήση ισχυρών τεχνικών, όπως η ενιαία τοποθέτηση dataflow Στατική ανάλυση, θα πρέπει να Boomerang (κυρίως) ανεξάρτητο από την ακριβή συμπεριφορά του compiler που συνέβη να πρέπει να χρησιμοποιηθεί. Βελτιστοποίηση δεν πρέπει να επηρεάσει τα αποτελέσματα. Ως εκ τούτου, ο στόχος είναι μια γενική decompiler.
|
Bookmark Τι είναι ένα Decompiler;
Τελευταίες θέσεις Blog
- SourceForge έναντι Freshmeat

