Jump to content

Reverse Engineering [GR]


Recommended Posts

Reverse engineering (ελλ. μηχανική αντιστροφής ή ανάστροφη μηχανίκευση), είναι μια μέθοδος που εφαρμόζεται για να μπορέσουμε να δούμε τον κώδικα με τον οπόιο είναι γραμμένο ένα εκτελέσιμο αρχείο.

 

Η μέθοδος αυτή πολύ χονδρικά θα μπορούσαμε να πούμε οτι είναι η αντίστροφη πορεία που πρέπει να ακολουθήσει κάποιος για να φτάσει εκεί που θέλει. Το reverse engineering είναι όρος που συναντάται πολύ συχνά σε διάφορες εφαρμοσμένες και θετικές επιστήμες, μια από αυτές και η πληροφορική.

 

Reverse engineering στην πληροφορική.

 

Όταν θέλουμε να φτιάξουμε μια εφαρμογή το πρώτο πράγμα που κάνουμε είναι να επιλέξουμε την γλώσσα προγραμματισμού με την οποία θα φτιάξουμε το πρόγραμμα και στην συνέχεια να αρχήσουμε την σύνθεση του προγράμματος γράφοντας κώδικα. Στο τέλος συνήθως κάνουμε και ένα compile την εφαρμογή μας ωστέ από κώδικας να μεταφραστεί σε εκτελέσιμο αρχείο (.exe) το οποίο με doubleclick θα μπορούμε να το τρέξουμε από τον υπολογιστή μας.

 

Έτσι λοιπόν έχοντας κάποιος στην κατοχή του ένα εκτελέσιμο αρχείο δεν μπορεί να γνωρίζει τον κώδικα. Με την μέθοδο της μηχανικής αντιστροφής ο σκοπός είναι έχοντας το εκτελέσιμο αρχείο να μπορέσουμε να φτάσουμε στον κώδικα με τον οποίο είναι γραμμένη η εφαρμογή. H συγκεκριμένη διαδικασία ονομάζεται και decompile (ελλ. αποσυμπίληση), δηλαδή η αντίστροφη πορεία του compile.

 

Reverse engineering και hacking.

 

Τα άτομα που ασχολούνται αποκλειστικά με αυτές τις τεχνικές αποκαλούνται και reversers ή reverse engineers. Πολλοί συγχέουν το reverse engineering με το hacking. Στην πραγματικότητα έχει έμμεση σχέση με αυτό, αλλά έχει άμεση σχέση με το cracking. Πράγματι είναι εφικτό με αυτή την μέθοδο να παρακαμφθούν διάφοροι μηχανισμοί προστασίας εμπορικών εφαρμογών ή ακόμη και να εντοπιστούν οι κωδικοί πρόσβασης και ενεργοποίησης.

 

Ακόμη εφόσον γίνει γνωστός ο κώδικας της εφαρμογής και βρεθούν και τα password πρόσβασης ο προγραμματιστής μπορεί να φτιάξει και ένα crack ή patch για το αντίστοιχο λογισμικό και να το διανέμει στο διαδύκτιο. Έτσι λοιπόν όλες οι εταιρίες κατασκευής λογισμικού πλέον λένε στις άδειες οτι απαγορεύεται το decompile ή reverse engineering. Αρκετές δε εταιρίες βάζουν και ειδικό password για να μην μπορεί κάποιος να έχει πρόσβαση στον κώδικα.

 

Reversing σε εφαρμογές γραμμένες με απλή Visual basic.

 

Η εφαρμογή του reverse engineering σε εκτελέσιμες εφαρμογές γραμμένες σε visual basic είναι η ευκολότερη υπόθεση για έναν reverser. Η visual basic είναι από τις μοναδικές γλώσσες προγραμματισμού που με την βοήθεια ενός decompiler από ένα απλό εκτελέσιμο αρχείο μπορούμε να πάρουμε άμεσα τον κώδικα με τον οποίον γράφτηκε με το πάτημα ενός κουμπιού. Ένας πολύ καλός decompiler για αυτό είναι ο VB decompiler. Υπάρχουν και περιπτώσεις που μπορούμε να πάρουμε άμεσα και κώδικα από εφαρμογές σε visual basic NET, παρά ταύτα δεν είναι πάντοτε εφικτό αυτό και πρέπει να ακολουθηθούν περισσότερα βήματα με ποιο σύνθετες διεργασίες.

 

Reversing σε εφαρμογές γραμμένες με άλλες γλώσσες προγραμματισμού.

 

Εδώ χρειάζονται περισσότερες γνώσεις και ενασχόληση με το reversing ωστέ να μπορέσουμε να φτάσουμε στον κώδικα με τον οποίο είναι γραμμένη μια εφαρμογή. Μάλιστα όσο μεγαλύτερο εύρος δυνατοτήτων έχει μια εφαρμογή σημαίνει οτι τόσο ποιο μεγάλος και περίπλοκος θα είναι ο κώδικας της εφαρμογής άρα θα πρέπει να ασχοληθούμε τόσο και περισσότερο. Οπότε η υπομονή και η επιμονή είναι βασικότατα στοιχεία για την επίτευξη των στόχων.

 

Το βασικό εργαλείο που χρησιμοποιούμε σε αυτές τις περιπτώσεις είναι ένας hex editor ένας debugger και ένας dissasembler. Μερικοί καλοί dissasemblers περιλαμβάνουν και hex editor καθώς και μερικούς decompilers αλλά και template editor. Στο διαδύκτιο θα βρείτε μερικούς decompilers και για άλλες γλώσσες προγραμματισμού εκτός της vb, όμως δύσκολα θα δώσουν απευθείας τον κώδικα μιας εφαρμογής. Επιπροσθέτως όταν κάποιος κατέχει μια εφαρμογή δεν μπορεί να γνωρίζει εξαρχής την γλώσσα με την οποία γράφτηκε άρα σχεδόν πάντοτε χρειαζόμαστε έναν πολύ καλό dissasembler που να τα περιλαμβάνει όλα.

 

Τα παραπάνω λογισμικά τα κάνουμε run όλα μαζί κατά το reversing γιατί θα χρειαστεί η χρήση όλων αυτών ωστέ να φτάσουμε στην εύρεση του κώδικα.

 

Ο debugger χρησιμεύει στην περίπτωση που θέλουμε να ελέγξουμε αν υπάρχει κάποιο λάθος στον κώδικα που έχουμε διαθέσιμο από την όλη διαδικασία. Αν υπάρχει λάθος πρέπει να ελέγξουμε μήπως κάναμε κάποιο λάθος βήμα.

 

Ο Hex editor μας βοηθάει να δούμε ένα αρχείο που θα επιλέξουμε σε δεκαεξαδική μορφή, άρα μετατρέπει την διαδική μορφή που είναι το αρχείο σε δεκαεξαδική, αυτό είναι σημαντικό διότι κάθε τετράδα αριθμών στο δεκαεξαδικό σύστημα αποτελεί χονδρικά και μια εντολή γραμμένη σε γλώσσα assembly. Κατ΄αυτόν τον τρόπο είναι εφικτό να καταλάβουμε την βασική δομή με την οποία είναι γραμμένη μια εφαρμογή αυτό θα γίνει με τον dissasembler.

 

O dissasembler λοιπόν κάνει την σημαντικότερη δουλειά, μας μετατρέπει έναν binary κώδικα σε εντολές. Ο binary κώδικας είναι λ.χ ο κώδικας σε 16-δική μορφή που πήραμε από τον hex editor. Έτσι φτάνουμε σχεδόν στον τελικό στόχο.

 

Όμως δεν τελειώσαμε καθώς πάντοτε υπάρχουν και κομμάτια κώδικα αμετάφραστα. Εκεί είναι λοιπόν που πρέπει να εφαρμόσουμε τις γνώσεις μας και μέσω δοκιμών με διάφορες μεταβλητές και με τον debugger να βρούμε τα κομμάτια του κώδικα που λείπουν.

 

Στο παραπάνω κείμενο έδωσα κάποιες πολύ βασικές πληροφορίες, στην πραγματικότητα το reverse engineering είναι εξαιρετικά ποιο πολύπλοκο και δεν εφαρμόζεται μόνο για hacking cracking κτλπ αλλά και για άλλες εργασίες που μπορούν να προσφέρουν περισσότερη άνεση και ευχρηστία σε κάποιον ο οποίος χρησιμοποιεί μια εφαρμογή κλειστού κώδικα και δεν τον ικανοποιεί απολύτος.

 

Πηγή: Ελληνική Χάκινγκ Σκηνή

Link to comment
Share on other sites

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...