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
152a7230f6
commit
63d1104076
@ -34,7 +34,7 @@ Gdy **znajdziesz**, gdzie jest **wartość**, której **szukasz** (więcej na te
|
||||
|
||||
.png>)
|
||||
|
||||
A na koniec **zaznaczając pole**, aby wprowadzić modyfikację w pamięci:
|
||||
I w końcu **zaznaczając pole**, aby wprowadzić modyfikację w pamięci:
|
||||
|
||||
.png>)
|
||||
|
||||
@ -65,7 +65,7 @@ Zacznij od przeprowadzenia skanowania typu "**Nieznana początkowa wartość**":
|
||||
|
||||
.png>)
|
||||
|
||||
Następnie zmień wartość, wskaż **jak** **wartość** **się zmieniła** (w moim przypadku zmniejszyła się o 1) i przeprowadź **następne skanowanie**:
|
||||
Następnie, zmień wartość, wskaż **jak** **wartość** **się zmieniła** (w moim przypadku zmniejszyła się o 1) i przeprowadź **następne skanowanie**:
|
||||
|
||||
.png>)
|
||||
|
||||
@ -79,28 +79,28 @@ Zauważ, że istnieje **wiele możliwych zmian** i możesz powtarzać te **kroki
|
||||
|
||||
.png>)
|
||||
|
||||
### Losowy adres pamięci - Znajdowanie kodu
|
||||
### Losowy adres pamięci - Znalezienie kodu
|
||||
|
||||
Do tej pory nauczyliśmy się, jak znaleźć adres przechowujący wartość, ale jest bardzo prawdopodobne, że w **różnych wykonaniach gry ten adres znajduje się w różnych miejscach pamięci**. Więc dowiedzmy się, jak zawsze znaleźć ten adres.
|
||||
|
||||
Używając niektórych z wymienionych sztuczek, znajdź adres, w którym twoja aktualna gra przechowuje ważną wartość. Następnie (zatrzymując grę, jeśli chcesz) kliknij prawym przyciskiem myszy na znaleziony **adres** i wybierz "**Dowiedz się, co uzyskuje dostęp do tego adresu**" lub "**Dowiedz się, co zapisuje do tego adresu**":
|
||||
Używając niektórych z wymienionych sztuczek, znajdź adres, w którym twoja aktualna gra przechowuje ważną wartość. Następnie (zatrzymując grę, jeśli chcesz) kliknij **prawym przyciskiem** na znaleziony **adres** i wybierz "**Dowiedz się, co uzyskuje dostęp do tego adresu**" lub "**Dowiedz się, co zapisuje do tego adresu**":
|
||||
|
||||
.png>)
|
||||
|
||||
**Pierwsza opcja** jest przydatna, aby wiedzieć, które **części** **kodu** **używają** tego **adresu** (co jest przydatne do innych rzeczy, takich jak **wiedza, gdzie możesz zmodyfikować kod** gry).\
|
||||
**Druga opcja** jest bardziej **specyficzna** i będzie bardziej pomocna w tym przypadku, ponieważ interesuje nas, **skąd ta wartość jest zapisywana**.
|
||||
|
||||
Gdy wybierzesz jedną z tych opcji, **debugger** zostanie **przyłączony** do programu, a nowe **puste okno** się pojawi. Teraz **graj** w **grę** i **zmodyfikuj** tę **wartość** (bez ponownego uruchamiania gry). **Okno** powinno być **wypełnione** **adresami**, które **zmieniają** **wartość**:
|
||||
Gdy wybierzesz jedną z tych opcji, **debugger** zostanie **przyłączony** do programu, a nowe **puste okno** się pojawi. Teraz, **graj** w **grę** i **zmodyfikuj** tę **wartość** (bez ponownego uruchamiania gry). **Okno** powinno być **wypełnione** **adresami**, które **zmieniają** **wartość**:
|
||||
|
||||
.png>)
|
||||
|
||||
Teraz, gdy znalazłeś adres, który zmienia wartość, możesz **zmodyfikować kod według własnego uznania** (Cheat Engine pozwala na szybkie modyfikowanie go na NOPs):
|
||||
Teraz, gdy znalazłeś adres, który zmienia wartość, możesz **zmodyfikować kod według własnego uznania** (Cheat Engine pozwala na szybkie modyfikowanie go na NOP):
|
||||
|
||||
.png>)
|
||||
|
||||
Możesz teraz zmodyfikować go tak, aby kod nie wpływał na twoją liczbę lub zawsze wpływał w pozytywny sposób.
|
||||
|
||||
### Losowy adres pamięci - Znajdowanie wskaźnika
|
||||
### Losowy adres pamięci - Znalezienie wskaźnika
|
||||
|
||||
Podążając za poprzednimi krokami, znajdź, gdzie znajduje się wartość, która cię interesuje. Następnie, używając "**Dowiedz się, co zapisuje do tego adresu**", dowiedz się, który adres zapisuje tę wartość i kliknij dwukrotnie, aby uzyskać widok disassembly:
|
||||
|
||||
@ -117,7 +117,7 @@ Kliknij na "**Dodaj adres ręcznie**":
|
||||
|
||||
.png>)
|
||||
|
||||
Następnie zaznacz pole "Wskaźnik" i dodaj znaleziony adres w polu tekstowym (w tym scenariuszu, znaleziony adres na poprzednim obrazie to "Tutorial-i386.exe"+2426B0):
|
||||
Teraz, zaznacz pole "Wskaźnik" i dodaj znaleziony adres w polu tekstowym (w tym scenariuszu, znaleziony adres na poprzednim obrazie to "Tutorial-i386.exe"+2426B0):
|
||||
|
||||
.png>)
|
||||
|
||||
@ -142,7 +142,7 @@ Następnie kliknij **CTRL+a**, aby wywołać okno Auto assemble i wybierz _**Tem
|
||||
|
||||
.png>)
|
||||
|
||||
Wypełnij **adres instrukcji, którą chcesz zmodyfikować** (zwykle jest to automatycznie wypełniane):
|
||||
Wypełnij **adres instrukcji, którą chcesz zmodyfikować** (zwykle jest to automatycznie wypełnione):
|
||||
|
||||
.png>)
|
||||
|
||||
@ -156,8 +156,62 @@ Wstaw swój nowy kod asemblera w sekcji "**newmem**" i usuń oryginalny kod z "*
|
||||
|
||||
**Kliknij na wykonaj i tak dalej, a twój kod powinien zostać wstrzyknięty do programu, zmieniając zachowanie funkcjonalności!**
|
||||
|
||||
## Zaawansowane funkcje w Cheat Engine 7.x (2023-2025)
|
||||
|
||||
Cheat Engine nadal ewoluował od wersji 7.0, a kilka funkcji poprawiających jakość życia i *ofensywnego odwracania* zostało dodanych, które są niezwykle przydatne podczas analizy nowoczesnego oprogramowania (i nie tylko gier!). Poniżej znajduje się **bardzo skondensowany przewodnik po polu** do dodatków, które najprawdopodobniej będziesz używać podczas pracy w red-team/CTF.
|
||||
|
||||
### Ulepszenia skanera wskaźników 2
|
||||
* `Wskaźniki muszą kończyć się na określonych offsetach` i nowy suwak **Odchylenie** (≥7.4) znacznie zmniejsza fałszywe pozytywy, gdy ponownie skanujesz po aktualizacji. Użyj go razem z porównaniem multi-map (`.PTR` → *Porównaj wyniki z inną zapisaną mapą wskaźników*), aby uzyskać **pojedynczy odporny wskaźnik bazowy** w zaledwie kilka minut.
|
||||
* Skrót do filtrowania zbiorczego: po pierwszym skanowaniu naciśnij `Ctrl+A → Spacja`, aby zaznaczyć wszystko, a następnie `Ctrl+I` (odwróć), aby odznaczyć adresy, które nie przeszły ponownego skanowania.
|
||||
|
||||
### Ultimap 3 – Śledzenie Intel PT
|
||||
*Od wersji 7.5 stary Ultimap został ponownie wdrożony na bazie **Intel Processor-Trace (IPT)***. Oznacza to, że teraz możesz rejestrować *wszystkie* gałęzie, które podejmuje cel **bez pojedynczego kroku** (tylko w trybie użytkownika, nie uruchomi większości gadżetów anty-debug).
|
||||
```
|
||||
Memory View → Tools → Ultimap 3 → check «Intel PT»
|
||||
Select number of buffers → Start
|
||||
```
|
||||
Po kilku sekundach zatrzymaj przechwytywanie i **kliknij prawym przyciskiem myszy → Zapisz listę wykonania do pliku**. Połącz adresy gałęzi z sesją `Find out what addresses this instruction accesses`, aby bardzo szybko zlokalizować miejsca o wysokiej częstotliwości logiki gry.
|
||||
|
||||
### Szablony `jmp` / auto-patch 1-bajtowe
|
||||
Wersja 7.5 wprowadziła *jedno-bajtowy* stub JMP (0xEB), który instaluje obsługę SEH i umieszcza INT3 w oryginalnej lokalizacji. Jest generowany automatycznie, gdy używasz **Auto Assembler → Template → Code Injection** na instrukcjach, które nie mogą być załatane za pomocą 5-bajtowego skoku względnego. Umożliwia to tworzenie „ciasnych” haków wewnątrz spakowanych lub ograniczonych rozmiarowo rutyn.
|
||||
|
||||
### Stealth na poziomie jądra z DBVM (AMD i Intel)
|
||||
*DBVM* to wbudowany w CE hipernadzorca typu 2. Ostatnie wersje w końcu dodały **wsparcie AMD-V/SVM**, dzięki czemu możesz uruchomić `Driver → Load DBVM` na hostach Ryzen/EPYC. DBVM pozwala ci:
|
||||
1. Tworzyć punkty przerwania sprzętowe niewidoczne dla kontroli Ring-3/anty-debug.
|
||||
2. Odczytywać/zapisywać pamięć jądra stronicowalną lub chronioną, nawet gdy sterownik w trybie użytkownika jest wyłączony.
|
||||
3. Wykonywać obejścia ataków czasowych bez VM-EXIT (np. zapytanie `rdtsc` z hipernadzorcy).
|
||||
|
||||
**Wskazówka:** DBVM odmówi załadowania, gdy HVCI/Memory-Integrity jest włączone w Windows 11 → wyłącz to lub uruchom dedykowanego hosta VM.
|
||||
|
||||
### Zdalne / międzyplatformowe debugowanie z **ceserver**
|
||||
CE teraz dostarcza pełne przepisanie *ceserver* i może łączyć się przez TCP z celami **Linux, Android, macOS i iOS**. Popularny fork integruje *Frida*, aby połączyć dynamiczną instrumentację z GUI CE – idealne, gdy musisz załatać gry Unity lub Unreal działające na telefonie:
|
||||
```
|
||||
# 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
|
||||
```
|
||||
Dla mostu Frida zobacz `bb33bb/frida-ceserver` na GitHubie.
|
||||
|
||||
### Inne godne uwagi dodatki
|
||||
* **Patch Scanner** (MemView → Tools) – wykrywa nieoczekiwane zmiany kodu w sekcjach wykonywalnych; przydatne do analizy złośliwego oprogramowania.
|
||||
* **Structure Dissector 2** – przeciągnij-adres → `Ctrl+D`, następnie *Guess fields* aby automatycznie ocenić struktury C.
|
||||
* **.NET & Mono Dissector** – poprawione wsparcie dla gier Unity; wywołuj metody bezpośrednio z konsoli CE Lua.
|
||||
* **Big-Endian custom types** – odwrócony skan/edycja kolejności bajtów (przydatne dla emulatorów konsol i buforów pakietów sieciowych).
|
||||
* **Autosave & tabs** dla okien AutoAssembler/Lua, plus `reassemble()` do przepisania instrukcji wieloliniowych.
|
||||
|
||||
### Notatki dotyczące instalacji i OPSEC (2024-2025)
|
||||
* Oficjalny instalator jest opakowany w InnoSetup **oferty reklamowe** (`RAV` itd.). **Zawsze klikaj *Odrzuć*** *lub kompiluj ze źródła*, aby uniknąć PUP-ów. AV-y nadal będą oznaczać `cheatengine.exe` jako *HackTool*, co jest oczekiwane.
|
||||
* Nowoczesne sterowniki antycheatowe (EAC/Battleye, ACE-BASE.sys, mhyprot2.sys) wykrywają klasę okna CE nawet po zmianie nazwy. Uruchom swoją kopię do odwracania **w jednorazowej VM** lub po wyłączeniu gry sieciowej.
|
||||
* Jeśli potrzebujesz tylko dostępu w trybie użytkownika, wybierz **`Settings → Extra → Kernel mode debug = off`**, aby uniknąć ładowania niepodpisanego sterownika CE, który może powodować BSOD w Windows 11 24H2 Secure-Boot.
|
||||
|
||||
---
|
||||
|
||||
## **Referencje**
|
||||
|
||||
- **Samouczek Cheat Engine, ukończ go, aby nauczyć się, jak zacząć z 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}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user