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!

Orion2 Client - A Universal Localhost

Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
This is the Orion2 Client - A Universal Localhost for MapleStory 2.

MapleStory 2 functions the same way as MapleStory does, but with less client protection. This means, by hooking Winsock, we're able to redirect Nexon's IPs to our own. MapleStory 2 should also use the same NMCO, so you can hook it too if necessary (we don't though). Since we're able to do all of this, I've simply updated my old OrionDLL from MapleStory into this project!

Here's some important things to know:
- The client does not contain IP checks, CRC checks, and other various crap that MapleStory clients do (this means it's a lot easier to do memory edits <3)
- The client accepts custom IP and Port arguments, so we can send it to our own IP without actually having to hook winsock (since there's no IP checks, it won't crash us like MapleStory does)
- In order to connect to your server, you need to first bypass a static function that I call "IsNXLEnabled". This function is what will enable the use of IP and Port arguments, and has to be bypassed for the client to open. My AoBs have worked since the beginning of time so this shouldn't be a problem, but Nexon has been doing a lot of updates so it's only a matter of time until they're ineffective.
- Nexon supports old test server functionality that you can re-enable, such as accessing the login screen with a username and password box rather than auto-login from the nexon launcher. Also, you can enable the world selection screen (which is now useless with regions in effect).
- The IP of the client is currently hard-coded to 127.0.0.1 in Orion.cpp (RedirectProcess), I forget why I didn't concat the IP from Orion.h but I'll change it eventually.
- You should be able to log reports of exceptions when the client crashes thanks to Darter and his sick hooks
- Injecting the DLL is explained on the git, just add the dummy import to NxCharacter.dll's import table and rebuild it.

Source code:
 
Experienced Elementalist
Joined
Feb 10, 2008
Messages
249
Reaction score
161
LOOOOL AuthHook still works 5 years later ahahahaha even the nmco hooks :xdf:

------------

Could you go into some detail regarding the exception logging hook mechanism?

Nothing much to go into details about. Just adding a vectored exception handler and printing basic info about it ( throw address, CMSException names ). Just makes debugging easier since you know where to look.
 
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
Where can i find this orion2.dll file? I can't seem to locate it :S

You're supposed to compile this project to generate the Orion2.dll. This project doesn't currently support any release builds, so you're going to need to build this one yourself. Once you've gotten Orion2.dll, you'll need to read the quick how-to on the git to add it to NxCharacter's import table.
 
Initiate Mage
Joined
Apr 2, 2019
Messages
3
Reaction score
0
You're supposed to compile this project to generate the Orion2.dll. This project doesn't currently support any release builds, so you're going to need to build this one yourself. Once you've gotten Orion2.dll, you'll need to read the quick how-to on the git to add it to NxCharacter's import table.

Hi Eric,

I've compiled the repo and gotten the Orion2.dll, but when I try to replace the original MS2's NxCharacter.dll with the new one, I can't open up the client. It gives the error "Cannot fine 'NxCharacter.dll'. Please, re-install this application". Any ideas why? Do I need to do something to update the orion2 client to the latest version of ms2?

Thanks a bunch :)
 
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
Hi Eric,

I've compiled the repo and gotten the Orion2.dll, but when I try to replace the original MS2's NxCharacter.dll with the new one, I can't open up the client. It gives the error "Cannot fine 'NxCharacter.dll'. Please, re-install this application". Any ideas why? Do I need to do something to update the orion2 client to the latest version of ms2?

Thanks a bunch :)

You're adding the Orion2 dummy imports to NxCharacter.dll through CFF Explorer, correct? Just making sure because renaming Orion2.dll -> NxCharacter.dll isn't what you're supposed to do. Also, make sure after you load the DLL and add Orion2's exports in CFF Explorer that you rebuild and then save. If that's what you're doing already, and it still throws the same error, then it's because the DllMain returned false (very weird). The only way my DLL will return false is if hooking something fails, and usually when that happens I send a message dialogue telling you that.

I'll look into it myself on the latest MS2 client later today to see if it's something I need to fix or not, since if you were able to build the project I'd assume you know what you're doing enough to update the imports.
 
Initiate Mage
Joined
Apr 2, 2019
Messages
3
Reaction score
0
You're adding the Orion2 dummy imports to NxCharacter.dll through CFF Explorer, correct? Just making sure because renaming Orion2.dll -> NxCharacter.dll isn't what you're supposed to do. Also, make sure after you load the DLL and add Orion2's exports in CFF Explorer that you rebuild and then save. If that's what you're doing already, and it still throws the same error, then it's because the DllMain returned false (very weird). The only way my DLL will return false is if hooking something fails, and usually when that happens I send a message dialogue telling you that.

I'll look into it myself on the latest MS2 client later today to see if it's something I need to fix or not, since if you were able to build the project I'd assume you know what you're doing enough to update the imports.

Yep! Adding the imports, rebuilding & saving over the old one.

I figured that I might have done something wrong when compiling into the DLL, so I redownloaded and compiled again, but now I'm getting the following errors:
mCRH43v - Orion2 Client - A Universal Localhost - RaGEZONE Forums


Thanks for the help!
 

Attachments

You must be registered for see attachments list
Newbie Spellweaver
Joined
Feb 21, 2016
Messages
30
Reaction score
3
i just sended discord message about how nexon changed launch arguments.
pls check
 
Last edited:
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
Decided to touch this project again after a long, long while. I've committed to GitHub some cleanup, fixes, and updates to the source code.

Here's some key changes:
- Fixed Custom Window Names (no longer assigns the class name)
- Implemented logging functions to simplify debugging
- Fixed Forced Multi-Client (it now checks if MULTI_CLIENT is enabled before hooking CreateMutexA)
- Disabled the GetCurrentDirectoryA hook (secondary bypass method) since the primary bypass will always work
- Created CLIENT_PORT and CLIENT_LOCALE definitions so you can configure your own port/locale
- Rewrote RedirectProcess to utilize the defined CLIENT_IP/CLIENT_PORT/CLIENT_LOCALE values when sending the target
- Fixed RedirectProcess args for modern versions (it's now <Target.exe> <IP> <Port> -ip -port --nxapp=nxl --lc=<Locale>) thanks to Hoxia
- Updated the NXL Bypass AoB to work for v113 (latest MS2 ver). Just like the older clients, the AoB scan requires 2 skips again instead of 1.

You can find this new commit
 
Initiate Mage
Joined
Apr 2, 2019
Messages
3
Reaction score
0
Hey Eric, thanks for all the effort you're putting into this.

I'm still having trouble with the NxCharacter file, specifically still getting the error "Cannot fine 'NxCharacter.dll'" when I try to launch.

I have built the project without any errors, and followed the instructions exactly to add the Orion2.dll imports to the NxCharacter.dll file, however I'm still unable to launch. Any assistance is much appreciated.

Thanks!
 
Newbie Spellweaver
Joined
Mar 13, 2016
Messages
28
Reaction score
9
In case anyone else encounters these issues.

Yep! Adding the imports, rebuilding & saving over the old one.

I figured that I might have done something wrong when compiling into the DLL, so I redownloaded and compiled again, but now I'm getting the following errors:
mCRH43v - Orion2 Client - A Universal Localhost - RaGEZONE Forums


Thanks for the help!

Create a new function and copy the ASM into the function. Then call the new function from the lambda. Apparently this is due to .
Hey Eric, thanks for all the effort you're putting into this.

I'm still having trouble with the NxCharacter file, specifically still getting the error "Cannot fine 'NxCharacter.dll'" when I try to launch.

I have built the project without any errors, and followed the instructions exactly to add the Orion2.dll imports to the NxCharacter.dll file, however I'm still unable to launch. Any assistance is much appreciated.

Thanks!

Make sure to also copy Orion2.dll into your MapleStory2 directory.
 

Attachments

You must be registered for see attachments list
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
@Ochi Thanks for pointing that out! If you wish to use macros in lambda's, you can always downgrade your SDK as well and rebuild the solution.

This whole lambda issue is because we intend to virtualize and obfuscate our code with Themida, which basically all of you have no real use for. If you aren't intending to release a public server that you want to protect, then you can just comment out or remove the VM_START and VM_END macros in classes like WinSockHook that have them.

On another note, I wanted to update this thread to mention that I have pushed a handful of changes to the Orion2 Client:
- Updated the VEH (exception handler logging) -- added wide-character filters and thread name exception logging
- Updated process redirection (fixed target startup paths and other arguments)
- Fixed FindAoB (scan ranges caused exceptions to occur, size of AoB was not taken into account, and skip count was incorrectly handled)
- Updated NXL Bypass (now works with the fixes applied to FindAoB)
- Refactored the Orion2 injection method (no more thread routines, guaranteed to initialize 1st try and called at the top of CGameApp::InitInstance)
- Fixed a bug that caused null IP's to occur, making WinSock connect to 0.0.0.0
- Implemented a universal NGS bypass (if the NGS servers ever die or update, the MS2 client will still be able to launch now)
- Implemented a Swear Filter bypass (when enabled, removes mapping of "banWord" files, allowing you to use swear words without being censored)

I recommend updating to the latest revision of the client for these fixes.
 
Newbie Spellweaver
Joined
Mar 13, 2016
Messages
28
Reaction score
9
I updated to the new version and still get some errors. Are these expected?

yWpGmDu - Orion2 Client - A Universal Localhost - RaGEZONE Forums
 

Attachments

You must be registered for see attachments list
Custom Title Activated
Loyal Member
Joined
Jan 18, 2010
Messages
3,109
Reaction score
1,139
I updated to the new version and still get some errors. Are these expected?

yWpGmDu - Orion2 Client - A Universal Localhost - RaGEZONE Forums

Yes those are normal. It's just a hidden thread where they are changing the name and intentionally throwing RaiseException. I think the NotFoundException might be because of Swear Filter (client trying to find banWord xml's), which is also normal.
 

Attachments

You must be registered for see attachments list
Initiate Mage
Joined
Sep 16, 2020
Messages
2
Reaction score
0
Hi Eric, thanks for the work you have done on this client.

I have compiled the package successfully, and rebuilt the NxCharacter.dll with CFF Explorer. The game launches fine but I am unable to play the game at all. I keep receiving an Error 10061, and in the ms2logs folder i can see the message "The attempt to connect was rejected", and unlike Ochi's image, I noticed that the address is not getting patched.

DJEbMG9 - Orion2 Client - A Universal Localhost - RaGEZONE Forums


What I could potentially be missing is the bypassing stuff on the github page but I have no clue what to do with that as I do not have extensive programming knowledge. Would that be the issue here? If yes, what are the steps I need to follow to resolve this? Any assistance would be appreciated. Thanks!
 

Attachments

You must be registered for see attachments list
Initiate Mage
Joined
Sep 16, 2020
Messages
2
Reaction score
0
You've compiled and done everything just fine it looks like. The client found a valid port argument and is redirecting you to 127.0.0.1:20001. Remember that this connects to your own server, so you have to have your server emulator running.
Sorry for the totally beginner question, but could you shed some light on how do I get a server emulator running? I only know it should not be the same as MS1 servers. Just want to relive some of my GMS2 memories......
 
Last edited:
Initiate Mage
Joined
Apr 10, 2020
Messages
4
Reaction score
6
Hey.I'm having problem compiling the orion2.dll, don't have the stdafx.h precompile header.
Also when i disable it, to non use precompile is shows lot of problems and when you create a new just to compile it, it also shows up so many problems. I think it might have some lib and definition that its need to use.
Eric - Orion2 Client - A Universal Localhost - RaGEZONE Forums

What do you recommend to do in this case?

EDIT: I was compiling in x64 bit, switch to x86 and it works, had to comment out some assemble lines to get it work also

UPDATE: Indeed, just following all the step gets me here.

 
Last edited:
Back
Top