mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/reversing/reversing-tools-basic-methods/cheat-engine.md
This commit is contained in:
parent
80a0a08e3e
commit
1cb4e802be
@ -18,19 +18,19 @@
|
|||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
Μπορείτε επίσης να ελέγξετε το κουτάκι για **να σταματήσετε το παιχνίδι κατά τη σάρωση της μνήμης**:
|
Μπορείτε επίσης να ελέγξετε το κουτάκι για να **σταματήσετε το παιχνίδι ενώ σκανάρετε τη μνήμη**:
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
### Συντομεύσεις
|
### Συντομεύσεις
|
||||||
|
|
||||||
Στο _**Edit --> Settings --> Hotkeys**_ μπορείτε να ορίσετε διαφορετικές **συντομεύσεις** για διαφορετικούς σκοπούς όπως **να σταματήσετε** το **παιχνίδι** (το οποίο είναι πολύ χρήσιμο αν σε κάποια στιγμή θέλετε να σαρώσετε τη μνήμη). Διαθέσιμες είναι και άλλες επιλογές:
|
Στο _**Edit --> Settings --> Hotkeys**_ μπορείτε να ορίσετε διαφορετικές **συντομεύσεις** για διαφορετικούς σκοπούς όπως **σταμάτημα** του **παιχνιδιού** (το οποίο είναι πολύ χρήσιμο αν κάποια στιγμή θέλετε να σκανάρετε τη μνήμη). Διαθέσιμες είναι και άλλες επιλογές:
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
## Τροποποίηση της τιμής
|
## Τροποποίηση της τιμής
|
||||||
|
|
||||||
Μόλις **βρείτε** πού είναι η **τιμή** που ψάχνετε (περισσότερα για αυτό στα επόμενα βήματα) μπορείτε να **την τροποποιήσετε** κάνοντας διπλό κλικ πάνω της, και στη συνέχεια διπλό κλικ στην τιμή της:
|
Μόλις **βρείτε** πού είναι η **τιμή** που ψάχνετε (περισσότερα γι' αυτό στα επόμενα βήματα) μπορείτε να **την τροποποιήσετε** κάνοντας διπλό κλικ πάνω της, και στη συνέχεια διπλό κλικ στην τιμή της:
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
@ -42,7 +42,7 @@
|
|||||||
|
|
||||||
## Αναζητώντας την τιμή
|
## Αναζητώντας την τιμή
|
||||||
|
|
||||||
Έτσι, θα υποθέσουμε ότι υπάρχει μια σημαντική τιμή (όπως η ζωή του χρήστη σας) που θέλετε να βελτιώσετε, και ψάχνετε για αυτή την τιμή στη μνήμη)
|
Έτσι, θα υποθέσουμε ότι υπάρχει μια σημαντική τιμή (όπως η ζωή του χρήστη σας) που θέλετε να βελτιώσετε, και ψάχνετε αυτή την τιμή στη μνήμη)
|
||||||
|
|
||||||
### Μέσω μιας γνωστής αλλαγής
|
### Μέσω μιας γνωστής αλλαγής
|
||||||
|
|
||||||
@ -90,7 +90,7 @@ _Αν έχετε ακόμα πολλές τιμές, κάντε κάτι για
|
|||||||
Η **πρώτη επιλογή** είναι χρήσιμη για να γνωρίζετε ποιες **μέρη** του **κώδικα** **χρησιμοποιούν** αυτή τη **διεύθυνση** (που είναι χρήσιμο για περισσότερα πράγματα όπως **να γνωρίζετε πού μπορείτε να τροποποιήσετε τον κώδικα** του παιχνιδιού).\
|
Η **πρώτη επιλογή** είναι χρήσιμη για να γνωρίζετε ποιες **μέρη** του **κώδικα** **χρησιμοποιούν** αυτή τη **διεύθυνση** (που είναι χρήσιμο για περισσότερα πράγματα όπως **να γνωρίζετε πού μπορείτε να τροποποιήσετε τον κώδικα** του παιχνιδιού).\
|
||||||
Η **δεύτερη επιλογή** είναι πιο **συγκεκριμένη**, και θα είναι πιο χρήσιμη σε αυτή την περίπτωση καθώς μας ενδιαφέρει να γνωρίζουμε **από πού γράφεται αυτή η τιμή**.
|
Η **δεύτερη επιλογή** είναι πιο **συγκεκριμένη**, και θα είναι πιο χρήσιμη σε αυτή την περίπτωση καθώς μας ενδιαφέρει να γνωρίζουμε **από πού γράφεται αυτή η τιμή**.
|
||||||
|
|
||||||
Μόλις επιλέξετε μία από αυτές τις επιλογές, ο **debugger** θα **συνδεθεί** με το πρόγραμμα και θα εμφανιστεί ένα νέο **κενό παράθυρο**. Τώρα, **παίξτε** το **παιχνίδι** και **τροποποιήστε** αυτή την **τιμή** (χωρίς να επανεκκινήσετε το παιχνίδι). Το **παράθυρο** θα πρέπει να **γεμίσει** με τις **διευθύνσεις** που **τροποποιούν** την **τιμή**:
|
Μόλις επιλέξετε μία από αυτές τις επιλογές, ο **debugger** θα **συνδεθεί** με το πρόγραμμα και θα εμφανιστεί ένα νέο **κενό παράθυρο**. Τώρα, **παίξτε** το **παιχνίδι** και **τροποποιήστε** αυτή τη **τιμή** (χωρίς να επανεκκινήσετε το παιχνίδι). Το **παράθυρο** θα πρέπει να είναι **γεμάτο** με τις **διευθύνσεις** που **τροποποιούν** την **τιμή**:
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ _Αν έχετε ακόμα πολλές τιμές, κάντε κάτι για
|
|||||||
|
|
||||||
### Τυχαία διεύθυνση μνήμης - Εύρεση του δείκτη
|
### Τυχαία διεύθυνση μνήμης - Εύρεση του δείκτη
|
||||||
|
|
||||||
Ακολουθώντας τα προηγούμενα βήματα, βρείτε πού βρίσκεται η τιμή που σας ενδιαφέρει. Στη συνέχεια, χρησιμοποιώντας "**Find out what writes to this address**" ανακαλύψτε ποια διεύθυνση γράφει αυτή την τιμή και κάντε διπλό κλικ πάνω της για να αποκτήσετε την προβολή αποσυναρμολόγησης:
|
Ακολουθώντας τα προηγούμενα βήματα, βρείτε πού βρίσκεται η τιμή που σας ενδιαφέρει. Στη συνέχεια, χρησιμοποιώντας "**Find out what writes to this address**" ανακαλύψτε ποια διεύθυνση γράφει αυτή την τιμή και κάντε διπλό κλικ πάνω της για να αποκτήσετε την προβολή disassembly:
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ _Αν έχετε ακόμα πολλές τιμές, κάντε κάτι για
|
|||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
(Σημειώστε πώς η πρώτη "Διεύθυνση" συμπληρώνεται αυτόματα από τη διεύθυνση του δείκτη που εισάγετε)
|
(Σημειώστε πώς η πρώτη "Διεύθυνση" συμπληρώνεται αυτόματα από τη διεύθυνση δείκτη που εισάγετε)
|
||||||
|
|
||||||
Κάντε κλικ στο OK και θα δημιουργηθεί ένας νέος δείκτης:
|
Κάντε κλικ στο OK και θα δημιουργηθεί ένας νέος δείκτης:
|
||||||
|
|
||||||
@ -137,7 +137,7 @@ _Αν έχετε ακόμα πολλές τιμές, κάντε κάτι για
|
|||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
Κάντε κλικ στο Show disassembler για να αποκτήσετε τον **αποσυναρμολογημένο κώδικα**.\
|
Κάντε κλικ στο Show disassembler για να αποκτήσετε τον **κώδικα disassemble**.\
|
||||||
Στη συνέχεια, κάντε κλικ **CTRL+a** για να καλέσετε το παράθυρο Auto assemble και επιλέξτε _**Template --> Code Injection**_
|
Στη συνέχεια, κάντε κλικ **CTRL+a** για να καλέσετε το παράθυρο Auto assemble και επιλέξτε _**Template --> Code Injection**_
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
@ -150,14 +150,68 @@ _Αν έχετε ακόμα πολλές τιμές, κάντε κάτι για
|
|||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
Έτσι, εισάγετε τον νέο κώδικα assembly στην ενότητα "**newmem**" και αφαιρέστε τον αρχικό κώδικα από την "**originalcode**" αν δεν θέλετε να εκτελείται. Σε αυτό το παράδειγμα, ο εισαγόμενος κώδικας θα προσθέσει 2 πόντους αντί να αφαιρεί 1:
|
Έτσι, εισάγετε τον νέο κώδικα assembly στην ενότητα "**newmem**" και αφαιρέστε τον αρχικό κώδικα από την "**originalcode**" αν δεν θέλετε να εκτελείται. Σε αυτό το παράδειγμα, ο εισαχθείς κώδικας θα προσθέσει 2 πόντους αντί να αφαιρεί 1:
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
**Κάντε κλικ στο execute και έτσι ο κώδικάς σας θα πρέπει να εισαχθεί στο πρόγραμμα αλλάζοντας τη συμπεριφορά της λειτουργικότητας!**
|
**Κάντε κλικ στο execute και έτσι ο κώδικάς σας θα πρέπει να εισαχθεί στο πρόγραμμα αλλάζοντας τη συμπεριφορά της λειτουργικότητας!**
|
||||||
|
|
||||||
|
## Προχωρημένες δυνατότητες στο Cheat Engine 7.x (2023-2025)
|
||||||
|
|
||||||
|
Το Cheat Engine συνεχίζει να εξελίσσεται από την έκδοση 7.0 και έχουν προστεθεί πολλές δυνατότητες ποιότητας ζωής και *offensive-reversing* που είναι εξαιρετικά χρήσιμες κατά την ανάλυση σύγχρονου λογισμικού (και όχι μόνο παιχνιδιών!). Παρακάτω είναι ένας **πολύ συμπυκνωμένος οδηγός πεδίου** για τις προσθήκες που πιθανότατα θα χρησιμοποιήσετε κατά τη διάρκεια εργασιών red-team/CTF.
|
||||||
|
|
||||||
|
### Βελτιώσεις Pointer Scanner 2
|
||||||
|
* `Pointers must end with specific offsets` και ο νέος **Deviation** slider (≥7.4) μειώνουν σημαντικά τα ψευδώς θετικά όταν ξανασκανάρετε μετά από μια ενημέρωση. Χρησιμοποιήστε το μαζί με τη σύγκριση multi-map (`.PTR` → *Compare results with other saved pointer map*) για να αποκτήσετε έναν **μοναδικό ανθεκτικό βασικό δείκτη** σε μόλις λίγα λεπτά.
|
||||||
|
* Συντόμευση μαζικού φίλτρου: μετά την πρώτη σάρωση πατήστε `Ctrl+A → Space` για να επισημάνετε τα πάντα, στη συνέχεια `Ctrl+I` (αντίστροφα) για να αποεπιλέξετε διευθύνσεις που απέτυχαν στη σάρωση.
|
||||||
|
|
||||||
|
### Ultimap 3 – Intel PT tracing
|
||||||
|
*Από την 7.5, το παλιό Ultimap επανασχεδιάστηκε πάνω από το **Intel Processor-Trace (IPT)***. Αυτό σημαίνει ότι μπορείτε τώρα να καταγράφετε *κάθε* κλάδο που παίρνει ο στόχος **χωρίς single-stepping** (μόνο σε user-mode, δεν θα ενεργοποιήσει τις περισσότερες αντι-debug gadgets).
|
||||||
|
```
|
||||||
|
Memory View → Tools → Ultimap 3 → check «Intel PT»
|
||||||
|
Select number of buffers → Start
|
||||||
|
```
|
||||||
|
Μετά από μερικά δευτερόλεπτα, σταματήστε την καταγραφή και **δεξί κλικ → Αποθήκευση λίστας εκτέλεσης σε αρχείο**. Συνδυάστε τις διευθύνσεις κλάδου με μια συνεδρία `Find out what addresses this instruction accesses` για να εντοπίσετε hotspots λογικής παιχνιδιού υψηλής συχνότητας εξαιρετικά γρήγορα.
|
||||||
|
|
||||||
|
### Πρότυπα `jmp` / auto-patch 1 byte
|
||||||
|
Η έκδοση 7.5 εισήγαγε ένα *one-byte* JMP stub (0xEB) που εγκαθιστά έναν χειριστή SEH και τοποθετεί ένα INT3 στην αρχική τοποθεσία. Δημιουργείται αυτόματα όταν χρησιμοποιείτε **Auto Assembler → Template → Code Injection** σε εντολές που δεν μπορούν να διορθωθούν με ένα 5-byte σχετικό άλμα. Αυτό καθιστά δυνατές τις “σφιχτές” συνδέσεις μέσα σε πακεταρισμένες ή περιορισμένες σε μέγεθος ρουτίνες.
|
||||||
|
|
||||||
|
### Stealth επιπέδου Kernel με DBVM (AMD & Intel)
|
||||||
|
*DBVM* είναι ο ενσωματωμένος Type-2 hypervisor του CE. Οι πρόσφατες εκδόσεις πρόσθεσαν τελικά **AMD-V/SVM υποστήριξη** ώστε να μπορείτε να εκτελέσετε `Driver → Load DBVM` σε hosts Ryzen/EPYC. Το DBVM σας επιτρέπει:
|
||||||
|
1. Δημιουργία υλικών σημείων διακοπής αόρατων σε ελέγχους Ring-3/anti-debug.
|
||||||
|
2. Ανάγνωση/γραφή περιοχών μνήμης πυρήνα που είναι σελίδες ή προστατευμένες ακόμη και όταν ο οδηγός χρήστη είναι απενεργοποιημένος.
|
||||||
|
3. Εκτέλεση παρακάμψεων επιθέσεων χρονισμού χωρίς VM-EXIT (π.χ. ερώτημα `rdtsc` από τον hypervisor).
|
||||||
|
|
||||||
|
**Συμβουλή:** Το DBVM θα αρνηθεί να φορτώσει όταν είναι ενεργοποιημένο το HVCI/Memory-Integrity στα Windows 11 → απενεργοποιήστε το ή εκκινήστε έναν αφιερωμένο VM-host.
|
||||||
|
|
||||||
|
### Απομακρυσμένη / διαλειτουργική αποσφαλμάτωση με **ceserver**
|
||||||
|
Το CE τώρα περιλαμβάνει μια πλήρη αναθεώρηση του *ceserver* και μπορεί να συνδεθεί μέσω TCP σε **Linux, Android, macOS & iOS** στόχους. Ένα δημοφιλές fork ενσωματώνει το *Frida* για να συνδυάσει τη δυναμική εργαλειακή υποστήριξη με το GUI του CE – ιδανικό όταν χρειάζεστε να διορθώσετε παιχνίδια Unity ή Unreal που τρέχουν σε τηλέφωνο:
|
||||||
|
```
|
||||||
|
# on the target (arm64)
|
||||||
|
./ceserver_arm64 &
|
||||||
|
# on the analyst workstation
|
||||||
|
adb forward tcp:52736 tcp:52736 # (or ssh tunnel)
|
||||||
|
Cheat Engine → "Network" icon → Host = localhost → Connect
|
||||||
|
```
|
||||||
|
Για τη γέφυρα Frida δείτε `bb33bb/frida-ceserver` στο GitHub.
|
||||||
|
|
||||||
|
### Άλλα αξιοσημείωτα εργαλεία
|
||||||
|
* **Patch Scanner** (MemView → Tools) – ανιχνεύει απροσδόκητες αλλαγές κώδικα σε εκτελέσιμες ενότητες; χρήσιμο για ανάλυση κακόβουλου λογισμικού.
|
||||||
|
* **Structure Dissector 2** – drag-an-address → `Ctrl+D`, στη συνέχεια *Guess fields* για αυτόματη αξιολόγηση C-δομών.
|
||||||
|
* **.NET & Mono Dissector** – βελτιωμένη υποστήριξη παιχνιδιών Unity; καλέστε μεθόδους απευθείας από την κονσόλα CE Lua.
|
||||||
|
* **Big-Endian custom types** – αντίστροφη σάρωση/επεξεργασία byte order (χρήσιμο για κονσόλες emulator και buffers δικτυακών πακέτων).
|
||||||
|
* **Autosave & tabs** για παράθυρα AutoAssembler/Lua, συν `reassemble()` για επανασύνθεση πολλαπλών γραμμών εντολών.
|
||||||
|
|
||||||
|
### Σημειώσεις εγκατάστασης & OPSEC (2024-2025)
|
||||||
|
* Ο επίσημος εγκαταστάτης είναι τυλιγμένος με InnoSetup **ad-offers** (`RAV` κ.λπ.). **Πάντα κάντε κλικ στο *Decline*** *ή συντάξτε από πηγή* για να αποφύγετε PUPs. Οι AVs θα επισημάνουν ακόμα το `cheatengine.exe` ως *HackTool*, κάτι που είναι αναμενόμενο.
|
||||||
|
* Σύγχρονοι οδηγοί ανίχνευσης απάτης (EAC/Battleye, ACE-BASE.sys, mhyprot2.sys) ανιχνεύουν την κλάση παραθύρου του CE ακόμα και όταν έχει μετονομαστεί. Εκτελέστε την αντίγραφο αναστροφής σας **μέσα σε μια αναλώσιμη VM** ή μετά την απενεργοποίηση του δικτυακού παιχνιδιού.
|
||||||
|
* Εάν χρειάζεστε μόνο πρόσβαση σε user-mode επιλέξτε **`Settings → Extra → Kernel mode debug = off`** για να αποφύγετε τη φόρτωση του μη υπογεγραμμένου οδηγού του CE που μπορεί να προκαλέσει BSOD σε Windows 11 24H2 Secure-Boot.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## **Αναφορές**
|
## **Αναφορές**
|
||||||
|
|
||||||
- **Cheat Engine tutorial, ολοκληρώστε το για να μάθετε πώς να ξεκινήσετε με το Cheat Engine**
|
- [Cheat Engine 7.5 release notes (GitHub)](https://github.com/cheat-engine/cheat-engine/releases/tag/7.5)
|
||||||
|
- [frida-ceserver cross-platform bridge](https://github.com/bb33bb/frida-ceserver-Mac-and-IOS)
|
||||||
|
- **Cheat Engine tutorial, complete it to learn how to start with Cheat Engine**
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user