Jump to content

Client patching for 4.x support


Recommended Posts

Posted

Well, it's about time we start discussing it, and how MaNGOS will handle it both practically and legally. We won't get around patching in one way or another.

We generally have two approaches:

* Use a loader that injects a DLL into WoW which then patches the memory.

* Patch the executable on disk.

Personally, I prefer the latter. It's easier.

I wrote this tool a few months ago: https://github.com/Trinity-Encore/Encore/blob/master/Trinity.Encore.Patcher/ClientPatcher.cs

It uses pattern scanning to find offsets in the executable to patch, so it works for virtually any 4.x executable.

Posted

Without resolve this part we can have any progress with 4.x support :(

Specailly important question is we can include sources of tool to mangos repo if talk about patcher (that also more simple if allowed from legal point) or loader...

Posted

Hm i can't really say that i know how this stuff works...

Would dll injection also work under wine (linux)?

What to do with the Mac client? Is it a universal binary (PPC + x86)?

Posted

Since Wine emulates the Win32 API injection should work there, too. Try and see :)

From the legal side it does not really matter which route we chose, limitations are the same as with pre 4.0 clients anyway.

  • 2 weeks later...
  • 3 weeks later...
  • 2 weeks later...
Posted

nice.

Next question: currently it C# program, we can ofc use it as-is but if it will not include binary version then will create problems for ppl - req. additional VS component installed. So is it ok have binary form with project? if ok, then we can possible just use as-is, right?

Posted

hm, i just noticed that this project is under the MIT license. i assume this is no problem because it's in a diff. repo as the rest of mangos, right? (mangos is under GPL (was it GPLv2 ?)).

Posted
hm, i just noticed that this project is under the MIT license. i assume this is no problem because it's in a diff. repo as the rest of mangos, right? (mangos is under GPL (was it GPLv2 ?)).

It could be in the same repo and still be licensed under the MIT License. It only matters if we linked this program directly into MaNGOS.

Posted

Hello,

I did port it to C++, was quite easy.

I can't access a sharing site from here and cannot find a way to attach a file, so you will have to wait for this evening :D

Posted

Nice, as i say better have similar programming language use for linked projects/tools for decrease problems for users.

License as i understand must be preserved. But if none objections core replaced by C++.

Then we not need binaries maybe and less legal points then.

Posted

I don't really agree XTZ

Initializing a const std::vector is a pain in C++

I would have to do either:

const std::vector<byte> replace(5);
replace[0] = 
replace[1] = 
...

or I would have to overload some std::vector operator to fill it anyway with an array, so a time lost for me and the application ;)

And all this just to remove the arrays length I have to pass arguments to the methods.

Posted
Crash if run not in wow dir.

The second link I posted fixed this.

But more bad news. For me fail patch 4.1.0 exe :(((

Addition info: C# version also fail patch. So tool required offset or more deep updates :((

I have same problem, unable to patch neither wow.exe 4.0.3, nor 4.1.0. Only wow.exe 4.0.6 patches properly.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use