Cheat Engine
Last updated
Last updated
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Cheat Engine είναι ένα χρήσιμο πρόγραμμα για να βρείτε πού αποθηκεύονται σημαντικές τιμές μέσα στη μνήμη ενός τρέχοντος παιχνιδιού και να τις αλλάξετε. Όταν το κατεβάσετε και το εκτελέσετε, σας παρουσιάζεται ένα tutorial για το πώς να χρησιμοποιήσετε το εργαλείο. Αν θέλετε να μάθετε πώς να χρησιμοποιήσετε το εργαλείο, συνιστάται να το ολοκληρώσετε.
Αυτό το εργαλείο είναι πολύ χρήσιμο για να βρείτε πού αποθηκεύεται κάποια τιμή (συνήθως ένας αριθμός) στη μνήμη ενός προγράμματος. Συνήθως οι αριθμοί αποθηκεύονται σε 4bytes μορφή, αλλά μπορείτε επίσης να τους βρείτε σε double ή float μορφές, ή μπορεί να θέλετε να ψάξετε για κάτι διαφορετικό από έναν αριθμό. Για αυτό το λόγο πρέπει να είστε σίγουροι ότι επιλέγετε αυτό που θέλετε να ψάξετε:
Επίσης μπορείτε να υποδείξετε διαφορετικούς τύπους αναζητήσεων:
Μπορείτε επίσης να ελέγξετε το κουτάκι για να σταματήσετε το παιχνίδι ενώ σκανάρετε τη μνήμη:
Στο Edit --> Settings --> Hotkeys μπορείτε να ορίσετε διαφορετικές συντομεύσεις για διαφορετικούς σκοπούς όπως σταμάτημα του παιχνιδιού (το οποίο είναι πολύ χρήσιμο αν σε κάποια στιγμή θέλετε να σκανάρετε τη μνήμη). Διαθέσιμες είναι και άλλες επιλογές:
Μόλις βρείτε πού είναι η τιμή που ψάχνετε (περισσότερα για αυτό στα επόμενα βήματα) μπορείτε να την τροποποιήσετε κάνοντας διπλό κλικ πάνω της, και στη συνέχεια κάνοντας διπλό κλικ στην τιμή της:
Και τελικά σημειώνοντας το τσεκ για να γίνει η τροποποίηση στη μνήμη:
Η αλλαγή στη μνήμη θα εφαρμοστεί αμέσως (σημειώστε ότι μέχρι το παιχνίδι να χρησιμοποιήσει ξανά αυτή την τιμή, η τιμή δεν θα ενημερωθεί στο παιχνίδι).
Έτσι, θα υποθέσουμε ότι υπάρχει μια σημαντική τιμή (όπως η ζωή του χρήστη σας) που θέλετε να βελτιώσετε, και ψάχνετε για αυτή την τιμή στη μνήμη)
Υποθέτοντας ότι ψάχνετε για την τιμή 100, εκτελείτε μια σάρωση ψάχνοντας για αυτή την τιμή και βρίσκετε πολλές συμπτώσεις:
Στη συνέχεια, κάνετε κάτι ώστε η τιμή να αλλάξει, και σταματάτε το παιχνίδι και εκτελείτε μια επόμενη σάρωση:
Το Cheat Engine θα ψάξει για τις τιμές που πήγαν από 100 στη νέα τιμή. Συγχαρητήρια, βρήκατε τη διεύθυνση της τιμής που ψάχνατε, μπορείτε τώρα να την τροποποιήσετε. Αν έχετε ακόμα πολλές τιμές, κάντε κάτι για να τροποποιήσετε ξανά αυτή την τιμή, και εκτελέστε άλλη μια "επόμενη σάρωση" για να φιλτράρετε τις διευθύνσεις.
Στο σενάριο που δεν γνωρίζετε την τιμή αλλά ξέρετε πώς να την κάνετε να αλλάξει (και ακόμη και την τιμή της αλλαγής) μπορείτε να ψάξετε για τον αριθμό σας.
Έτσι, ξεκινήστε εκτελώντας μια σάρωση τύπου "Άγνωστη αρχική τιμή":
Στη συνέχεια, κάντε την τιμή να αλλάξει, υποδείξτε πώς η τιμή αλλάχθηκε (στην περίπτωσή μου μειώθηκε κατά 1) και εκτελέστε μια επόμενη σάρωση:
Θα παρουσιαστούν όλες οι τιμές που τροποποιήθηκαν με τον επιλεγμένο τρόπο:
Μόλις βρείτε την τιμή σας, μπορείτε να την τροποποιήσετε.
Σημειώστε ότι υπάρχουν πολλές πιθανές αλλαγές και μπορείτε να κάνετε αυτά τα βήματα όσες φορές θέλετε για να φιλτράρετε τα αποτελέσματα:
Μέχρι τώρα μάθαμε πώς να βρούμε μια διεύθυνση που αποθηκεύει μια τιμή, αλλά είναι πολύ πιθανό ότι σε διαφορετικές εκτελέσεις του παιχνιδιού αυτή η διεύθυνση είναι σε διαφορετικά μέρη της μνήμης. Έτσι, ας ανακαλύψουμε πώς να βρίσκουμε πάντα αυτή τη διεύθυνση.
Χρησιμοποιώντας μερικά από τα αναφερόμενα κόλπα, βρείτε τη διεύθυνση όπου το τρέχον παιχνίδι σας αποθηκεύει την σημαντική τιμή. Στη συνέχεια (σταματώντας το παιχνίδι αν το επιθυμείτε) κάντε δεξί κλικ στη βρεθείσα διεύθυνση και επιλέξτε "Βρείτε τι έχει πρόσβαση σε αυτή τη διεύθυνση" ή "Βρείτε τι γράφει σε αυτή τη διεύθυνση":
Η πρώτη επιλογή είναι χρήσιμη για να γνωρίζετε ποιες μέρη του κώδικα χρησιμοποιούν αυτή τη διεύθυνση (το οποίο είναι χρήσιμο για περισσότερα πράγματα όπως να γνωρίζετε πού μπορείτε να τροποποιήσετε τον κώδικα του παιχνιδιού). Η δεύτερη επιλογή είναι πιο συγκεκριμένη, και θα είναι πιο χρήσιμη σε αυτή την περίπτωση καθώς μας ενδιαφέρει να γνωρίζουμε από πού γράφεται αυτή η τιμή.
Μόλις επιλέξετε μία από αυτές τις επιλογές, ο debugger θα συνδεθεί με το πρόγραμμα και θα εμφανιστεί ένα νέο κενό παράθυρο. Τώρα, παίξτε το παιχνίδι και τροποποιήστε αυτή την τιμή (χωρίς να επανεκκινήσετε το παιχνίδι). Το παράθυρο θα πρέπει να γεμίσει με τις διευθύνσεις που τροποποιούν την τιμή:
Τώρα που βρήκατε τη διεύθυνση που τροποποιεί την τιμή μπορείτε να τροποποιήσετε τον κώδικα κατά βούληση (το Cheat Engine σας επιτρέπει να το τροποποιήσετε για NOPs πολύ γρήγορα):
Έτσι, μπορείτε τώρα να το τροποποιήσετε ώστε ο κώδικας να μην επηρεάζει τον αριθμό σας, ή να επηρεάζει πάντα με θετικό τρόπο.
Ακολουθώντας τα προηγούμενα βήματα, βρείτε πού βρίσκεται η τιμή που σας ενδιαφέρει. Στη συνέχεια, χρησιμοποιώντας "Βρείτε τι γράφει σε αυτή τη διεύθυνση" ανακαλύψτε ποια διεύθυνση γράφει αυτή την τιμή και κάντε διπλό κλικ πάνω της για να αποκτήσετε την προβολή αποσυναρμολόγησης:
Στη συνέχεια, εκτελέστε μια νέα σάρωση ψάχνοντας για την τιμή hex μεταξύ "[]" (η τιμή του $edx σε αυτή την περίπτωση):
(Αν εμφανιστούν πολλές, συνήθως χρειάζεστε την μικρότερη διεύθυνση) Τώρα, έχουμε βρει τον δείκτη που θα τροποποιεί την τιμή που μας ενδιαφέρει.
Κάντε κλικ στο "Προσθήκη διεύθυνσης χειροκίνητα":
Τώρα, κάντε κλικ στο κουτάκι "Δείκτης" και προσθέστε τη βρεθείσα διεύθυνση στο πλαίσιο κειμένου (σε αυτό το σενάριο, η βρεθείσα διεύθυνση στην προηγούμενη εικόνα ήταν "Tutorial-i386.exe"+2426B0):
(Σημειώστε πώς η πρώτη "Διεύθυνση" συμπληρώνεται αυτόματα από τη διεύθυνση δείκτη που εισάγετε)
Κάντε κλικ στο OK και θα δημιουργηθεί ένας νέος δείκτης:
Τώρα, κάθε φορά που τροποποιείτε αυτή την τιμή, τροποποιείτε την σημαντική τιμή ακόμα κι αν η διεύθυνση μνήμης όπου βρίσκεται η τιμή είναι διαφορετική.
Η εισαγωγή κώδικα είναι μια τεχνική όπου εισάγετε ένα κομμάτι κώδικα στη διαδικασία στόχο, και στη συνέχεια ανακατευθύνετε την εκτέλεση του κώδικα ώστε να περάσει από τον δικό σας γραμμένο κώδικα (όπως να σας δίνει πόντους αντί να τους αφαιρεί).
Έτσι, φανταστείτε ότι έχετε βρει τη διεύθυνση που αφαιρεί 1 από τη ζωή του παίκτη σας:
Κάντε κλικ στο Show disassembler για να αποκτήσετε τον αποσυναρμολογημένο κώδικα. Στη συνέχεια, κάντε κλικ CTRL+a για να καλέσετε το παράθυρο Auto assemble και επιλέξτε Template --> Code Injection
Συμπληρώστε τη διεύθυνση της εντολής που θέλετε να τροποποιήσετε (αυτό συνήθως συμπληρώνεται αυτόματα):
Θα παραχθεί ένα πρότυπο:
Έτσι, εισάγετε τον νέο σας κώδικα assembly στην ενότητα "newmem" και αφαιρέστε τον αρχικό κώδικα από την "originalcode" αν δεν θέλετε να εκτελείται**.** Σε αυτό το παράδειγμα, ο εισαγόμενος κώδικας θα προσθέσει 2 πόντους αντί να αφαιρεί 1:
Κάντε κλικ στην εκτέλεση και έτσι ο κώδικάς σας θα πρέπει να εισαχθεί στο πρόγραμμα αλλάζοντας τη συμπεριφορά της λειτουργικότητας!
Tutorial Cheat Engine, ολοκληρώστε το για να μάθετε πώς να ξεκινήσετε με το Cheat Engine