Manipulação de memória.
Jadiael Juvino
15 de novembro de 2025
8 min de leitura
GTA San Andreas
Cheat Engine
Automação
Memória
Games
Teleporte
Rockstar Games Launcher
Portfólio
Praticando ponteiros e offsets revisitando GTA San Andreas v1.0.1.32 (Rockstar Games Launcher).
Revisitação ao GTA San Andreas (RGL 1.0.1.32) e exploração de memória com Cheat Engine
Depois de muitos anos sem encostar em GTA San Andreas, decidi revisitar o jogo — agora em um ambiente bem mais moderno, rodando no Windows 11 com a versão distribuída pelo Rockstar Games Launcher (RGL), 1.0.1.32.
Como jogador, a motivação inicial foi pura nostalgia.
Como desenvolvedor, a motivação real foi outra: entender como essa build se comporta hoje, quais são suas limitações técnicas e o que dá pra fazer em termos de automação e manipulação de memória.
Logo de início, levantei alguns pontos importantes:
- A versão 1.0.1.32 (RGL) roda de forma estável em sistemas atuais, sem crash aleatório ou necessidade de patch da comunidade.
- É possível jogar o jogo base puro, sem qualquer mod de terceiros.
- Por outro lado, essa build praticamente não é suportada pela comunidade modder.
Por que não fiz downgrade (e por que isso importa)
Se você pesquisa hoje sobre mods de GTA San Andreas, a recomendação padrão é:
- fazer downgrade para versões antigas, e só depois
- aplicar mods, plugins, CLEO, etc.
No meu caso, eu queria:
- manter o jogo original, sem mexer no executável;
- não entrar em zona cinzenta de EULA com exe modificado;
- e, ao mesmo tempo, explorar o jogo com um olhar técnico.
Isso cria um cenário interessante:
- a engine original está estável;
- o conteúdo de jogo e o progresso são os mesmos que já estão totalmente documentados há anos;
- mas não existem tabelas públicas confiáveis de Cheat Engine para essa build específica (fiz uma pesquisa caprichada em toda internet e não achei nada que funcione!).
Jogando como jogador… e como engenheiro de software
Jogando “normalmente”, uma coisa salta aos olhos: GTA San Andreas te obriga a andar muito pelo mapa.
Do ponto de vista de design de game, isso faz sentido:
- o mapa é enorme;
- sistemas importantes (missões, colecionáveis, escolas, namoradas, propriedades) estão espalhados;
- o jogo quer que o jogador descubra o mundo na marra.
- muito tempo é gasto em deslocamento repetitivo;
- várias ações são altamente mecânicas e previsíveis;
- a lógica de progresso do jogo já está detalhadamente documentada hoje.
> Respeitar a história e o conteúdo do jogo, mas dar bypass em atritos repetitivos usando técnicas que eu já uso no dia a dia, como manipulação de memória e automação.
É aqui que entra o velho amigo: Cheat Engine.
Usando Cheat Engine como ferramenta de estudo
Como não encontrei tabelas confiáveis para a versão 1.0.1.32 RGL, decidi montar a minha própria.
O processo foi basicamente:
- abrir o processo
gta_sa.exe; - analisar o módulo base;
- seguir cadeias de ponteiros;
- procurar endereços estáveis relativos ao módulo.
- coordenadas do jogador (a pé e dentro de veículo);
- atributos do CJ (Muscle, Stamina, Fat, Sex Appeal, etc.);
- progresso com as namoradas;
- proficiência em armas e veículos;
- vida, colete, dinheiro;
- níveis de sorte;
- flags de física e estado do veículo/jogador;
- hora e minuto internos do jogo;
- slots de arma + quantidade de munição.
gta_sa.exe da versão 1.0.1.32 RGL):- Health / Armor (via cadeia de ponteiro principal):
- Health:
[gta_sa.exe+80F18C-0xBC] + 0x540 - Armor:
[gta_sa.exe+80F18C-0xBC] + 0x548 - Atributos (Max 1000) em torno de
gta_sa.exe+80B600/gta_sa.exe+80B604: - Stamina, Fat, Muscle, Sex Appeal.
- Dinheiro:
gta_sa.exe+80F188- Proficiência em armas (offsets sequenciais a partir de um mesmo bloco):
- Pistol, Silenced Pistol, Desert Eagle, Shotgun, Rifle, etc.
Coordenadas, teleporte e presets
Um dos focos principais foi encontrar cadeias de ponteiro confiáveis para a posição:
- Posição do jogador a pé
- X:
[[gta_sa.exe+80F18C-0xBC] + 0x14] + 0x30 - Y:
[[gta_sa.exe+80F18C-0xBC] + 0x14] + 0x34 - Z:
[[gta_sa.exe+80F18C-0xBC] + 0x14] + 0x38 - Posição do veículo (quando o jogador está dentro)
- X:
[[[gta_sa.exe+80F18C-0xBC] + 0x58C] + 0x14] + 0x30 - Y:
[[[gta_sa.exe+80F18C-0xBC] + 0x58C] + 0x14] + 0x34 - Z:
[[[gta_sa.exe+80F18C-0xBC] + 0x58C] + 0x14] + 0x38
[[0x00C0F0D0] + 0x46C]- 0 = ar/água
- 1 = dentro de carro
- 2 = entrando em interior
- 3 = a pé
- 4 = nadando
- detecta se o CJ está a pé ou dentro de um veículo;
- escolhe a cadeia de ponteiro correta (player ou vehicle);
- ajusta a física temporariamente para evitar comportamentos estranhos;
- aplica presets de coordenadas de forma segura.
- teleportar o CJ para qualquer lugar do mapa;
- tanto a pé quanto dentro de carro/avião/barco;
- usar grupos de presets como:
- locais de import/export de veículos;
- todas as casas que podem ser compradas;
- pontos de colecionáveis;
- escolas (moto, carro, barco, avião);
- áreas específicas de missões com muito deslocamento.
Estruturando a tabela do Cheat Engine como “mini toolkit”
Organizei a tabela em uma estrutura clara, como uma ferramenta interna:
- Grupos principais:
PlayerVehicleModify PositionHousesSnapshots- grupos de escolas/missões
- Entradas bem nomeadas:
- Health, Armor, Money
- Car/Moto/Boat/Air Proficiency
- Luck
- Flags de física
- Estado do motor:
[[gta_sa.exe+80F18C-0xBC] + 0x58C] + 0x428[[gta_sa.exe+80F18C-0xBC] + 0x58C] + 0x40- Scripts em Lua + Auto Assembler para:
- polling seguro;
- timers;
- teleporte seguro;
- prevenção de escrita prematura (
canRead()).
- endereço que indica se o jogador está no jogo ou em menu;
- endereço que indica o ID do menu (útil para automação contextual).
Lista de missões trabalhadas
- GTASAsf1.b.fim_da_linha
- GTASAsf1.b.loas_desperados
- GTASAsf1.b.revolta
- GTASAsf1.b.grove_eternamente
- GTASAsf1.b.porrada_no_b-dup
- GTASAsf1.b.negocios_de_cortar_garganta
- GTASAsf1.b.voltando_para_casa
- GTASAsf1.b.passaro_vertical
- GTASAsf1.b.limpando_o_cofre
- GTASAsf1.b.para_o_alto_e_avante
- GTASAsf1.b.motos_da_policia
- GTASAsf1.b.grande_explosao
- GTASAsf1.b.chave_para_o_coracao_dela
- GTASAsf1.b.espionagem_arquitetonica
- GTASAsf1.b.uma_casa_nas_colinas
- GTASAsf1.b.saint_mark_bistro
- GTASAsf1.b.ultimas_palavras
- GTASAsf1.b.apropriacao_indebita
- GTASAsf1.b.madd_dogg
- GTASAsf1.b.queda_livre
- GTASAsf1.b.peixe_no_barril
- GTASAsf1.b.o_negocio_da_carne
- GTASAsf1.b.tratamento_intensivo
- GTASAsf1.b.santo_peyote
- GTASAsf1.b.aqui_estao_seus_chips
- GTASAsf1.b.situacao_explosiva
- GTASAsf1.b.ketchup_no_parabrisa
- GTASAsf1.b.perfuracoes
- GTASAsf1.b.rastreio_de_carro
- GTASAsf1.b.teste_de_direcao
- GTASAsf1.b.zerando
- GTASAsf1.b.gosma_verde
- GTASAsf1.b.projeto_negro
- GTASAsf1.b.clandestino
- GTASAsf1.b.voo_em_baixa_altitude
- GTASAsf1.b.aprendendo_a_voar
- GTASAsf1.b-prado_verdejante
- GTASAsf1.b.interdicao
- GTASAsf1.b.robo_de_carga
- GTASAsf1.b.monstro
- GTASAsf1.b.drogas_explosivas
- GTASAsf1.b.o_ultimo_voo_de_toreno
- GTASAsf1.b.pier_69
- GTASAsf1.b.assassino_frio
- GTASAsf1.b.rastro_da_lesma
- GTASAsf1.b.batedor
- GTASAsf1.b.os_da_nang_thang
- GTASAsf1.b.assalto_anfibio(2)
- GTASAsf1.b.assalto_anfibio
- GTASAsf1.b.isca
- GTASAsf1.b.ran_fa_li
- GTASAsf1.b.mountain_cloud_boys
- GTASAsf1.b.novo_modelo_de_exercito
- GTASAsf1.b.linha_de_suprimento
- GTASAsf1.b.ataque_aereo
- GTASAsf1.b.mike_toreno
- GTASAsf1.b.t-bone_mendez
- GTASAsf1.b.jizzy
- GTASAsf1.b.oportunidade_de_fotografar
- GTASAsf1.b.voltando_para_a_escola
- GTASAsf1.b.desconstrucao
- GTASAsf1.b.555-disque-denuncia
- GTASAsf1.b.use_flores_no_seu
- GTASAsf1.b.voce_esta_indo_para_san_fierro
- GTASAsf1.b.adeus_meu_amor
- GTASAsf1.b.wu_zi_mu
- GTASAsf1.b.banco_de_cidade_pequena
- GTASAsf1.b.contra_todas_as_chances
- GTASAsf1.b.loja_de_bebidas_local
- GTASAsf1.b.colheita_de_corpos1
- GTASAsf1.b.colheita_de_corpos
- GTASAsf1.b.comandando_o_caminhao
- GTASAsf1.b.terra_ruim
- GTASAsf1.b.o_sabre_verde
- GTASAsf1.b.reunindo_as_familias
- GTASAsf1.b.as_sepulturas
- GTASAsf1.b.importacoes_cinzentas
- GTASAsf1.b.doberman
- GTASAsf1.b.desejo_incendiario
- GTASAsf1.b.festa_em_casa
- GTASAsf1.b.problemas_de_gerenciamento
- GTASAsf1.b.as_rimas_do_madd_dogg
- GTASAsf1.b.apenas_negocios
- GTASAsf1.b.lado_errado_dos_trilhos
- GTASAsf1.b.covarde_fugitivo
- GTASAsf1.b.a_vida_e_uma_praia
- GTASAsf1.b.og_loc
- GTASAsf1.b.roubando_o_tio_sam
- GTASAsf1.b.catalisador
- GTASAsf1.b.invasao_domiciliar
- GTASAsf1.b.apostas_altas_lowrrider
- GTASAsf1.b.cesar_vialpando
- GTASAsf1.b.a_mina_do_sweet
- GTASAsf1.b.execucao
- GTASAsf1.b.9mm_e_aks
- GTASAsf1.b.drive_thru
- GTASAsf1.b.limpando_o_bairro
- GTASAsf1.b.marcando_a_area
- GTASAsf1.b.ryder
Destaques dos saves
desconstrucao: todas as namoradas no nível 100 naquele ponto.voltando_para_a_escola: escola de motorista 100% ouro.oportunidade_de_fotografar: 50 snapshots concluídos.rastreio_de_carro: lista de import/export finalizada.perfuracoes: escolas de moto e barco 100% ouro.
Downloads e referência cruzada
- Save zerado:
- Tabela Cheat Engine (.CT):
O que isso diz sobre meu trabalho como engenheiro de software
Documentar esse processo faz parte do meu portfólio técnico.
Esse estudo mostra que:
- investigo sistemas legados e fechados;
- extraio informação direto da memória;
- crio ferramentas internas organizadas;
- reduzo atrito e automatizo tarefas repetitivas;
- trabalho com consciência de contexto e impacto.
J
Jadiael Juvino
Engenheiro de Software especializado em desenvolvimento backend e frontend, com experiência em C#, JavaScript, NestJS, PHP e bancos de dados. Apaixonado por compartilhar conhecimento e criar soluções inovadoras.