Hvordan løser man et spilnedbrud efter at have tilsluttet en funktion med en struktur?
Udvikling af krogstrukturen
En bruger stillede for nylig et spørgsmål på et forum med speciale i videospils reverse engineering. Han var interesseret i, hvordan man kobler en specifik funktion ind i et spil for at ændre dets adfærd. Efter at have analyseret funktionen med IDA (Interactive Disassembler), fandt han ud af, at dens type var __int64 __fastcall(int a1, unsigned int *a2, unsigned int *a3).
Spillet går ned
Så han skabte en struktur med en tilsluttet funktion, der kaldte den oprindelige funktion efter en forsinkelse på 10 millisekunder. Men da han brugte denne struktur, styrtede spillet ned.
Han undrede sig over, hvorfor spillet gik ned og spekulerede på, om han skulle udelade Sleep(10)-instruktionen i sin tilsluttede funktion.
En kodefrigivelse uden forsinkelse
Ved at bruge den samme rammekode uden forsinkelse fandt han ud af, at spilnedbruddet ikke længere fandt sted, hvilket fik ham til at stille spørgsmålstegn ved vigtigheden af Sleep-instruktionen i hans hooked-funktion.
Aktuel forskning
En anden forumbruger foreslog at søge efter dekompileringer af tidligere versioner af spillet for at finde funktioner, der bruger de samme forskydninger, som blev fundet ved analyse af den indledende funktion.
Han nævnte også muligheden for at søge efter strenge i IDA for at udføre statisk kodeanalyse.
Han påpegede endelig, at reverse engineering af et spil som TFT (Teamfight Tactics) er komplekst, fordi få mennesker har været interesseret i det, og derfor er der kun lidt offentlig viden om det.
Han rådede derfor brugeren til at blive ved i deres forskning og fortsætte med at udforske forskellige muligheder.
Kilde: www.unknowncheats.me





