Odkryj sekrety kodowania zwrotnego w League of Legends

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