Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 00:19

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

Advertisement



[Tutorial] Multiclient Howto

Discussion on [Tutorial] Multiclient Howto within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,323
[Tutorial] Multiclient Howto

Multiclient Howto
Einen Multiclient zu erstellen ist recht einfach, trotzdem oftmals unmöglich für Anfänger. Ganz einfach weil sie keinen Ansatzpunkt finden. In diesem Tutorial zeige ich euch wie man einen Multiclient erstellen kann und diese Technik lässt sich auf so ziemlich jedes Game anwenden.


#Inhalt:
[-]Voraussetzungen & Programme
[-]Theorie
[-]Patching
[-]Nachwort



[-]Voraussetzungen & Programme


Voraussetzungen:
  • Grundlegende Erfahrung im Umgang mit Debuggern
  • Grundlegende ASM Kenntnisse
  • Menschenverstand


Programme:

Als Opfer Spiel nehme ich in diesem Beispiel Darkages. Das ist ein 2D MMO. Ihr könnt aber auch andere Spiele nehmen. Aber ich bezieh mich jetzt nur darauf :P Ihr könnt natürlich auch einen anderen Debugger benutzten... aber unter Win gibts keinen besseren als Olly. An die Oldschooler: Yes softice ist besser aber problematisch unter win xp :P





[-]Theorie


Um einen Multiclient zu erstellen, müssen wir erstmal wissen, was genau im Programm die Instanzen limitiert. Und das zauberwort heißt hier CreateMutex()

Auszug aus der MSDN:

Quote:
HANDLE WINAPI CreateMutex(
__in_opt LPSECURITY_ATTRIBUTES lpMutexAttributes,
__in BOOL bInitialOwner,
__in_opt LPCTSTR lpName
);
CreateMutex befindet sich in der Kernel32.dll / lib. Außerdem nicht wundern , je nachdem ob Unicode oder ANSI kann die Funktion CreateMutexA oder CreateMutexW heißen.
Außerdem in seltenen Fällen noch CreateProcess:

Quote:
BOOL WINAPI CreateProcess(
__in_opt LPCTSTR lpApplicationName,
__inout_opt LPTSTR lpCommandLine,
__in_opt LPSECURITY_ATTRIBUTES lpProcessAttributes,
__in_opt LPSECURITY_ATTRIBUTES lpThreadAttributes,
__in BOOL bInheritHandles,
__in DWORD dwCreationFlags,
__in_opt LPVOID lpEnvironment,
__in_opt LPCTSTR lpCurrentDirectory,
__in LPSTARTUPINFO lpStartupInfo,
__out LPPROCESS_INFORMATION lpProcessInformation
);
Das wichtige bei CreateProcess ist bInheritHandles

Quote:
Originally Posted by MSDN
bInheritHandles [in]

If this parameter TRUE, each inheritable handle in the calling process is inherited by the new process. If the parameter is FALSE, the handles are not inherited. Note that inherited handles have the same value and access rights as the original handles.


[-]Patching


So genug Theorie, jetzt gehts los! Zuerst öffnen wir Darkages.exe in Ollydbg.
Dann drücken wir STRG+A oder machen einen Rechtsklick ins CPU Fenster und klicken auf Analyze -> Analyze Code. Besser noch wenn ihr das Analyze This! Plugin habt, dann klickt ihr da drauf.



Dann machen wir wieder einen Rechtsklick -> Search for -> All intermodular calls.


Nun sehen wir alle API Calls. Leider etwas durcheinander, aber das bekommen wir auch noch hin
Rechtsklick -> Sort by -> Destination.


So nun müssen wir CreateMutex(W/A) suchen. Da wir wissen das sich die Funktion in der Kernel32 befindet, wird die suche einfach.
Und wir haben 2 CreateMutexA Funktionen und 3 CreateProcessA Funktionen.


Wir doppelklicken nun die erste CreateMutexA Funktionen und kommen dahin:



Wir sehen nun an welcher stelle CreateMutex gecallt wird.
PHP Code:
00518290   .  6A 00         PUSH 0                                   ; /MutexName NULL
00518292   
.  6A 00         PUSH 0                                   ; |InitialOwner FALSE
00518294   
.  6A 00         PUSH 0                                   ; |pSecurity NULL
00518296   
.  FF15 8CD26800 CALL DWORD PTR DS:[<&KERNEL32.CreateMute>; \CreateMutexA 
Wir können dort auch sehr schön die CreateMutex Struktur erkennen, wie sie in der MSDN beschrieben wurde.

Dann gehen wir etwas weiter runter in den Code. Dann sehen wir wie irgendwas verschoben wird.

PHP Code:
0051829C   .  8B4D FC           MOV ECX,DWORD PTR SS:[EBP-4]
0051829F   .  8941 04           MOV DWORD PTR DS:[ECX+4],EAX
005182A2   
.  8B55 FC           MOV EDX,DWORD PTR SS:[EBP-4
Besonders als Anfänger, weiß man überhaupt nicht was dort passiert. Das muss man auch nicht unbedingt. Das kommt mit der Zeit, aber schauen wir mal noch ein bisschen tiefer.
PHP Code:
005182A5   .  837A 04 00        CMP DWORD PTR DS:[EDX+4],0
005182A9   
.  75 0E             JNZ SHORT 005182B9 
Dort sehen wir das irgendwas mit 0 verglichen wird, und dann folgt ein JNZ. ( Jump if Not Zero)
Also springt er nur wenn der Vergleich nicht 0 ist. Es ist also ein Conditional Jump. Es hat eine Bedingung.
Dann schauen wir wo wir hinspringen.


Wie wir sehen, überspringt er die
PHP Code:
005182B5   . /EB 53             JMP SHORT 0051830A
005182B7   
. |EB 51             JMP SHORT 0051830A 
Und diese springen dann noch weiter.

Lange Rede kurzer Sinn, unser Badboy ist das JNZ. Wir wollen das er immer springt (Unconditional Jump).
Wir klicken also auf das:
PHP Code:
JNZ SHORT 005182B9 
und drücken Leertaste. Wir können aber auch einen Doppelklick machen.
Dann ändern wir das JNZ in JMP und klicken Assemble.




So wir haben es geschafft. Oder doch nicht? Ach stimmt, es gab ja 2 CreateMutex und noch 3 CreateProcess die uns Probleme machen könnte.

Also minimieren wir das CPU Fenster und gehen nochmal in das "Found Intermodular calls" - Fenster. Dann machen wir einen Doppelklick auf das 2te CreateMutex und landen hier:



Und was sehen unsere Augen da? Wieder ein JNZ!
Ein Doppelklick da drauf, JNZ -> in JMP umändern , Assemble klicken und Fertig.

Aber da waren ja noch die CreateProcess Funktionen. Wir gehen also nochmals in das Intermodular Calls Fenster und machen einen Doppelklick auf das erste CreateProcess. Und wir kommen dahin:


Wir erinnern uns, das wichtige war bInheritHandles. Aber es ist hier auf FALSE.
PHP Code:
00535E98  |.  6A 00             PUSH 0                                   ; |InheritHandles FALSE 
Probleme würde es nur machen wenn dort PUSH 1 stehen würde. Wenn das der Fall wäre, müssten wir nur einen Doppelklick da drauf machen und aus dem PUSH 1 ein PUSH 0 machen.

Dann überprüfen wir noch die anderen CreateProcess Funktionen. Aber in unserem Fall, ist überall der bInheritHandles FALSE!

So nun machen wir einen Rechtsklick -> Copy to executeable -> All modifications.


Copy All!



Dann machen wir einen Rechtsklick -> Save to file



Und benennen es erstmal Darkages[fix].exe. Nicht das ihr eure Orginal Datei überschreibt und es funktioniert nicht. Dann starten wir Darkages[fix].exe zwei mal . Und es sollten sich auch 2 Clients öffnen.

Dann könnt ihr euren orginalen Client backupen, und die Darkages[fix].exe ind Darkages.exe umbennen.


[-]Nachwort


Puh. Ist ja doch etwas ausführlicher geworden, als ich mir gedacht habe
Ihr werdet in so ziemlich allen Spielen auf CreateMutex und CreateProcess stoßen. Nun wisst ihr auch wie man diese umschreibt, damit man mehrere Clients starten kann.
Probleme auf die ihr stoßen könnt ist das wenn ihr auf CreateMutex doppelklickt und an diese Stelle springt auf den ersten Blick kein JNZ findet. Versucht den Code so gut wie möglich zu verstehen, manchmal ist es etwas weiter unten im Code Also sucht schön *g*
Außerdem kann es sein das der Client CRC Checks macht. Dafür gibts aber ein schönes Plugin für PEiD. Damit könnt ihr die neue CRC vom patched client mit der alten überschreiben.

Ist ansich ziemlich Basic, ich hoffe es war verständlich :P
Adroxxx is offline  
Thanks
95 Users
Old 03/25/2009, 17:41   #2
 
DamageBreaker's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 358
Received Thanks: 43
langsam tut sich hier ja schon was in der gamehacking section

nice tut und hoffe auf sticky
DamageBreaker is offline  
Old 03/25/2009, 20:52   #3
 
elite*gold: -1500
Join Date: Mar 2008
Posts: 496
Received Thanks: 167
sehr nice tut muss ih mal echt sagen, bekommse von mir ein thx.
Ich bin leider im beriech gamehacking etc ein noob :P
Also ich wollte dich fragen ob du vielleich zeit hast für das game: Martialheroes()
einen multiclienten + bypasser machen könntest, weil ich würde das selbstpobieren,lerne atm c++ bin am anfang
cstyler is offline  
Old 03/25/2009, 21:04   #4
 
DamageBreaker's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 358
Received Thanks: 43
Quote:
Originally Posted by cstyler View Post
sehr nice tut muss ih mal echt sagen, bekommse von mir ein thx.
Ich bin leider im beriech gamehacking etc ein noob :P
Also ich wollte dich fragen ob du vielleich zeit hast für das game: Martialheroes()
einen multiclienten + bypasser machen könntest, weil ich würde das selbstpobieren,lerne atm c++ bin am anfang
mh geh doch einfach nach dem tut dann haste womöglich nen multiclienten und den bypass mhh wie heißt denn die antihack software?


PS: wenn du hilfe brauchst frag mich ruhig
DamageBreaker is offline  
Thanks
1 User
Old 03/25/2009, 21:05   #5
 
elite*gold: -1500
Join Date: Mar 2008
Posts: 496
Received Thanks: 167
okey antihack heißt xtrap

ich sollte dir ja die exe geben, da waren aber 5 exen, mit updater drin, ahbe alles geuploadet ausser updater







p.s. man kann dir keine pms schreiben
cstyler is offline  
Thanks
2 Users
Old 03/25/2009, 21:13   #6
 
DamageBreaker's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 358
Received Thanks: 43
Quote:
Originally Posted by cstyler View Post
okey antihack heißt xtrap

ich sollte dir ja die exe geben, da waren aber 5 exen, mit updater drin, ahbe alles geuploadet ausser updater







p.s. man kann dir keine pms schreiben
meinsew jetz mich? mach @ dahin bin verwirrt

k also erstma : was willst du überhaupt machen?
DamageBreaker is offline  
Old 03/25/2009, 21:15   #7
 
elite*gold: -1500
Join Date: Mar 2008
Posts: 496
Received Thanks: 167
ne meinte treadersteller
und will nen multiclient + bypass, damit ich zb mit 2+accoutn vp amchen kann und mit main farmen oder lvln
cstyler is offline  
Old 03/25/2009, 21:38   #8
 
DamageBreaker's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 358
Received Thanks: 43
Quote:
Originally Posted by cstyler View Post
ne meinte treadersteller
und will nen multiclient + bypass, damit ich zb mit 2+accoutn vp amchen kann und mit main farmen oder lvln
vp? shop oder was? automaton? mehr infos
DamageBreaker is offline  
Old 03/25/2009, 21:44   #9
 
elite*gold: -1500
Join Date: Mar 2008
Posts: 496
Received Thanks: 167
ok bei mh wenn man shop in der hauptstadt macht, bekommt man umgefair jede 5 min 1 vp point(vending poitn)
wenn amn 180 oder 190 points hat , kann man sich gm pot kaufne, der ist dann 200-500gold wert, man braucht ca. 18 stunden für einen pot, also wenn man mit vielen clienten das gleichzeitig macht, bekommt man in der gleichen zeit mehr, weil in 18h 400g ist recht wenig.Deswegen wollte ich multiclient , damit ich also vp points bekomme und gleichzeitig lvln kann, und ich brauche nen bypass, da es oft ftp probleme gibt, deswegen komme ich nie weiter als patcher und xtrap(das antyhacktool von denen) statet meinen pc ständig neu, weil es denkt ich führe hacks aus, zb bei anderen gamen oder icq...
cstyler is offline  
Old 03/25/2009, 21:45   #10

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,323
Schön das euch mein Tutorial gefällt. Ich werde mir das Spiel mal anschauen, hab aber noch keine Erfahrung mit X-Trap. Falls ich es schaffe, werde ich es posten. Du kannst auch mal den Client in der VMware laufen lassen. Da sollte auch XTrap keine Probleme machen.

Ansonsten spammt den Thread bitte nicht mti OT zu. Den Rest könnt ihr per PN regeln oder einen eigenen Thread aufmachen.

Danke.
Adroxxx is offline  
Thanks
3 Users
Old 03/25/2009, 21:53   #11
 
elite*gold: -1500
Join Date: Mar 2008
Posts: 496
Received Thanks: 167
habe schon oft mit vmware versucht, aber vmware unterstützt keine 3d games, also geht es da leider nciht, wenn du was neues hast, pm mich eifnach
cstyler is offline  
Old 03/25/2009, 22:03   #12

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,323
o.O Lad dir mal vielleicht die neue VMWare Version. Sp3w aus dem Forum hier, hat in der VMWare mehrmals S4 league laufen und farmt so. Musste mal im S4 Forum gucken.

Und jetzt:
Bitte kein OT mehr!
Adroxxx is offline  
Old 03/25/2009, 22:08   #13
 
DamageBreaker's Avatar
 
elite*gold: 0
Join Date: Nov 2008
Posts: 358
Received Thanks: 43
Quote:
Originally Posted by Adroxxx View Post
o.O Lad dir mal vielleicht die neue VMWare Version. Sp3w aus dem Forum hier, hat in der VMWare mehrmals S4 league laufen und farmt so. Musste mal im S4 Forum gucken.

Und jetzt:
Bitte kein OT mehr!
WHOOOT!!!

ich habs ma mit der alten probiert das ging kein bisschen da die graka emuliert wird. warum geht es bei der neuen? wird der speicher halbiert? ( dann kann ich ja s4 5ma laufen lassen XD

b2t: mir fällt nix ein sry musste das rauslassen
DamageBreaker is offline  
Old 04/23/2009, 14:37   #14

 
Adroxxx's Avatar
 
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,323
Bei der neuen kannst du DirectX installieren. Ging bei der alten glaub ich nicht. Vmwaretools und dann directx. Dann solltest jedes Game zum laufen bringen.

Aber das ein anderes Thema.
Adroxxx is offline  
Thanks
1 User
Old 04/29/2009, 18:29   #15
 
elite*gold: 0
Join Date: Apr 2009
Posts: 1
Received Thanks: 0
its best ! plz help me i want a wallhack in sodier front philippines . tnx .
neydi is offline  
Reply


Similar Threads Similar Threads
Multiclient tutorial
07/14/2008 - Silkroad Online - 3 Replies
hi. i wuld like to know if there is anyone that would like to share with us how to make a silkroad online multiclient. thx.



All times are GMT +2. The time now is 00:19.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.