
CHEAT ENGINE 7.2
DOWNLOAD SEM PROPAGANDAS:
https://tulc.cheatenginebrasil.com.br/scripts/CURSO%20GAME%20HACKING%20ARQUIVOS/CheatEngine7.2_MissingSetup.rar
LINKS USADOS NO VÍDEO:
JOGO "PAWN STAR" DO FACEBOOK:
https://apps.facebook.com/beapawnstar
OBSERVAÇÃO:
COM O TÉRMINO DO FLASH PLAYER EM 31 DE DEZEMBRO DE 2020, MUITOS JOGOS EM FLASH PLAYER DEIXARAM DE FUNCIONAR E MUITOS ESTÃO MIGRANDO PARA O HTML5, COMO O CASO DESTE JOGO, PORTANTO, VOCÊ NÃO VAI CONSEGUIR TESTAR O MÉTODO NESTE JOGO, AQUI ESTÁ O LINK DA MENSAGEM DO JOGO SE REFERINDO AO FLASH PLAYER:
https://www.facebook.com/Pawn-Stars-The-Game-298487750197291/
DOWNLOAD DO ASSAULTCUBE:
https://assault.cubers.net/download.html
LINKS USADOS NO VÍDEO:
EMULADOR SUPER NINTENDO + JOGO:
http://tulc.cheatenginebrasil.com.br/scripts/CURSO%20GAME%20HACKING%20ARQUIVOS/AULA%204%20C%20-%20SCAN%20TYPE%20-%20%202%20BYTES.zip
LINKS USADOS NO VÍDEO:
EMULADOR SUPER NINTENDO + JOGO:
http://tulc.cheatenginebrasil.com.br/scripts/CURSO%20GAME%20HACKING%20ARQUIVOS/AULA%204%20C%20-%20SCAN%20TYPE%20-%20%202%20BYTES.zip
4 bytes (32 bits / DWORD)
um valor de "4 bytes" pode conter um número entre 0..4294967295 ou -2147483648 e 2147483647 (o último se for um valor com sinal)
Os valores de "4 bytes" são a maneira padrão de armazenar informações em um sistema Windows. Portanto, fazer uma varredura de 4 bytes normalmente fornecerá os melhores resultados.
Resumindo, um valor pode conter um valor negativo se for um valor com sinal.
Isso é feito invertendo todos os bits. Todos os 0's tornam-se 1's e os 1's tornam-se 0's. Em seguida, o valor resultante é incrementado em 1.
exemplo:
12 = 00001100
invert = 11110011
-12 = 11110100 (observe que se este fosse um valor sem sinal, seria 244; porque 256-12 = 244)
JOGO ALIEN WARS:
http://tulc.cheatenginebrasil.com.br/scripts/CURSO%20GAME%20HACKING%20ARQUIVOS/Alien_Wars.exe
8 bytes (64 bits / QWORD)
um valor de "8 bytes" pode conter um número entre 9223372036854775808 e 9223372036854775807 (não há mais necessidade de valores sem sinal)
"8 bytes" não são usados com frequência porque ocupam muito espaço e requerem processamento extra. (exceto para processadores de 64 bits)
No entanto, alguns programas os usam, e a varredura por um valor de "8 bytes" não retorna muitos endereços, então encontrar o correto é fácil.
Se o endereço que você está procurando for menor que 8 bytes, a chance de que a varredura tenha ignorado esse endereço é grande.
Não é comum um jogo utilizar 8 bytes, portanto não é necessário um vídeo explicativo, boas aulas.
ARRAY OF BYTES
O mesmo que o texto, mas usa uma matriz de bytes em vez de caracteres e oferece suporte a curingas ou ponto de interrogações.
entrada:
xx xx xx xx
xx ?? xx xx
xx ** xx xx
Uma varredura de array of byte (AoB) pode ser útil quando você sabe que antes do endereço que você precisa está sempre uma ocorrência específica de bytes. (como: 66 66 66 10 10 e 4 bytes depois disso é a sua saúde, que é armazenada como 1 byte. A varredura de 1 byte levará muito mais tempo do que a varredura dessa sequência de bytes. A varredura dessa sequência provavelmente resultará apenas em 1 endereço, onde a varredura de 1 byte retornará milhares de endereços na primeira vez)
DOWNLOAD ASSAULTCUBE:
https://assault.cubers.net/download.html
Link do jogo:
https://www.microsoft.com/pt-br/p/survivors-a-busca/9nblggh58qd4?activetab=pivot:overviewtab
INSTRUÇÃO ARITMETICA ARQUIVOS
https://mega.nz/folder/WQ0yiLTT#allBBu9EowHLC27EMZ-s-A
Módulos:
Início do Módulo:
getAddress('ac_client.exe')
Fim do Módulo:
getAddress('ac_client.exe') + getModuleSize('ac_client.exe')
[ENABLE]
aobscanmodule(INJECT,halo2.exe,66 29 70 08 66 83 78 08 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
alloc(balas,4)
registersymbol(balas)
newmem:
mov [balas],eax
code:
sub [eax+08],si
cmp word ptr [eax+08],00
jmp return
INJECT:
jmp newmem
nop 4
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db 66 29 70 08 66 83 78 08 00
unregistersymbol(INJECT)
dealloc(newmem)
unregistersymbol(balas)
dealloc(balas)
[ENABLE]
aobscanmodule(INJECT,FC_m64.dll,44 89 83 88 01 00 00) // should be unique
alloc(newmem,$1000,INJECT)
label(code)
label(return)
alloc(balas,4)
registersymbol(balas)
newmem:
mov [balas],rbx
code:
mov [rbx+00000188],r8d
jmp return
INJECT:
jmp newmem
nop 2
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db 44 89 83 88 01 00 00
unregistersymbol(INJECT)
unregistersymbol(balas)
dealloc(newmem)
dealloc(balas)
[ENABLE]
aobscanmodule(INJECT,FC_m64.dll,44 89 83 88 01 00 00) // should be unique
alloc(newmem,$1000,INJECT)
label(code)
label(return)
label(balas)
registersymbol(balas)
newmem:
push rcx //PEGA O VALOR DO REGISTRO E COLOCA NA PILHA
lea rcx,[rbx+00000188] //PARECIDO COM mov, PORÉM NÃO PEGA O VALOR DO ENDEREÇO, ELE PEGA O ENDEREÇO EM SI
mov [balas],rcx //PEGA O ENDEREÇO DO VALOR
pop rcx //ELE PEGA O VALOR DE ANTES E RETIRA DA PILHA
code:
mov [rbx+00000188],r8d
jmp return
balas:
INJECT:
jmp newmem
nop 2
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db 44 89 83 88 01 00 00
unregistersymbol(INJECT)
unregistersymbol(balas)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: FC_m64.dll+DC75DCC
FC_m64.dll+DC75DA6: 48 83 EC 20 - sub rsp,20
FC_m64.dll+DC75DAA: 89 D7 - mov edi,edx
FC_m64.dll+DC75DAC: 48 89 CB - mov rbx,rcx
FC_m64.dll+DC75DAF: 3B 91 88 01 00 00 - cmp edx,[rcx+00000188]
FC_m64.dll+DC75DB5: 74 3C - je FC_m64.dll+DC75DF3
FC_m64.dll+DC75DB7: E8 A4 78 18 F4 - call FC_m64.dll+1DFD660
FC_m64.dll+DC75DBC: 39 F8 - cmp eax,edi
FC_m64.dll+DC75DBE: C6 83 C4 00 00 00 01 - mov byte ptr [rbx+000000C4],01
FC_m64.dll+DC75DC5: 41 89 F8 - mov r8d,edi
FC_m64.dll+DC75DC8: 44 0F 4C C0 - cmovl r8d,eax
// ---------- INJECTING HERE ----------
FC_m64.dll+DC75DCC: 44 89 83 88 01 00 00 - mov [rbx+00000188],r8d
// ---------- DONE INJECTING ----------
FC_m64.dll+DC75DD3: 85 FF - test edi,edi
FC_m64.dll+DC75DD5: 7E 07 - jle FC_m64.dll+DC75DDE
FC_m64.dll+DC75DD7: C6 83 D0 01 00 00 00 - mov byte ptr [rbx+000001D0],00
FC_m64.dll+DC75DDE: 48 8B 8B E0 01 00 00 - mov rcx,[rbx+000001E0]
FC_m64.dll+DC75DE5: 48 85 C9 - test rcx,rcx
FC_m64.dll+DC75DE8: 74 09 - je FC_m64.dll+DC75DF3
FC_m64.dll+DC75DEA: 48 8B 01 - mov rax,[rcx]
FC_m64.dll+DC75DED: FF 90 E8 00 00 00 - call qword ptr [rax+000000E8]
FC_m64.dll+DC75DF3: 48 8B 5C 24 30 - mov rbx,[rsp+30]
FC_m64.dll+DC75DF8: 48 83 C4 20 - add rsp,20
}
LINK DO JOGO:
https://apps.facebook.com/tropic_escape/
O Curso Game Hacking foi criado com foco em pessoas iniciantes que estejam começando do Zero, e esse curso é voltado para:
- Você que nunca tenha criado um programa na vida.
- Você que nunca tenha criado algum cheat/hack.
- Você que não saiba por onde começar.
Não importa o seu nível de conhecimento, você vai aprender desde o básico ao Avançado.
Conteúdo do curso:
- HTML5 GAME HACKING: Vai aprender desde o básico a aprender a modificar jogos em JAVASCRIPT.
- FFDEC: vai aprender a editar AVM INSTRUCTIONS, em todos os jogos com SWF.
> Vai aprender a usar todos os componentes do FFDEC.
- CHARLES PROXY: vai aprender desde o básico ao avançado a editar jogos de maneira simples e via HTTP.
> Vai aprender a usar todos os componentes do CHARLES PROXY.
- UNITY GAME HACKING: vai aprender a maneira correta de editar jogos da plataforma UNITY.
> Vai aprender a usar todos os componentes do programa NET REFLECTOR.
- LINGUAGEM DE PROGRAMAÇÃO LUA BASE CHEAT ENGINE: vai aprender tudo usando o próprio CHEAT ENGINE como ferramenta, podendo assim editar seus proprios trainer.
- CHEAT ENGINE: Tudo SOBRE...
> Criação de cheats, criação de trainers do básico ao avançado, criar programas, animações, criar seus proprios scripts.
> Vai aprender a usar todos os componentes do FORM DESIGNER do CHEAT ENGINE.