Descubra os segredos da codificação reversa em League of Legends

Como resolver um travamento do jogo após conectar uma função a uma estrutura?

Desenvolvendo a estrutura do gancho

Recentemente, um usuário fez uma pergunta em um fórum especializado em engenharia reversa de videogames. Ele estava interessado em como conectar uma função específica a um jogo para mudar seu comportamento. Após analisar a função com IDA (Interactive Disassembler), ele descobriu que seu tipo era __int64 __fastcall(int a1, unsigned int *a2, unsigned int *a3).

A falha do jogo

Então ele criou uma estrutura com uma função conectada que chamava a função original após um atraso de 10 milissegundos. Porém, quando ele usou essa estrutura, o jogo travou.

Ele se perguntou por que o jogo estava travando e se deveria omitir a instrução Sleep(10) em sua função hooked.

Uma liberação de código sem demora

Usando o mesmo código do framework sem demora, ele descobriu que o travamento do jogo não estava mais ocorrendo, o que o levou a questionar a importância da instrução Sleep em sua função hooked.

Pesquisa atual

Outro usuário do fórum sugeriu pesquisar descompilação de versões anteriores do jogo para encontrar funções que usem os mesmos deslocamentos encontrados ao analisar a função inicial.

Ele também mencionou a capacidade de pesquisar strings no IDA para realizar análise estática de código.

Ele finalmente destacou que a engenharia reversa de um jogo como o TFT (Teamfight Tactics) é complexa porque poucas pessoas se interessaram por ele e, portanto, há pouco conhecimento público sobre ele.

Ele, portanto, aconselhou o usuário a perseverar em suas pesquisas e continuar explorando diferentes possibilidades.

Fonte: www.unknowncheats.me