Jump to content

Recommended Posts

Posted

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 κτλπ αλλά και για άλλες εργασίες που μπορούν να προσφέρουν περισσότερη άνεση και ευχρηστία σε κάποιον ο οποίος χρησιμοποιεί μια εφαρμογή κλειστού κώδικα και δεν τον ικανοποιεί απολύτος.

 

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

  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Posts

    • I'll give you my wallet if you want, haha
    • To make up for some of the waiting time we’re hosting a 3v3 Tournament on open Beta, and this time we’re raising the stakes with a $1,300 prize pool 💰   🏆 PRIZE POOL BREAKDOWN (Over 2000$ Worth of prices total)   🥇 1st Place — $700 🥈 2nd Place —$300 🥉 3rd Place — $200 🏅 4th Place — $100  5th -6th Place - $100 in Gold Coins each    All Participating Teams: $50 in Gold!   All Prices will be Paid out instantly after the tour, no waiting time and conditions. This is not simply a marketing move, we want to give back to the community.   📅 Date: Wednesday 06.05.2026 ⏰ Time: 20:00 Central European Timezone (Berlin) 📍Format: 3v3   ⚔️Why join? Cash Prices for top 4 and rewards for all participants Payments to winners sent out straight after the tournament - No waiting time or rules that you have to play live server to obtain the reward. Clean format, smooth matches, and solid prize pool and a chance to experience our brand new files   📝How to join: Form your 3-player team Group Leader Sign up here: ⁠📍・3v3-tour-registration (Include Name of Group, Name of Group Leader)   Be ready on match day!     A separate post with rules for the tournament and class setups will follow shortly.   Tag your teammates, lock in your roster, and get ready to compete. We'll be happy to see you on the OBT!   💬 Questions? Ask in ⁠🎫・ticket or send us a message   See you on L2Dark! 😏   Discord: https://discord.gg/FAJwnFpb8M
    • You should check if that condition is supported by your current sources. You can find this in  DocumentBase#parsePlayerCondition If it isnt there and you want to follow the same pattern of the other item conditions, create a custom condition to parse the classId (or multiple class ids) (there are examples to copy the code). Alternatively, you can create your own condition handler. Your condition should look like this: <cond msgId="1518"> <player classId="ADVENTURER,PALADIN" /> </cond> or <cond msgId="1518"> <player classId="93,5" /> </cond>  
    • it's Interlude client forgot to mention
    • idk if acis have this option, but you can put inside item smth like that atleast on H5         <cond msgId="1518">             <player class_id_restriction="93, 101, 108, 117" /> <!-- Dagger Masters -->         </cond>
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..