Jak rozwiązać awarię gry po podłączeniu funkcji do struktury?
Opracowanie konstrukcji haka
Użytkownik zadał niedawno pytanie na forum specjalizującym się w inżynierii wstecznej gier wideo. Interesowało go, jak podłączyć określoną funkcję do gry, aby zmienić jej zachowanie. Po przeanalizowaniu funkcji za pomocą IDA (Interactive Disassembler) stwierdził, że jej typ to __int64 __fastcall(int a1, unsigned int *a2, unsigned int *a3).
Awaria gry
Stworzył więc strukturę z zahaczoną funkcją, która wywoływała oryginalną funkcję z opóźnieniem wynoszącym 10 milisekund. Jednak gdy użył tej struktury, gra się zawiesiła.
Zastanawiał się, dlaczego gra się zawiesza i zastanawiał się, czy powinien pominąć instrukcję Sleep(10) w swojej funkcji hooked.
Wydanie kodu bez zwłoki
Używając bezzwłocznie tego samego kodu frameworka, odkrył, że awaria gry już nie występowała, co skłoniło go do zakwestionowania znaczenia instrukcji Sleep w jego funkcji hooked.
Obecne badania
Inny użytkownik forum zasugerował przeszukanie dekompilacji wcześniejszych wersji gry, aby znaleźć funkcje korzystające z tych samych przesunięć, które znaleziono podczas analizy funkcji początkowej.
Wspomniał także o możliwości wyszukiwania ciągów znaków w IDA w celu przeprowadzenia statycznej analizy kodu.
Na koniec zwrócił uwagę, że inżynieria wsteczna gry takiej jak TFT (Teamfight Tactics) jest złożona, ponieważ niewiele osób się nią interesuje i dlatego wiedza na jej temat jest niewielka.
Dlatego poradził użytkownikowi, aby wytrwał w badaniach i kontynuował badanie różnych możliwości.
Źródło: www.unknowncheats.me





