Cheat Engine
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Cheat Engine to przydatny program do znajdowania, gdzie ważne wartości są zapisywane w pamięci działającej gry i ich zmieniania. Po pobraniu i uruchomieniu programu, zostaniesz zaprezentowany z samouczkiem jak używać narzędzia. Jeśli chcesz nauczyć się, jak używać tego narzędzia, zdecydowanie zaleca się jego ukończenie.
To narzędzie jest bardzo przydatne do znalezienia gdzie jakaś wartość (zwykle liczba) jest przechowywana w pamięci programu. Zwykle liczby są przechowywane w formacie 4 bajtów, ale możesz je również znaleźć w formatach double lub float, lub możesz chcieć szukać czegoś innego niż liczba. Z tego powodu musisz upewnić się, że wybierasz to, co chcesz wyszukiwać:
Możesz również wskazać różne typy wyszukiwań:
Możesz także zaznaczyć pole, aby zatrzymać grę podczas skanowania pamięci:
W Edycja --> Ustawienia --> Skróty klawiszowe możesz ustawić różne skróty klawiszowe do różnych celów, takich jak zatrzymanie gry (co jest dość przydatne, jeśli w pewnym momencie chcesz zeskanować pamięć). Inne opcje są dostępne:
Gdy znajdziesz, gdzie jest wartość, której szukasz (więcej na ten temat w kolejnych krokach), możesz zmodyfikować ją, klikając dwukrotnie, a następnie klikając dwukrotnie jej wartość:
A na koniec zaznaczając pole, aby wprowadzić modyfikację w pamięci:
Zmiana w pamięci zostanie natychmiast zastosowana (zauważ, że dopóki gra nie użyje tej wartości ponownie, wartość nie zostanie zaktualizowana w grze).
Załóżmy, że istnieje ważna wartość (jak życie twojego użytkownika), którą chcesz poprawić, i szukasz tej wartości w pamięci.
Zakładając, że szukasz wartości 100, przeprowadzasz skanowanie w poszukiwaniu tej wartości i znajdujesz wiele trafień:
Następnie robisz coś, aby wartość się zmieniła, a następnie zatrzymujesz grę i przeprowadzasz następne skanowanie:
Cheat Engine będzie szukać wartości, które zmieniły się z 100 na nową wartość. Gratulacje, znalazłeś adres wartości, której szukałeś, teraz możesz ją zmodyfikować. Jeśli nadal masz kilka wartości, zrób coś, aby ponownie zmodyfikować tę wartość i przeprowadź kolejne "następne skanowanie", aby przefiltrować adresy.
W scenariuszu, w którym nie znasz wartości, ale wiesz jak ją zmienić (a nawet wartość zmiany), możesz szukać swojej liczby.
Zacznij od przeprowadzenia skanowania typu "Nieznana wartość początkowa":
Następnie zmień wartość, wskaż jak wartość się zmieniła (w moim przypadku zmniejszyła się o 1) i przeprowadź następne skanowanie:
Zostaniesz przedstawiony wszystkimi wartościami, które zostały zmodyfikowane w wybrany sposób:
Gdy znajdziesz swoją wartość, możesz ją zmodyfikować.
Zauważ, że istnieje wiele możliwych zmian i możesz powtarzać te kroki tyle razy, ile chcesz, aby przefiltrować wyniki:
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":
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ść:
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-y):
Możesz teraz zmodyfikować go tak, aby kod nie wpływał na twoją liczbę lub zawsze wpływał w pozytywny sposób.
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:
Następnie przeprowadź nowe skanowanie w poszukiwaniu wartości hex między "[]" (wartość $edx w tym przypadku):
(Jeśli pojawi się kilka, zazwyczaj potrzebujesz najmniejszego adresu) Teraz, znaleźliśmy wskaźnik, który będzie modyfikował wartość, która nas interesuje.
Kliknij "Dodaj adres ręcznie":
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):
(Zauważ, że pierwszy "Adres" jest automatycznie wypełniany z adresu wskaźnika, który wprowadzasz)
Kliknij OK, a nowy wskaźnik zostanie utworzony:
Teraz, za każdym razem, gdy modyfikujesz tę wartość, modyfikujesz ważną wartość, nawet jeśli adres pamięci, w którym znajduje się wartość, jest inny.
Wstrzykiwanie kodu to technika, w której wstrzykujesz fragment kodu do docelowego procesu, a następnie przekierowujesz wykonanie kodu, aby przechodziło przez twój własny napisany kod (na przykład przyznając ci punkty zamiast je odejmować).
Wyobraź sobie, że znalazłeś adres, który odejmuje 1 od życia twojego gracza:
Kliknij Pokaż disassembler, aby uzyskać kod disassembly. Następnie kliknij CTRL+a, aby wywołać okno Auto assemble i wybierz Szablon --> Wstrzykiwanie kodu
Wypełnij adres instrukcji, którą chcesz zmodyfikować (zwykle jest to automatycznie wypełnione):
Zostanie wygenerowany szablon:
Wstaw swój nowy kod asemblera w sekcji "newmem" i usuń oryginalny kod z sekcji "originalcode", jeśli nie chcesz, aby był wykonywany. W tym przykładzie wstrzyknięty kod doda 2 punkty zamiast odejmować 1:
Kliknij na wykonaj i tak dalej, a twój kod powinien zostać wstrzyknięty do programu, zmieniając zachowanie funkcjonalności!
Samouczek Cheat Engine, ukończ go, aby nauczyć się, jak zacząć z Cheat Engine