Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Windows 8/10 Client Support Fix

Initiate Mage
Joined
Dec 15, 2019
Messages
3
Reaction score
0
Through all the reasearch of @Eric at #21. Yep, the root cause is from WINAPI GetModuleFileNameW , i dont know why it happened, but i have found the way to fix it. It failed randomly when dinput8 call GetModuleFileNameW(0x400000, L"", 260) at 2 address for example: "0x538F2D02" and "0x5390AD14"..
As the document on MSDN:
PHP:
DWORD WINAPI GetModuleFileName(
  _In_opt_ HMODULE hModule,
  _Out_    LPTSTR  lpFilename,
  _In_     DWORD   nSize
);
Here is the result return when it failed.
PHP:
ReturnAddr(538F2D02)
The module file name is: "". Result returned: 0

ReturnAddr(5390AD14)
The module file name is: "". Result returned: 0
[BUG] DInput8Create return failed.

Here is the result return when it success.
PHP:
ReturnAddr(5DA02D02)
The module file name is: "C:\Users\Public\MapleV62\localhost.exe" . Result returned: 38

ReturnAddr(5DA1AD14)
The module file name is: "C:". Result returned: 3
As you can see, GetModuleFileNameW(0x400000, L"", 260) cannot return the path file name (the lpFilename = "" in this case) and return 0, so it made failed for DInput8Create. (Still don't know why it failed). After run client for 10+ time, i have realized that the first 4 bytes is change everytime you run the game, but the 4 last bytes never change. It is 0x2D02 and 0xAD14. So i have do more research with the result above:
1. I tried to modify and hardcode it to make lpFilename="C:\Users\Public\MapleV62\localhost.exe" and the return value is the length of lpFilename....and hell yeah.... it work perfectly every single time :thumbup1:.
2.. As some research on the internet, it tried to make dinput8 to call GetModuleFileNameW(NULL, L"", 260); and it work perfectly too.
So, after 1. and 2., i has detouring the WINAPI GetModuleFileNameW to made it call this function:



Here is the final result :laugh::thumbup1:
hi im trying to understand what to do here and how to fix this problem i don't understand here anything, could any1 clarify this? ty
 
Junior Spellweaver
Joined
Nov 16, 2010
Messages
144
Reaction score
72
hi im trying to understand what to do here and how to fix this problem i don't understand here anything, could any1 clarify this? ty

1. Try to make a proxy dll (find a thread in this forum, i remmeber there is already have a thread to guide you how to make proxy dll)
2. Search on google how to Detour a function with MSDetour
3. Using my code above to Detour win32's function "GetModuleFileNameW"
4. Insert detour code to proxy .dll
5. Build proxy .dll file and put it into game folder
6. Enjoy with the game.

btw: you should have a little knowledge of C++ to do all the step above
 
Initiate Mage
Joined
Oct 13, 2006
Messages
94
Reaction score
8
Im trying to set my using Client to start in Fullscreen again. It is the HeavenMS Localhost EXE (v0.83).
Using "OllyDbg" with the following Address : 009F7A9B

Now i try to change it back to be Fullscreen :

MOV EAX,0
change to
MOV EAX,DWORD PTR DS:[BF1AC8]

But it will not work and i get a Error from "OllyDbg" : Unknown Identifier :(

Can anyone help me please?
 
Back
Top