0 Members and 1 Guest are viewing this topic.
Hi,yes im still working on it as the release of the 1.14x series of D2 patches introduced a big bunch of new and heavy problems.Maybe someone should tell blizzard to stop development and release of senseless patches. Sadly at least i have to support 1.14d.GreetingsSeltsamuel
Hi,you are welcome and did not offend me in any way as the Question was absolutely understandable and im sure you are not alone with this, thats why i decided to give a longer answer to explain my points. Fact is with 1.14x blizzard kicked the entire modding community back to zero without giving any new noteworthy content or feature back to them. I even do not think this was intentionaly but the new coderteam has simply no idea about the consequences and seem to have simply no idea or connection to the modding community.
I got it to work with 1.14d. I have windows 10. Damn good software. With the Fall Creators Update you can disable DEP and ALSR through Windows Defenders Exploit Options.
There is a simple MPQFix available now for the 1.14 installer MPQs: https://www.diabloii.net/forums/threads/tech-support-installing-from-bnet-1-14d-installer-doesnt-allow-switching-back-to-1-13d.960439/#post-8827207Just download, extract to your Diablo directory and run the Fix_MPQs.batI also included it to my version changer: https://versionchanger.chaosmarc.de
int _tmain(int argc, _TCHAR* argv[]){ HMODULE hGame = LoadLibrary(_T("Game.exe")); FixModuleReloc(hGame); FixModuleIAT(hGame); PatchEP(hGame); CRTWinMainEntry_t pfEP = (CRTWinMainEntry_t)((UINT_PTR)hGame + 0x282985); pfEP();//run the game! return 0;}So this is how to load game.exe as a "dll" for 1.14x+, patching of the EP is done is turn it into a CRT init only, then you are free run the game; else you can just call CRTWinMain after applying patches/loading dlls/etcgiven how little D2 even uses the CRT, one can even get away with merely calling the heap init etc, the source for this is normally kept in crt0.cpp in the MSVC CRT source directoryunfortunately skipping out there dodgy telemetry stuff requires an extra patch or three.
In 1.14 its possible to load Game.exe as a dll. via rewrite of Diablo II.exe This was posted a couple days ago as a "Proof of Concept" by Necrolis on Discord chat.Code: [Select]int _tmain(int argc, _TCHAR* argv[]){ HMODULE hGame = LoadLibrary(_T("Game.exe")); FixModuleReloc(hGame); FixModuleIAT(hGame); PatchEP(hGame); CRTWinMainEntry_t pfEP = (CRTWinMainEntry_t)((UINT_PTR)hGame + 0x282985); pfEP();//run the game! return 0;}So this is how to load game.exe as a "dll" for 1.14x+, patching of the EP is done is turn it into a CRT init only, then you are free run the game; else you can just call CRTWinMain after applying patches/loading dlls/etcgiven how little D2 even uses the CRT, one can even get away with merely calling the heap init etc, the source for this is normally kept in crt0.cpp in the MSVC CRT source directoryunfortunately skipping out there dodgy telemetry stuff requires an extra patch or three.@whist I disagree. But if you'd like to dump 3000-6000 hours into it reversing game.exe and then give it all way, feel free.
1. I do not want to have Forks of D2SE that are all incompatible to each other.. as this will destroy the idea behind it to build a single and common platform for all (every modder has a defined state of files he can rely on and working ways to activate all existing mod systems aswell as loading own mpq and .dll, all this without influencing other mods or beeing influenced from them because every mod is separate in his private space including the savegames).
Reverse engineering the exe is illegal under the Digital Millenium Act, and in violation of the licence for the game. I have to know the Digital Millenium Act because I run an internet radio station.