jamelsalah Postado Novembro 9 Postado Novembro 9 Olá a todos Gostaria de pedir ajuda com um problema específico de engenharia reversa que estou enfrentando no MMORPG Grand Fantasia, um jogo que marcou muito minha infância. Meu interesse por engenharia reversa cresceu nos últimos meses, e tenho dedicado grande parte do meu tempo a estudar essa área. Recentemente, comecei a configurar meu próprio servidor do jogo, mas encontrei alguns obstáculos que exigem mais conhecimento. Meu Contexto: Sou estudante de tecnologia, terminando a faculdade, e já trabalhei em algumas empresas do setor. Tive meu primeiro contato com engenharia reversa há cerca de três meses, e recentemente resolvi me aprofundar no tema, especialmente para entender a arquitetura e os arquivos do Grand Fantasia. O Problema: O jogo usa arquivos .ini para carregar traduções, o que funciona bem para a maior parte do conteúdo, mas há algumas partes específicas onde a tradução não é aplicada. Depois de investigar, verifiquei que: 1) Os arquivos .ini contêm as traduções, inclusive das partes que não aparecem traduzidas; 2) A memória do jogo carrega as traduções corretamente, mas em certas áreas, elas não são aplicadas. Abordagens Tentadas: Já fiz várias tentativas para identificar o problema: -Analisar a função de carregamento das traduções pelos arquivos .ini: Está funcionando como esperado, carregando tudo corretamente. -Identificar o endereço na memória onde as traduções ficam carregadas e mapear as funções que acessam esses endereços. No entanto, descobri que as funções que acessam as traduções não são as mesmas responsáveis por aplicá-las no jogo. -Monitorar as funções chamadas em intervalos específicos: Usei as funcionalidades que estão com problemas de tradução e observei as chamadas de função naquele período para tentar encontrar a função que aplica a tradução. Testei essa abordagem com o API Monitor, mas ele apenas monitora funções externas ao jogo, como as nativas do Windows ou DLLs, e não as do código interno do jogo. Ferramentas Utilizadas: Ghidra, Cheat Engine, x32dbg O Que Preciso: Atualmente, sinto que estou sem novas ideias para prosseguir. Tentei todas as abordagens que consegui pensar, com dias de testes e debugging, mas sem sucesso. Gostaria, pelo menos, de identificar a causa do problema para trabalhar em uma solução. Qualquer sugestão de abordagem, ferramenta ou orientação seria de grande ajuda. alguem poderia me dar uma Luz? Alguma ideia? sugerir alguma abordagem? Alguma ferramenta? Preciso muito de ajuda, e sinto que como se estivesse fazendo algo que pouquissimas ou nem uma pessoa faz ou fez, o que torna muito dificiu encontrar algum conteudo ou tutorial que se relacione com o que estou tentando fazer. Porfavor, me ajudem Contato: eu posso explicar melhor o problema e as abordagens ja utilizadas no meu privado Discord: jamel1754 whatsapp: 55 61 98621-8929 Email: jamelsala@gmail.com Agradeço desde já por qualquer ajuda ou sugestão que possam oferecer. Citar
Administradores Fernando Mercês Postado Novembro 9 Administradores Postado Novembro 9 Olá! Recomendo remover suas informações de contato.. principalmente telefone e e-mail, para evitar receber spam. 😉 Quanto ao problema, de fato o API monitor só monitora chamadas externas. Se as funções que lêem os parâmetros do INI estiverem em uma DLL, você pode adicioná-la no API Monitor para ele monitorar, mas se as funções estiverem no próprio EXE alvo, aí não dá com ele. Penso que você pode usar breakpoints de hardware no acesso aos dados. Localize-os no dump do x64dbg e aí põe breakpoint de leitura no primeiro byte da string traduzida que você quer. Isso vai fazer o debugger parar quando algum código ler tal string. Aí deve ficar mais fácil encontrar o código defeituoso, que não põe a string na tela por algum motivo. Abraço! Citar
Posts Recomendados
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.