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!

GMS v95 Client

Status
Not open for further replies.
Initiate Mage
Joined
Jun 19, 2017
Messages
2
Reaction score
4
I was a little bored today, so I decided to unpack, devirtualize and fix the GMS v95 client (making it completely runnable). So here you go :)



You still need to do something to make it runnable (because of HackShield):

Compile and put ehsvc.dll into the /HShield/ folder. Run with the following hooks:

Code:
[COLOR=#839496][COLOR=#859900]bool[/COLOR] [COLOR=#268BD2]hook_CreateProcessA[/COLOR]()[/COLOR][COLOR=#839496]{ [/COLOR][COLOR=#839496][COLOR=#859900]static[/COLOR] [COLOR=#268BD2]decltype[/COLOR](&CreateProcessA) _CreateProcessA [/COLOR][COLOR=#839496]= &CreateProcessA; [/COLOR][COLOR=#859900]decltype[/COLOR][COLOR=#839496](&CreateProcessA) CreateProcessA_hook = [](LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation) -> BOOL { [/COLOR][COLOR=#859900]const[/COLOR][COLOR=#839496] [/COLOR][COLOR=#859900]char[/COLOR][COLOR=#839496] _hsupdate[] = [/COLOR][COLOR=#2AA198]"HSUpdate.exe"[/COLOR][COLOR=#839496]; [/COLOR][COLOR=#859900]const[/COLOR][COLOR=#839496] [/COLOR][COLOR=#859900]char[/COLOR][COLOR=#839496] _autoup[] = [/COLOR][COLOR=#2AA198]"autoup.exe"[/COLOR][COLOR=#839496]; [/COLOR][COLOR=#859900]if[/COLOR][COLOR=#839496] (lpCommandLine != [/COLOR][COLOR=#2AA198]NULL[/COLOR][COLOR=#839496]) { [/COLOR][COLOR=#859900]bool[/COLOR][COLOR=#839496] is_hsupdate = ([/COLOR][COLOR=#DC322F]strstr[/COLOR][COLOR=#839496](lpCommandLine, _hsupdate) != [/COLOR][COLOR=#2AA198]NULL[/COLOR][COLOR=#839496]); [/COLOR][COLOR=#859900]bool[/COLOR][COLOR=#839496] is_autoup = ([/COLOR][COLOR=#DC322F]strstr[/COLOR][COLOR=#839496](lpCommandLine, _autoup) != [/COLOR][COLOR=#2AA198]NULL[/COLOR][COLOR=#839496]); [/COLOR][COLOR=#859900]if[/COLOR][COLOR=#839496] (is_hsupdate || is_autoup) { [/COLOR][COLOR=#859900]if[/COLOR][COLOR=#839496] (is_hsupdate) { HANDLE hEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, [/COLOR][COLOR=#2AA198]"Global\\EF81BA4B-4163-44f5-90E2-F05C1E49C12D"[/COLOR][COLOR=#839496]); SetEvent(hEvent); CloseHandle(hEvent); } [/COLOR][COLOR=#859900]char[/COLOR][COLOR=#839496] lpszFilePath[[/COLOR][COLOR=#2AA198]256[/COLOR][COLOR=#839496]]; StringCchCopy(lpszFilePath + GetSystemDirectory(lpszFilePath, [/COLOR][COLOR=#2AA198]256[/COLOR][COLOR=#839496]), [/COLOR][COLOR=#2AA198]256[/COLOR][COLOR=#839496], [/COLOR][COLOR=#2AA198]"\\svchost.exe"[/COLOR][COLOR=#839496]); [/COLOR][COLOR=#859900]return[/COLOR][COLOR=#839496] _CreateProcessA(lpszFilePath, [/COLOR][COLOR=#2AA198]"svchost.exe"[/COLOR][COLOR=#839496], [/COLOR][COLOR=#2AA198]NULL[/COLOR][COLOR=#839496], [/COLOR][COLOR=#2AA198]NULL[/COLOR][COLOR=#839496], FALSE, dwCreationFlags, [/COLOR][COLOR=#2AA198]NULL[/COLOR][COLOR=#839496], [/COLOR][COLOR=#2AA198]NULL[/COLOR][COLOR=#839496], lpStartupInfo, lpProcessInformation); } } [/COLOR][COLOR=#859900]return[/COLOR][COLOR=#839496] _CreateProcessA(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation); }; [/COLOR][COLOR=#859900]return[/COLOR][COLOR=#839496] function::redirect([/COLOR][COLOR=#2AA198]true[/COLOR][COLOR=#839496], [/COLOR][COLOR=#859900]reinterpret_cast[/COLOR][COLOR=#839496]<[/COLOR][COLOR=#859900]void[/COLOR][COLOR=#839496]**>(&_CreateProcessA), CreateProcessA_hook);}[/COLOR]

Edit: This was primarily done for fun and to test my TheMida devirtualizer. I do not take requests.
 
Last edited by a moderator:
Status
Not open for further replies.
Back
Top