• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

warcraft 3 programming

Status
Not open for further replies.
Level 5
Joined
Jan 26, 2015
Messages
94
I will make the engeneering inverse but i need know what is the language programming for make that
 

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,180
Its possible apply engineering inverse to this game like ollydbg
Or other program?
Yes, nothing stops you. However be aware it does technically violate the Terms of Use of the game and also can possibly be considered illegal if you are caught doing it.

I will make the engeneering inverse but i need know what is the language programming for make that
You clearly have no idea about reverse engineering... If you did you would not ask that.

Warcraft III was written mostly with C++ looking at the code structure. I would not be surprised if it was even built using Visual Studios C++ (and old version) by the names of some of the dlls and files it has. Being an oldish game I would not be surprised if some sections used inline assembly as compilers were not as good at optimization as they are now.

However the game is closed source as such the C++ source code is not available.

The only part of the game you have is the x86 machine code contained in the dlls and executables. This can be converted into x86 assembly code (human readable) which you can then reverse engineer and understand exactly how Warcraft III does everything. Easy right?

Well unfortunately the average line of C++ code converts into multiple lines of assembly code. Machine code also does not need any human readable identifiers to operate meaning that your assembly consists only of static linked values. Seeing how a game as complex as WarCraft III probably used several hundred thousand lines of C++ code, the result is several million lines of assembly code to go through which have no human readable indication of what each procedure and function does.

To reverse engineer WC3 you literally have to go from function to function and document what the functions do. Even with full knowledge of the state of the processor and being able to inspect the functions in operation this can take hours for some function. Worse is that specific use cases of functions might be implicitly inlined by the compiler so that you end up having to reverse engineer what was physically the same code many times.

This is why no one has fully reverse engineered WC3 already. The closest that occurred were the people who developed "NO CD cracks" during WC3's early days (before the patch that did that) and the people who created custom JASS natives, both of which targeted very specific parts of the engine.

The main issue is that archiving the reverse engineering notes (what function does what) in the public domain is technically illegal. Where as games like Sonic 1/2/3 for the SEGA Genesis can get away with it for being a game targeting an obsolete platform, WC3 is still actively support by Blizzard (although not much any more) so they will likely seek legal action against any such documentation attempt.

Additionally if Blizzard ever released an update, the re-compile will probably render the notes useless due to all the changes made.

Just to note, all the game code is inside "game.dll" and not the executable files. The file "Storm.dll" mostly contains platform specific code such as I/O, OS system calls etc (people reverse engineered this to understand MPQ file format). "worldedit.exe" probably contains all World Edit specific code. "war3.exe" likely only contains initialization code, CD protection and stuff like that.
 
Status
Not open for further replies.
Top