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!
As the title says, its a localhost of the V95 version, which has the leaked PDB file.
Credits to @benjew for unpacking and unvirtualizing the client, and me for stripping checks and removing hackshield.
Looking foward for more members to release things for the community :, lets make Maple Story private server scene great again.
Features:
Removed start up banner.
CwvsApp::Setup starts the client correclty now.
Removed IP checks that uses ZInetAddr::GetIPAddr.
Removed checks in SetField.
Removed etracer.
Added Sleep function after d8inputcreate.
Adjusted client to send plain username and password and removed LoginAuth.
No more CRC checks.
Debuggable in IDA / CheckEngine(with real function headers poiting exactly where parameters are in stack).
TODO:
Fix /n problem for quests.
Downgrade UI.wz to old V92 version, I would be thankful if someone implement and release it.
Further testing in other plataforms, I tested it in a Windows 10 x64 environment.
But it only works on the first login try LOL then the stack pointer offset changes and I'm not gud enough to figure it out
More context:
The localhost patches `CNMCOClientObject::GetNexonPassport` (called from 005DBA77) to directly copy login id using strcpy instead of going through Nexon's auth code. However, since the address is fixed, on the following tries, the stack has changed and directly writing to the offset no longer works. If someone actually knows how to RE, I think the fix is to make the strcpy destination the same as whatever address is referenced by the code at 005DBD09. The calculation is [ESP+6C], which just happens to be 0019E4FC (which points to login id on the stack) on the first run but doesn't hold true for later runs.
So basically you'd have to add an argument to push the stack pointer as the second argument to CNMCOClientObject::GetNexonPassport, then find the proper offset, and then change the argument in strcpy.