w3lh / w3l

Warcraft III TFT/RoC PvPGN Loader
GNU General Public License v3.0
53 stars 25 forks source link

w3l - Warcraft III RoC/TFT 1.22a+ PvPGN loader (source code)

This software patches Warcraft III to enable connections to PvPGN servers. It was written in part by:

This program is Free Software distributed under the GNU GPL, version 3. For the full terms of the license refer to license.txt in the root of the source distribution.

  1. Compiling

Build w3l.c as an exe. w3lh.c must be built as a DLL. Required exports are contained in the w3lh.def file. You may need to change the base address of w3lh.dll when linking.

By default, VC++ links to its C runtime library dynamically. It may be required that this not occur, i.e. in case your target audience does not have or does not want to install the Visual C++ runtime libraries. In this case it is necessary to perform a static link with the C runtime. Know that doing so will cause the generated code to become quite a bit larger. Here is where you can do so:

Configuration Properties -> C/C++ -> Code Generation -> Runtime Library

It may also be advantageous to change the default base address of your DLL or EXE. You can do so here:

Configuration Properties -> Linker -> Advanced -> Base Address

The default image base for an executable is 0x400000; for a DLL it is 0x10000000. The range for a valid base address is (in hex notation) is from 0x1000000 to 0x80000000. In addition, the base address must be on a multiple of 64K (0x10000). Some good starting values may be 0x7E540000 for w3l and 0x76290000 for w3lh.

1a. What the heck is "SRP3"?

SRP3 stands for "Secure Remote Password Protocol", version 3. Technical details can be found here:

  1. Running

Place both w3l.exe and w3lh.dll into your Warcraft III directory. Run 'w3l.exe' when you want to connect to a PvPGN server. Run 'war3.exe' when you want to connect to battle.net.

Notes:

Standard disclaimers:

The included release is built with the "old" Starcraft-style hash code. It should work with existing accounts. If you want SRP3 support you'll need to rebuild the DLL with USE_SRP3 enabled in patches.h.

  1. Enjoy!

  2. Thanks go out to

    • ACiD for their 1.18a patch and source
    • gr11x for the initial work on the new patch
    • Rupan for the C port of w3l.asm, the posting of the ACiD patch source, and various fixes to the source
    • PvPGN community for help
    • the PvPGN and bnetd contributors
    • Ken Saunders and mouserunner.net for icon
    • ReservoirDOG for beta-testing
    • Google Chrome developers for DEP disabling method
    • Blizzard for making such a fantastic game

Thanks to Keres on the PvPGN forums for releasing fixes and updates, and to all who helped test and debug this release there.

  1. TODO

    • include patch and sig asm instructions