Jump to content

Reverse Engineering Tutorials Collection


Recommended Posts

Hello. I would like to share with you my private tutorial links collection. These are
useful topics from Xentax, Zenhax and any other reverse engineering related sites that
I was able to find in the Internet. I have put them into categories.
You may encounter situation when one tutorial fits to few categories, but it is placed
only in the category that it fits most. Also, you may encounter tutorials with "[PL]" mark,
these are tuts in Polish language. If you don't understand this language, just skip them.

Also be aware that I haven't read/watch some of these tutorials yet, so I can't recommend you
which tutorial is the best choice, sometimes I'm still learning new things just like you
and on this list you may find tuts that are not very useful for you, so don't blame
me for that.  🙂 Just pick your favourite category and start learning.
If you are complete newbie, I would recommend to start with tuts from category
"Basic knowledge".

If you have any other good source of knowledge, you can write a comment below
and I will update this tutorials collection.

Also remember that those links may be dead some day, so don't blame me for that
and just make a copy for private use  🙂

So that's it. Enjoy.  😄

Links to tutorials:

Basic knowledge / Archive extraction
    - Definitive Guide To Exploring File Formats
    - MultiExCommander Manual
    - What is a File Format?
    - Let's MultiEx
    - MultiEx Commander 4.5 YouTube tutorials
    - MexScript Documentation
    - Analyzing and Reverse Engineering a Game Archive
    - Key points to successful hex reading
    - Running a command-line tool on all the files of a directory and sub-folders (batch)
    - Overview of game file formats and archives
    - REWiki - Reverse engineering hints
   - REWiki - Links to reverse engineering resources
   - HOWTO-Reverse Engineering
    - Basic BMS Scripting
    - QuickBMS documentation
    - QuickBMS crc engine
    - QuickBMS - Reimporting files in the archives
    - QuickBMS - Scan all the supported compressions
    - Example of archive format reversing with QuickBMS (medium)
    - Practice with archives and quickbms scripts
    - [TUTORIAL] Making BMS Scripts

Encryption tutorials
    - How to guess basic obfuscations: xor and sum/rot
    - Reverse simple decryption
    - Reversing AES Keys UE4 + AES Keys Collection
    - How To Get PAK RSA Key (Wolcen / CryEngine Games)
    - Retrieving ZIP passwords from games - the zero skills way
    - Retrieving ZIP passwords from games - the debugger way
    - Retrieving ZIP passwords from games using plain-text attack
    - Hacking Zip Passwords (C9)
    - Checksum / CRC scanning
    - Decrypt any vita game (no custom firmware needed)
    - How Unpack Themida 2.x.x or How Unpack Themida 2.x.x (WXP)
    - SM Hasher / Murmur3 hash + Wiki + Python implementation
    - LCG + sources + Cracking LCG + LCG in VC2
    - Decrypt unity 3d files with Frida
    - [Tutorial] How to get Allegro passwords

Hash tutorials
    - [Tutorial] How to restore hashed filenames from archives

Compression tutorials
    - How to recognize the compression algorithms with your eyes
    - LZMA SDK (binaries + source code + specification) + LZMA Wiki
    - Bc7 and bc5 decompression and compression
    - Offzip - deflate/zlib scanning and extraction
    - ZSTD compression + documentation
    - Reverse Engineered old Compression Algorithm for Frogger
    - Oodle Data Compression + Oodle compressor + Oodle wiki page
    - RLE Compression explained + RLE Wiki + RLE in Python
    - LZ77 explained + LZ77 encoding + LZ77 decoding + LZ77 in Python
    - LZSS Compression + LZSS explained
    - LZ Compression + Open-source LZ Compressors

Debugging / Decompilation / Disassembling
    - Lenas Reversing for Newbies
    - Reversing Spider-Man 2000
    - Real World Decompilation with IDA Pro
    - IDAPython conditional breakpoints
   - The Beginner's Guide to IDAPython
   - Using IDAPython to Make Your Life Easier Part1 + Part 2 + Part 3
   - Reverse Engineering with Ghidra
   - How to Reverse Engineer with IDA Pro Disassembler
   - How to reverse engineer functions
   - Debugging “Dust: A Tale of the Wired West”
   - Reverse Engineering Dust: Uncovering Game Scripts
   - Reverse Engineering an Xbox360 Game
   - Reverse engineering C programs - bin 0x10
   - Memory Hacking — External Signature/Pattern Scanning Tutorial
   - Remote Debugging with IDA Pro (Windows) + Connecting host with VirtualBox
   - Remote Debugging with IDA Pro (Linux)
   - Basic IDA Python Scripting

Hooking / DLL Injection
    - Simple C++ DLL Injector Source Code Tutorial - Quick and EZ
    - Dll Injection Explained (how it works + source code)
    - Manual Mapping DLL Injection Tutorial
    - Blizzhackers DLL Injection
    - API Hooking and DLL Injection on Windows
    - [PL]ReverseCraft #7 - Inline hooks, DLL injection
    - [PL]DLL INjection by Maciej Pakulski (PDF)
    - C/C++ Memory Hacking — Function Hooking / Detouring + How Function Hooking / Detouring Works
    - C++ Detour / Hooking Function Tutorial
    - [Tutorial] The different ways of hooking
    - API Hooking with MS Detours + MS Detours 4.0.1 description + source
    - Hooking tutorials
    - Inline hooking in Windows
    - C++ Internal Trampoline Hook Tutorial - OpenGL Hook
    - MinHook - The Minimalistic x86/x64 API Hooking Library + source on github
    - DLL Hijacking
    - [Tutorial] Simplest function hooking with IDA, Detours & C++
    - [Tutorial] DetourFunction __thiscall
    - How to Hook Functions - Code Detouring Guide
    - Resources About Hooking
    - [Tutorial] Hooking Java Functions

Console Tutorials
    - PS2 Texture Swizzling
    - PS1 LibCrypt tutorial + LibCrypt Sectors Mappings + LibCrypt Bible
    - Gears: A look Inside the Final Fantasy VII Game Engine
    - Convert Ps3 to Debug 4.21
    - Extract Samples and MIDI files from Square PS2 Games
    - Extracting Xbox 360 game files
    - Reverse Engineering Xbox360 SaveGame (Dead Space)
    - Extract + Decrypt 3ds Roms
    - [HOW-TO] Assembling 3DS Homebrew for Gateway
    - [Tutorial] How to Decrypt, Extract & Rebuild 3DS|CIA|CXI Files
    - PS2 Hidden files + this + this + this + IsoBuster + Ratchet and Clank PS2 discoveries + Ratchet and Clank Hidden files extractor + this
- PS2 Modding Tutorials + PS2 Modding Tools + PS2 AIO Project
- [TUTORIAL] [PS2DEV] An Introduction to PS2DEV and it's History
- Racing Lagoon Hacking Deep Dive (Translating PS1 games - tutorial)

DOS Tutorials
    - DOS games reverse engineering guide
    - DOS file formats / encryptions / compressions etc.
    - DOS game "Nomad" (1993) documentation and tools

    - The basics of VGM ripping + VGM Ripping Tools
    - Common Sound Formats
    - How to scan audio codecs with ffmpeg
    - Tutorial on vg-resource
    - Extract Binary Domain's Music/Sound (CRI .cpk bgm)
    - Batman Arkham Knight - Extract Soundtrack
    - Multimedia Wiki (Audio, Video, Codecs)
    - TXTH files documentation

    - Finding graphics
    - Xentax Wiki - Image file formats
    - Tutorial : How to edit EA's FIFA PS2 TEXTURE

Source code + documentation
    - PS1 BRender Engine (Harry Potter 1, Harry Potter 2 etc.)
    - PS1 BuggyBunny (Bugs Bunny)
    - Python Tools Collection
    - KAO2_PAK + documentation
    - J2ME game Stalker
    - Soul Calibur 3 Reversing

    - Reverse Engineering for Beginners + Reverse Engineering challenges + Compiler Explorer
    - Game Hacking: Developing Autonomous Bots for Online Games
    - Reversing: Secrets of Reverse Engineering
    - The IDA Pro Book, 2nd Edition: The Unofficial Guide to the World's Most Popular Disassembler
    - Mastering Reverse Engineering
    - Practical Reverse Engineering
    - [PL]Gynvael Coldwind Praktyczna inżynieria wsteczna
    - [PL]Asembler. Sztuka programowania
3D Models
    - Approaches of Parsing Bone Representations
    - Noesis tutorial Basic Model
    - Video tutorials on model formats reversing
    - Make_obj (C source)
    - Extracting simple models
    - Analyzing and Extracting a Game Model
    - [Tutorial] How to extract bones from any games with Noesis
    - Sanae3D - 3D format converter
    - Background Knowledge of Bone Stuffs
    - Extract 3D models from binary files
    - Writing an Obj Convertor in C
    - [crash course] How to get multiple submeshes using Make_H2O
    - Very Basic model format conversion (Shaiya).
    - INTEL GPA mesh ripper tutorial + tool (x32,x64,DX9,10,11)
    - 3ds Ram Dump
    - [Tutorial] Exploring model formats: 9 Dragon
    - Noesis tutorial Zlib
    - Video tutorial on full model format reversing (Planetside)

krystalgamer's Lair
    - Marvel Avengers - Writing a server emulator
    - Spider-Man 2000 - Save file protection
    - Spider-Man 2000 - Re-enabling a cheat code
    - Spider-Man 2000 - Save file content exploration
    - Spider-Man 2000 - PKR Format
    - Spider-Man 2000 - Custom File Loader
    - Spider-Man 2000 - Apple to the Rescue!

Mobile (Android, iOS, J2ME)
    - OWASP guide
    - OWASP guide crackmes source code (Warning! Big spoilers!)
    - Beginners Guide to Reverse Engineering Android Apps
    - [Android] Decrypt unity 3d files with Frida
    - Mobile Game Asset Download
    - [PL]Reverse engineering mobile app (Niebezpiecznik)
    - J2ME Reverse Engineering

Capture The Flag
   - Solving CTF Challenges Part1 and Part 2
   - [PL]Capture the flag Tutorials playlist

   - The Ultimate Game Hacking Resource
   - Low-Level Programming University
   - 1024bar tutorial
   - [PL]ReverseCraft blog and ReverseCraft playlist
   - [PL]Modding tutorials
   - UE4 games texture replace
   - nullsecurity.org
   - crackmes.one
   - RCE Tools Library
   - GHB1 - Start Here Beginner Guide to Game Hacking
   - Ripping Tutorials
   - Searching text strings using Total Commander


  • Like 7
  • Thanks 7
Link to comment
Share on other sites

4 hours ago, Zyxell said:

Are the links inside of  [url] brackets dead possibly or could it be the embedding is simply not working on this site?

I suppose they were copied from some of the older forums, which used BBCode. This forum doesnt use it so that is why url links look like that, probably just needs a bit of manual labor to rewrite them.

So not really that embeding is not working, its more like this site uses different formatting. Dont think they are necessarily dead links, maybe some if this is older.

Edited by wssdude
  • Like 1
Link to comment
Share on other sites

1 minute ago, wssdude said:

I suppose they were copied from some of the older forums, which used BBCode. This forum doesnt use it so that is why url links look like that, probably just needs a bit of manual labor to rewrite them.

So not really that embeding is not working, its more like this site uses different formatting. Dont think they are necessarily dead links.

Oops I forgot to update my reply post above. I tested out some of the links and they do work, as you stated it did take a bit to get urls rewritten correctly.

Link to comment
Share on other sites


I suppose they were copied from some of the older forums, which used BBCode. This forum doesnt use it so that is why url links look like that, probably just needs a bit of manual labor to rewrite them.

I'll try to rewrite them all soon. It should take no more than half an hour of manual work. 😄

  • Like 5
Link to comment
Share on other sites

2 minutes ago, Krisztian1990 said:

Just a simple question, is it really difficult to reverse engineering fileformats for classes section of  data container files ? So not the whole game, but for the data containers. 

Depends on a game. In some games it will be easy and in other games it will be very hard.

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...