wowdecomp README

The project's README from github.com/SatyPardus/wowdecomp. As one markdown file: README.md.

wowdecomp

A C++ decompilation of the World of Warcraft 3.3.5a client (Wow.exe, build 12340, June 2010).

Join the discord for other clients and to show off some cool stuff you build.

https://discord.gg/DsZMGUD8aT

Every function is reconstructed from the original binary and keeps the address it came from in an // OFFSET: tag, so each one can be compared against the original. The source tree follows the layout of the original client (Engine/Source/<Module>, WoW/Source/<Module>, original file names).

x64 is the main target. Win32 still builds and is used to check struct layouts against the 32-bit original.

Progress

The percentages below measure how much of the original binary has a counterpart in this source tree. They do not say how much of the game works, and the missing part is not missing gameplay: the client builds into a complete executable and the game is 100% playable. Bugs could still be hiding, though; a ported function can behave differently from the original.

Measured against the 12340 binary on 2026-10-15. A function counts as ported when its address is tagged in the source.

Ported Total Share of the original
Functions 24,515 27,157 90.3%
Code bytes 5,270,186 5,656,573 93.2%

The total leaves out 658 functions that IDA identifies as compiler library code and 132 import thunks. Most of the untagged remainder is code the build gets elsewhere: compiler-generated code (static initializers, template instances) that our compiler emits on its own, C runtime helpers, and third-party libraries that are linked from their upstream sources instead of being decompiled (FreeType, zlib, PCRE, parts of FMOD Ex).

Requirements

Building

From a Developer PowerShell or any shell with cmake on PATH:

git clone https://github.com/SatyPardus/wowdecomp.git
cd wowdecomp

# x64 (main target)
cmake -S . -B build/x64 -G "Visual Studio 17 2022" -A x64
cmake --build build/x64 --config Release --target WowClient --parallel

# Win32 (optional, needs NASM)
cmake -S . -B build/win32 -G "Visual Studio 17 2022" -A Win32
cmake --build build/win32 --config Release --target WowClient --parallel

In-source builds are refused, so keep the build directory separate (build/ above).

The client is written to bin/Win/:

Target x64 Win32
WowClient WowClient64.exe WowClient32.exe
Wow Wow64.exe Wow32.exe

WowClient is the client with a crash logger: it opens a console window and writes WowClient_crash.log when the client crashes. Wow is the same client without it. You can also turn the logger off in WowClient with -DWOWCLIENT_CRASH_LOG=OFF.

Options

CMake option Default Effect
WOWDECOMP_DISABLE_SIGNATURE_CHECKS OFF Skip the MPQ file and .toc.sig signature checks, so modified game data and interface files load
WOWCLIENT_CRASH_LOG ON Build WowClient with the crash logger
WOWCLIENT_OUTPUT_OVERRIDE empty Name the WowClient executable something other than WowClient64 / WowClient32

Running

  1. Copy the Data folder of your 3.3.5a client into bin/Win/, so you have bin/Win/Data/.
  2. Point Data/<locale>/realmlist.wtf at the server you want to connect to.
  3. Start bin/Win/WowClient64.exe (or Wow64.exe).

Layout

Path Contents
Engine/Source/ Engine modules: Storm, Gx (Direct3D 9 / OpenGL), Model2, Frame/FrameXML UI, SoundEngine, Lua, ...
WoW/Source/ Game modules: objects, world rendering, UI, networking, database, glue screens
WoW/Common/ Code shared by the game modules
ThirdParty/ Libraries linked from their upstream sources
Tools/WowClient/ The WowClient executable target
Tools/XvidDecoder/ x64 movie decoder that replaces the original 32-bit DivxDecoder.dll

Special thanks

wowdecomp (SatyPardus/wowdecomp)

opengl
Searching Database…

What is this?wowdecomp is a C++ decompilation of the World of Warcraft 3.3.5a client (Wow.exe, build 12340, June 2010), reconstructing the original game executable function by function from its binary.
Is this a mod on top of the game, or the actual client source code?It is the client's own source code rebuilt from the compiled binary, not a mod: 90.3% of functions and 93.2% of code bytes are already ported, and the project builds into a complete, fully playable WoW 3.3.5a executable.
How do I build it?Install Visual Studio 2022 with the C++ desktop workload and CMake 3.10 or newer, then run CMake from a Developer PowerShell into a separate build folder (in-source builds are refused); the result lands in bin/Win/ as WowClient64.exe or Wow64.exe.
Do I need an actual WoW 3.3.5a client to use this?Yes, you need your own copy of the 3.3.5a (12340) client since no game data is included in the repo; Win32 builds additionally require NASM and the DivxDecoder.dll copied from that client.
Is the decompilation 100% complete and bug-free?No, roughly 9.7% of functions aren't yet tagged with an original address, and even ported functions can behave slightly differently from the original despite the game being fully playable.
Does this only run on Windows?Yes, building and running require Windows 10 or 11 with Visual Studio 2022; x64 is the main target while Win32 is mostly kept to check struct layouts against the 32-bit original.
What's the difference between the WowClient and Wow build targets?WowClient includes a crash logger that opens a console window and writes WowClientcrash.log on crashes, while Wow is the same client without that logger.
Why does the source still rely on some third-party libraries instead of decompiling everything?Pieces like FreeType, zlib, PCRE and parts of FMOD Ex aren't Blizzard's own code, so they're linked from their upstream sources instead of being reconstructed.
What does the OFFSET tag in the code mean?Every reconstructed function carries a // OFFSET: comment with its original binary address, letting it be directly compared against the real Wow.exe.
Is there a community around this for other client versions?Yes, the project runs a Discord where people discuss other WoW clients and share things they've built on top of this decompilation.
Creator
SatyPardus
Size
13.4 MB
Stars
327
Updated
CommitOct 17
Age
17d
Commits · 90 Days