Materiais de aprendizado para iniciantes em videogames de engenharia reversa
Aqui está uma lista compilada com base em materiais de aprendizagem recomendados pessoalmente para ajudar as pessoas com o processo de aprender a reverter videogames de engenharia.
Espero que ajude outras pessoas a gastar mais tempo aprendendo e menos tempo pesquisando.
A maioria dos recursos coletados aqui estará focada em reverter os jogos de PC no sistema operacional do Microsoft Windows com a montagem X86 em mente sobre o X64, pois é mais fácil de aprender.
A reversão de videogames de engenharia está mais frequentemente relacionada a "hackers de jogos", eles se juntam, para que não se surpreenda se alguns dos materiais de aprendizagem vieram desses sites/fontes.
Ordem recomendada para aprender
- Aprenda a pesquisar com eficiência no Google, todas as suas respostas e recursos são encontrados na Internet
- Aprenda usando o mecanismo de truques
- Aprenda sobre sistemas de numeração hexadecimal e binária e sobre memória de computador em geral
- Aprenda a montagem x86
- Aprenda C ++
- Aprenda usando Ida/Ghidra
- Aprenda o básico da programação de jogos
- Aprenda fundamentos da API Win32
- Aprenda o funcionamento interno do sistema operacional Windows, também conhecido como Windows Internals
- Pratique, pratique, pratique ...
Software necessário para reverter
Não é recomendável executar nenhuma dessas ferramentas (especialmente o mecanismo de trapaceiros) enquanto joga jogos multiplayer que possuem sistemas anti-travessuras, a menos que você saiba o que está fazendo.
Para iniciantes, familiarize -se com o mecanismo de trapaceiros e Ida ou Ghidra.
Escolhendo as ferramentas certas
Antes de começar a trabalhar em um jogo, você deve conhecer seu alvo, por isso é importante coletar algumas informações como:
- Quais tecnologias de software ele usa
- Com qual linguagem de programação e compilador ele foi desenvolvido
- Tem alguma tecnologia anti-reversa ou anti-tampa no lugar
- Está em execução em qualquer mecanismo de jogo popular de terceiros (unidade, motor irreal, mecanismo de origem etc.)
Os jogos que compartilham os mesmos motores geralmente têm uma base de código realmente semelhante e recorrente que você pode usar para sua vantagem. Para mecanismos de jogo de terceiros, como o Unreal Engine ou a Unity, existem muitas ferramentas personalizadas on-line que podem aliviar o processo de engenharia reversa.
Os jogos codificados em linguagens de programação interpretadas/intermediárias de alto nível, como C# ou Java, geralmente são muito mais fáceis de reverter o engenheiro em comparação com C/C ++, devido ao fato de os metadados não serem perdidos, pois não são compilados em código de máquina de baixo nível.
Para jogos baseados em unidade (e para outros jogos desenvolvidos com a estrutura .NET), use o DNSPY em vez da IDA/Ghidra.
Vamos nos concentrar principalmente em reverter jogos codificados em C ++, pois ainda é o padrão -ouro na programação de videogames.
Materiais de nível para iniciantes de leitura obrigatória
Guias para o reversão de jogos:
- Academia de hacking de jogos
- Da codificação ao hacking: um guia de introdução para hackers práticos (externos)
Guias para a montagem x86:
- O que é a linguagem de montagem? - javidx9
- Um curso intensivo na montagem x86 para engenheiros reversos - Sensepost
Guias para Ida:
- Guia para iniciantes da IDA Pro
Conceitos básicos de programação de jogos:
- Algoritmos e técnicas de programação de jogos - Sanjay Madhav (este artigo tem 7 páginas no total, leia até a página 5-6)
- Compreendendo o Loop Main Loop - Rodrigo Monteiro
Livros:
- Revertendo e hackers de jogos:
- Hacking de jogo: desenvolvendo bots autônomos para jogos online - Nick Cano
- Análise prática de malware: o guia prático para dissecar software malicioso - Michael Sikorski e Andrew Honig
- Programação de jogo:
- Truques dos gurus de programação do jogo do Windows, segunda edição (2002) - Andre Lamothe
- Codificação de jogos completa, quarta edição (2012) - Mike McShaffry
Google:
- Como pesquisar na Internet de maneira eficaz - WebTools Company
- Folha de dicas do Google
- O melhor operador de pesquisa do Google Cheatsheet - Helvis Smoteks
Canais do YouTube obrigatórios
- Hacking Guiado Hacking YouTube Channel para engenharia reversa e tutoriais de hackers de jogos
- Tutoriais de mecanismo de truques do YouTube de Stephen Chapman
Outros materiais realmente úteis
Mais material de aprendizado de montagem x86:
- Linguagem de montagem x86 aplicável à engenharia reversa: o básico - Parte 1
- Linguagem de montagem x86, Parte 2
- Tutoriais de montagem lena151 (pode estar desatualizado, mas ainda é recomendado muito):
- LearnTheneChECh YouTube Channel
- Tuts 4 você - Coleção 2011
Outras ferramentas úteis e guias de ferramentas:
- 9 melhores ferramentas de engenharia reversa para 2021
- Sem vapor
- Renderdoc
- Ferramentas de programador Nirsoft
- Ferramentas de rede Nirsoft
- Ferramentas do sistema Nirsoft
Materiais práticos de engenharia reversa e hackers de jogos:
- Tutorial de engenharia/patch de jogo reversa: Tycoon de montanha -russa Full Res Roller com Ghidra+X64DBG+Python
- Engenharia reversa e armas do XP Solitaire (mini-curso)
- Doom95 | Fazendo um objetivo
- Hacking de jogo: hack, barra, itens
- Modo de usuário Rootkits: IAT e enganche em linha
- x86 API engancada desmistificada
- [C/C ++] Tutorial de engenharia reversa para iniciantes
- Engenharia e chamada de função reversa por endereço
- Jogos online de engenharia reversa - Dragomon Hunter
- [Tutorial] Hacking de pacotes e reversão de MMO
- DirectX de tempo de execução Usando injeção de código e vtable
- Como implementar a varredura de padrões para obter compensações dinamicamente
- C ++: como corrigir bytes usando padringScan (AOB)+explicação / snippet
Babras de bits e máscaras de bits:
- Manipulação de bits com operadores bit newise e máscaras de bits
Livros e papéis:
- Revertendo e hackers de jogos:
- Bots de videogame prático: automatizando processos de jogo usando C ++, Python e Autoit - Ilya Shpigor
- Reversão: segredos da engenharia reversa - Eldad Eilam
- X86 Desmontagem - Wikibooks.org
- Análise de malware de aprendizado: Explore os conceitos, ferramentas e técnicas para analisar e investigar o malware do Windows - Monnappa Ka
- Programação de jogo:
- Algoritmos e técnicas de programação de jogos: uma abordagem agnóstica de plataforma - Sanjay Madhav
- Padrões de programação de jogos - Robert Nystrom
- Programação da API Windows e Win32:
- Windows de programação: O Guia Definitivo para a API Win32 - Charles Petzold
- Programação do kernel do Windows - Pavel Yosifovich
- Windows Internals - Pavel Yosifovich, Alex Ionescu, Mark E. Russinovich, David A. Solomon
- Ignorando as técnicas anti-debutação, anti-reversores e anti-tamper:
- A melhor referência anti -reversor - Peter Ferrie
- A arte de descompactar - Mark Vincent Yason
Listas com curadoria de ferramentas, tutoriais, recursos e muito mais para videogames de engenharia reversa:
- Wiki de hacking de jogo desconhecido
- O Ultimate Game Hacking Resource
- O Ultimate Online Game Hacking Resource
- Um caminho de estudo para o programador de jogos
Recursos de hackers guiados (a partir de 2023, agora é conteúdo de paredes pagas):
- GHB1 - Comece aqui Guia para iniciantes para hackers de jogo
- GHB2 - Guia para iniciantes para engenharia reversa
- GHB3 - Guia intermediário para hackers de jogo
- Como fazer um BOT MMO - MMORPG Bot Automation
- Hacks internos vs. externos - qual é a diferença?
Sites úteis ao longo do caminho
- Google (sério, use -o, muito, o tempo todo)
- Documentação oficial da Microsoft (inclui documentações sobre MSVC, DirectX, Win32 API, etc.)
- Godbolt (extremamente útil para verificar o código C ++ gerado pelo compilador)
Palavras -chave que você deseja aprender em geral
- Varredura de memória
- Edição de memória
- Patching de memória
- Varredura de padrões
- Assembléia x86
- ASSENTO X64
- Depuração do processo
- Desmontagem Código
- Código de descomposição
- Função enganche
- API Behing
- Funções de desvio
- Injeção de DLL
- Cheats internos
- Cheats externos
- Tópicos
- Formato do Windows PE
- API WIN32
- Windows Internals
- Anti-debugação
- Anti-reversor
- Anti-tamper
- Empacotadores de software
- Desembala de software