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!

Localhost Workshop

Experienced Elementalist
Joined
Oct 25, 2008
Messages
224
Reaction score
315
BMS v8 added.

Question:
Has anyone tried any of the clients yet? I'm curious about the Windows 10 invalid parameter issue that people seem to be having at times. I haven't encountered it once in this whole process (I'm on W10 21H1). I haven't done anything special to counter it either. So I'm wondering if it could be caused by fuckery Nexon is doing that isn't patched out in other localhosts. Stuff such as patching around in loaded modules in an attempt to hide them.


hi i'd like TMS 0.72 can you make it?
i hope you can try make it
setup:
Doesn't TMS require some Asian code page to run? We'll see how annoyed I am by that and if I can get around it, because I'm not going to switch my main system. I have some ideas, though.

can you do v83 but make it work on wine? wine is close but it crashes around 30 seconds into the game. prior to wine 6.15 it would quit and after 6.16.
I can check what can be done. As long as you're on Linux it shouldn't present a problem.
 
Initiate Mage
Joined
Dec 6, 2021
Messages
4
Reaction score
0
dope if this is the same Hendi from back in the day

saw you did a higher version of EMS. what about v107, 108, any noticeable client changes?
 
Newbie Spellweaver
Joined
Aug 2, 2013
Messages
55
Reaction score
9
Hey Hendi. It's been a long while since we've last seen you. Thank you so much for doing this! Could you do GMS v95? You can find the download for it here:

 
Last edited:
Newbie Spellweaver
Joined
Oct 8, 2013
Messages
68
Reaction score
9
Doesn't TMS require some Asian code page to run? We'll see how annoyed I am by that and if I can get around it, because I'm not going to switch my main system. I have some ideas, though.

TMS it's require chinese traditional code page to run
but i think it can jmp from a certain address or use locale emulator run it
 
Experienced Elementalist
Joined
Oct 25, 2008
Messages
224
Reaction score
315
dope if this is the same Hendi from back in the day

saw you did a higher version of EMS. what about v107, 108, any noticeable client changes?
Those versions have VMProtect unfortunately. I don't know when exactly EMS started using it, but I checked v101 and it also has it.

Hey Hendi. It's been a long while since we've last seen you. Thank you so much for doing this! Could you do GMS v95? You can find the download for it here:

It was already requested above. I'll do it when I run out of other versions.

TMS it's require chinese traditional code page to run
but i think it can jmp from a certain address or use locale emulator run it
TMS v72 done. I only tested it up to character selection, but should be fine ingame as well. I patched the code page jmp, so if anyone runs this client with the wrong code page and sees weird symbols at places, that's their own fault :p: . I also took the liberty to patch out an annoying EULA (?) thing that popped up on the title screen every single time.
 
Newbie Spellweaver
Joined
Oct 8, 2013
Messages
68
Reaction score
9
TMS v72 done. I only tested it up to character selection, but should be fine ingame as well. I patched the code page jmp, so if anyone runs this client with the wrong code page and sees weird symbols at places, that's their own fault :p: . I also took the liberty to patch out an annoying EULA (?) thing that popped up on the title screen every single time.

yes it's annoying EULA at login screen

anyway thank you
 
Newbie Spellweaver
Joined
Aug 2, 2013
Messages
55
Reaction score
9
Those versions have VMProtect unfortunately. I don't know when exactly EMS started using it, but I checked v101 and it also has it.


It was already requested above. I'll do it when I run out of other versions.


TMS v72 done. I only tested it up to character selection, but should be fine ingame as well. I patched the code page jmp, so if anyone runs this client with the wrong code page and sees weird symbols at places, that's their own fault :p: . I also took the liberty to patch out an annoying EULA (?) thing that popped up on the title screen every single time.

My bad. Can you do JMS v186? The link can be found
 
Newbie Spellweaver
Joined
Oct 20, 2007
Messages
64
Reaction score
3
can u skip the code page(without unpacket)?


BMS v8 added.

Question:
Has anyone tried any of the clients yet? I'm curious about the Windows 10 invalid parameter issue that people seem to be having at times. I haven't encountered it once in this whole process (I'm on W10 21H1). I haven't done anything special to counter it either. So I'm wondering if it could be caused by fuckery Nexon is doing that isn't patched out in other localhosts. Stuff such as patching around in loaded modules in an attempt to hide them.



Doesn't TMS require some Asian code page to run? We'll see how annoyed I am by that and if I can get around it, because I'm not going to switch my main system. I have some ideas, though.


I can check what can be done. As long as you're on Linux it shouldn't present a problem.
 
Newbie Spellweaver
Joined
Mar 15, 2021
Messages
46
Reaction score
10
sdgvxcvxbx
 
Last edited:
Initiate Mage
Joined
Dec 6, 2021
Messages
4
Reaction score
0
BMS v8 added.

Question:
Has anyone tried any of the clients yet? I'm curious about the Windows 10 invalid parameter issue that people seem to be having at times. I haven't encountered it once in this whole process (I'm on W10 21H1). I haven't done anything special to counter it either. So I'm wondering if it could be caused by fuckery Nexon is doing that isn't patched out in other localhosts. Stuff such as patching around in loaded modules in an attempt to hide them.



Doesn't TMS require some Asian code page to run? We'll see how annoyed I am by that and if I can get around it, because I'm not going to switch my main system. I have some ideas, though.


I can check what can be done. As long as you're on Linux it shouldn't present a problem.

I tried one of your GMS clients (92.1) and it first hangs with STATUS_STACK_BUFFER_OVERRUN, upon running the unhandled exception, EXCEPTION_ACCESS_VIOLATION.

It seems if I break on any unexpected exceptions, I can hear the game music but hangs.. I'll continue debugging..

i.imgur.com/Zhl2ACv.png
 
Experienced Elementalist
Joined
Oct 25, 2008
Messages
224
Reaction score
315
can u skip the code page(without unpacket)?

I'm not sure I understand what you mean. If you want to skip the code page check in a client that is not unpacked, you'll have to inject a DLL that hooks GetACP and returns the value the client wants to see (0x3B6 in case of TMS).

I tried one of your GMS clients (92.1) and it first hangs with STATUS_STACK_BUFFER_OVERRUN, upon running the unhandled exception, EXCEPTION_ACCESS_VIOLATION.

It seems if I break on any unexpected exceptions, I can hear the game music but hangs.. I'll continue debugging..

i.imgur.com/Zhl2ACv.png

My bad, I forgot a check at the end of CWvsContext::OnEnterField that wasn't part of older versions. The crash is non-deterministic so I didn't catch it during testing. I assume this happened to you after character selection? I've uploaded a fixed version, please try again.
 
Initiate Mage
Joined
Dec 6, 2021
Messages
4
Reaction score
0
I'm not sure I understand what you mean. If you want to skip the code page check in a client that is not unpacked, you'll have to inject a DLL that hooks GetACP and returns the value the client wants to see (0x3B6 in case of TMS).



My bad, I forgot a check at the end of CWvsContext::OnEnterField that wasn't part of older versions. The crash is non-deterministic so I didn't catch it during testing. I assume this happened to you after character selection? I've uploaded a fixed version, please try again.

Got you, yes it happened after character selection. I can also confirm your GMS/EMS clients work as intended!

Also, would you mine sharing that check? I noticed that I will randomly get it only on specific client versions and its hindered a ton of my client research.

Edit: Depending on the VMProtect/Themida used, I can 100% strip VMProtect 2.x to LLVM -> LLVM IR so that its original native instructions get executed normally.. but that's only if you care to do newer versions. :)
 
Last edited:
Experienced Elementalist
Joined
Oct 25, 2008
Messages
224
Reaction score
315
Got you, yes it happened after character selection. I can also confirm your GMS/EMS clients work as intended!
Glad to hear that.

Also, would you mine sharing that check? I noticed that I will randomly get it only on specific client versions and its hindered a ton of my client research.

It's the last protected chunk of code in CWvsContext::OnEnterField. The address is 9B1A02 in v92. What's weird is that I looked at it again and technically it shouldn't even have crashed. Because the stack var it is checking is set to 1 at 9B1907, which is executed unconditionally. I thought it was being set to 1 in some protection code I skip at the beginning of the method (where they placed Themida's CHECK_PROTECTION macro), but it's not the case.

If you encounter a crash such as yours where all registers except ESP are 0, search for 64 A1 18 00 00 00 8B 48 08 8B 40 04 and set breakpoints on all occurrences (assuming you have an unpacked & fully unvirtualized client). This is Nexon's "clear stack" code that they use when a check was tripped and its goal is to make it impossible to figure out where the check was.

Edit: Depending on the VMProtect/Themida used, I can 100% strip VMProtect 2.x to LLVM -> LLVM IR so that its original native instructions get executed normally.. but that's only if you care to do newer versions. :)
Yes, Nexon only ever used VMP 2.x. This sounds interesting, is the tooling you mentioned public? And is the generated code so perfect that it fits into its original space (in terms of size) in every case?
 
Last edited:
Initiate Mage
Joined
Dec 6, 2021
Messages
4
Reaction score
0
Yes, Nexon only ever used VMP 2.x. This sounds interesting, is the tooling you mentioned public? And is the generated code so perfect that it fits into its original space (in terms of size) in every case?

The tooling is released open source under us along with a paper! Check out your messages.
 
Newbie Spellweaver
Joined
Oct 20, 2007
Messages
64
Reaction score
3
thx,I will try it.



LoginScreen have bug when you type in username box at the fixed edition(GMS 095)
 
Last edited:
Experienced Elementalist
Joined
Oct 25, 2008
Messages
224
Reaction score
315
can you do v83 but make it work on wine? wine is close but it crashes around 30 seconds into the game. prior to wine 6.15 it would quit and after 6.16.

I have good news and bad news. I made the client and in principle it seems to be running fine under Wine, HOWEVER it depends on what version of Wine. Under 6.21 it consistently crashes for me after 2-5 minutes while decoding MP3 sound in a background thread. I saw that the Wine devs did some changes to that subsystem recently, and apparently they botched it. I downgraded to 6.10 and have yet to crash after 15+ minutes. So it seems this is a regression that was either introduced in 6.11 or 6.20.

Edit: Confirmed the faulty changeset to be 6.20.
 
Last edited:

DSG

Newbie Spellweaver
Joined
Jan 23, 2018
Messages
33
Reaction score
3
I have good news and bad news. I made the client and in principle it seems to be running fine under Wine, HOWEVER it depends on what version of Wine. Under 6.21 it consistently crashes for me after 2-5 minutes while decoding MP3 sound in a background thread. I saw that the Wine devs did some changes to that subsystem recently, and apparently they botched it. I downgraded to 6.10 and have yet to crash after 15+ minutes. So it seems this is a regression that was either introduced in 6.11 or 6.20.

Edit: Confirmed the faulty changeset to be 6.20.

Hendi48 - Localhost Workshop - RaGEZONE Forums


It appears to work perfectly (Debian/Wine 6.16 under Lutris). I'll report back if I find there's any issues.
The only "issue" I think is with wine, you can no longer hold down ctrl/alt as spam/turbo (it's not the window/session manager, as I tested on a blank x display without running any window/session manager).

How did you do it man?
 
Experienced Elementalist
Joined
Oct 25, 2008
Messages
224
Reaction score
315
My bad. Can you do JMS v186? The link can be found

JMS v186 done. I didn't test it much, I hope it works properly.

It appears to work perfectly (Debian/Wine 6.16 under Lutris). I'll report back if I find there's any issues.
The only "issue" I think is with wine, you can no longer hold down ctrl/alt as spam/turbo (it's not the window/session manager, as I tested on a blank x display without running any window/session manager).

How did you do it man?

Nice. I've filed bug tickets with Wine and libmpg123 for 6.20+ to ensure it'll keep working in the future.

I've noticed the key issue as well. It's hard to even search for it, so no clue.

Technically all my clients should run under Wine, because the game itself is pretty compatible. The problem with other localhosts is all the extra crap Nexon is doing that wasn't patched out there. It's mostly harmless on Windows, but some of the checks include assumptions that don't hold on Wine.
 
Newbie Spellweaver
Joined
Jul 11, 2018
Messages
15
Reaction score
7
@Hendi48 this is some amazing work. I was able to run your version 62 client on the latest dev build of wine (6.23), but I'm also coming across an audio problem, albeit not related to libmpg. There's no sound at all the the logs are telling me it's related to pulseaudio. I find this weird because pulseaudio works just fine for other applications on wine. I assume you guys testing wine are also on Linux rocking pulseaudio?
 

DSG

Newbie Spellweaver
Joined
Jan 23, 2018
Messages
33
Reaction score
3
@Hendi48 this is some amazing work. I was able to run your version 62 client on the latest dev build of wine (6.23), but I'm also coming across an audio problem, albeit not related to libmpg. There's no sound at all the the logs are telling me it's related to pulseaudio. I find this weird because pulseaudio works just fine for other applications on wine. I assume you guys testing wine are also on Linux rocking pulseaudio?

When I tested his v83 I was using pulseaudio. I run all the standard stuff in Debian, nothing interesting at the system level.
If you haven't try running Lutris to change to a different wine. I've found Lutris to be the easiest way to manage wine.

Hendi, would you mind recording yourself unpacking the next client? You don't need to talk or explain anything but it'd be great to watch how it's done. Would be very educational for a lot of people here.
 
Back
Top