Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 18:55

  • Please register to post and access all features, it's quick, easy and FREE!


Silkroad Multiclient

Old   #1
elite*gold: 0
Join Date: Apr 2007
Posts: 66
Received Thanks: 15
Silkroad Multiclient

Hi, long time no post. Took some time today to get my hands on bigger games like Silkroad, good time for it as a new patch disabled multiclients and multiclient is extremely useful in SRO.

Alright, here's the technical detail.

When you start sro_client.exe by hand it says "Run Silkroad.exe". How does sro_client.exe know who the caller is? Most probably because it gets passed some commandline args. So I wrote a little tool that I called sro_client.exe, put it into the Silkroad directory and launched Silkroad.exe to see the arguments.

They looked like

sro_client.exe [randomnumber] /18 0 0
No clue what the randomly looking number is or what the rest means but when you launch sro_client.exe like this it doesn't complain. Alright.

If you try to launch a second SRO it says "Silkroad is already running!" or something like that. So let's fix it.

I launched IDA and disassembled sro_client.exe which takes quite some time. Because I knew the technique used to make a program unique are mutexes, I searched for CreateMutex references and I think there were two. So basically had to patch the code to ignore ERROR_ALREADY_EXISTS, the error CreateMutex returns if the mutex already exists. Wrote a launcher for, tried it but after some time of loading a messagebox with unreadable text appeared and SRO quitted. Crap.

If I could've read the text I could've searched for the stringref and see what caused it but thanks to the gibberish I had to go through the shitlong list of MessageBox xrefs to see what rougly looked like the one I saw and eventually found it.

Here's the code

.text:00722017                 call    DoSocketShit
.text:0072201C                 test    eax, eax        ; Probably false if bind() failed?
.text:0072201E                 jnz     short loc_72208B
.text:00722020                 push    ebx             ; uType
.text:00722021                 push    offset aSilkroad ; "Silkroad"
.text:00722026                 push    offset aIXBR_   ; "++զ +  - +Ȧ+."
.text:0072202B                 push    ebx             ; hWnd
.text:0072202C                 call    ds:MessageBoxA
As you see I already commented it. We see a call, a test eax,eax and a jump we WANT to take place because else the crap message is shown. We could patch another jump but I wanted to know what the problem was and had a look at the routine.

Because I knew eax was zero when the message box appeared I looked for early retn out of the routine and found it.

It checked if a call to bind() failed. Well, when can bind() fail? When the port we're trying to bind to is taken and indeed, the port SRO tries to bind to is hardcoded:

push    15779           ; hostshort
mov     [esp+1ACh+name.sa_family], AF_INET
call    ds:htons
push    0               ; hostlong
mov     word ptr [esp+1ACh+name.sa_data], ax
Makes sense. First SRO binds to 15779, second one tries to do that, too, bind() fails, SRO talks gibberish, quits. To solve this we have to make sure, every instance binds to another port so I wrote a little loader that does that:

- Load sro_client.exe with the commandline
- Fix two jumps so a failing CreateMutex doesn't matter
- Make the port random

Rather easy task, here's the code

#include <windows.h>
#include <stdio.h>
#include <time.h>

//Used to fix two jnz to jmp
void FixJump(HANDLE hProc,void *addr)
	char Hax[] = {0xEB};

//Fix bind() failing
void RandomPort(HANDLE hProc)
	DWORD port = rand()%2000;	//purely arbitrary number

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)

	char path[255];
	strcat(path,"\sro_client.exe 1337 /18 0 1");

	//Create process

	//Get access rights
	DWORD dummy;
		DWORD err = GetLastError();
		char buffer[255];
		sprintf(buffer,"Error: %d",err);
		return -1;

	//Now modify the code

	//Fix bind error


	return 0;
And the binary is here:

Put it into your Silkroad directory and launch it!

Edit: Unfortunately something's still wrong. It indeed allows to start two SRO clients but you can't connect. Trying to sort it out.

wiz is offline  
Old   #2
elite*gold: 0
Join Date: May 2007
Posts: 54
Received Thanks: 29
i dont understand anything XD

AleXplosion is offline  
Old   #3
elite*gold: 0
Join Date: Jul 2008
Posts: 3
Received Thanks: 0
very good idea! I will try, thanks.
alessandrog is offline  
Old   #4
elite*gold: 0
Join Date: Nov 2008
Posts: 5
Received Thanks: 0
TCP pc:4296 ESTABLISHED 5520

TCP pc:4298 ESTABLISHED 4180

TCP pc:4313 ESTABLISHED 4984

TCP pc:4472 ESTABLISHED 5088

TCP pc:4542 ESTABLISHED 5148
those are my netstat's result (netstat /b) as u see there are 2 clients have same ip and port.

eledok is offline  
Old   #5
elite*gold: 0
Join Date: Apr 2009
Posts: 1
Received Thanks: 0
me neither ^^
guyllian is offline  
Old   #6
elite*gold: 0
Join Date: Mar 2009
Posts: 48
Received Thanks: 35
Link is dead. Reupload plz!
noname456 is offline  
Old   #7
elite*gold: 0
Join Date: Sep 2011
Posts: 6
Received Thanks: 0
link dead upload again
piripus is offline  
Old   #8
elite*gold: 60
The Black Market: 471/0/0
Join Date: Apr 2010
Posts: 9,691
Received Thanks: 1,803
Originally Posted by piripus View Post
link dead upload again
Last post: 07-27-2009

Kraizy​ is offline  

« Previous Thread | Next Thread »

Similar Threads
[search]Silkroad MultiClient only sro_client.exe and silkroad.exe not any tool
Hi i am searching for a Sro multiclient i searh only the sro_client.exe and silkroad.exe i dont want any tool for multiclient
6 Replies - SRO Ask the Experts
Multiclient silkroad
hi. someone know where i can get multiclient or something with multiclient? cause i wanna open 2 silkroad client on the same PC... plz help
9 Replies - SRO Hacks, Bots, Cheats & Exploits
Silkroad no/dc and multiclient
hello can someone make a silkroad.client with nodc and MULTICLIENT i can't use my captcha for Sbot now F8ck.
1 Replies - SRO Ask the Experts
multiclient silkroad
x33.exe ... at - Free File Hosting, Free Image Hosting, Free Music Hosting, Free Video Hosting, ... note= add c: program files /...
3 Replies - SRO Hacks, Bots, Cheats & Exploits

All times are GMT +1. The time now is 18:55.

Powered by vBulletin®
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2017 elitepvpers All Rights Reserved.