|
You last visited: Today at 14:39
Advertisement
Reversing Tutorial 1 (Kickvote)
Discussion on Reversing Tutorial 1 (Kickvote) within the S4 League Hacks, Bots, Cheats & Exploits forum part of the S4 League category.
04/03/2015, 22:36
|
#1
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
Reversing Tutorial 1 (Kickvote)
Das folgende Tutorial ist von mir geschreiben und ist nur für Elitepvpers, ich erlaube es nicht es in andere Foren zu kopieren!
-Zu erst downloadet ihr euch  falls ihr das noch nicht habt.
-Danach öffnet ihr S4 mit einen Bypass.
-Startet nun Cheat engine und geht in die Settings siehe Bild.
-Stellt nun die Debugger Optionen wie folgt ein.
-Nun attachen wir den Prozess, dafür öffnen wir in Cheat Engine die Prozessselektion.
-Nun öffnet sich das folgende Fenster (1) und ihr scrollt bis ihr den Prozess "S4Client.exe" gefunden habt (2) und macht darauf einen Doppelklick oder drücken den "Open" button.
-Als nächstes öffnen wir den Memory Viewer. Per Klick auf den Knopf.
-! Falls ihr den Memory Viewer schon mal geöffnet habt und er minimiert ist ist er unten links.
-Ansonsten solltet ihr nun folgendes Fenster sehen.
-In diesen Tutorial geht es um den Kickvote,um genauer zu seien um die auflistung der Spieler.
-Geht nun in den Memory Viewer und macht ein Rechtsklick ins obere Feld und geht auf "Go To Adress".
-Gibt nun dort die Adresse ein wo ihr den Assembler Code anschauen wollt.
????????? = 0075D930(ist die Adresse der Funktion in diesen Patch)
-Danach mit "OK" bestätigen.
-Nun solltet ihr den folgenden Assembler code vor den Augen haben.
-Nun denken wir logisch nach und wissen, das Kriterien erfüllt werden müssen damit die Spieler in der Liste auftauchen.
-Diese sind normalerweise:
^Selbes Team (Alpha / Beta)
^Nicht die eigene Playerid (Selbstkickschutz)
-Sprich wir reden von mindestens 2 if statements.
-Wir scrollen nun etwas weiter nach unten und finden etwas.
-Uns interessiert aber nur dieser Abteil des Codes
-(Genaugenommen nur die letzten beiden Zeilen (CMP&JE))
CMP <Zieloperand>,<Quelloperand>
(Compare)
Vergleiche zwei !Zahlen!.
JE <Sprungziel>
(Jump if equal)
Springe, wenn gleich.
-Fassen wir zusammen was wir nun wissen.
-Es wird ein Vergleich angestellt (CMP)
-Darauf wird mit dem Ergebnis des Vergleiches ein Sprung gemacht (in diesem Fall JE)
-Da wir hier CMP und JE in folge reinterpretiert es in Programmiersprachen ein if( Konstante 1 == Konstante 2 )
- J (E) if equal ==
JMP <Sprungziel>
(Jump)
Springe, immer.
-So, nun ändern wir mit einen Doppelklick auf die Zeile in der JE ist den Opcode.
-In das Inputfeld ändern wir nun das JE zum JMP und bestätigen es.
-Der veränderte Opcode sieht nun wie folgt aus:
-Wenn wir jetzt das Kickvotefenster öffnen, werden wir sehen das nun auch die Gegner im Kickvote erscheinen.
-Sprich wir wissen nun von oben:
Quote:
-Nun denken wir logisch nach und wissen, das Kriterien erfüllt werden müssen damit die Spieler in der Liste auftauchen.
-Diese sind normalerweise:
^Selbes Team (Alpha / Beta)
^Nicht die eigene Playerid (Selbstkickschutz)
|
-Das wir schonmal die erste Abfrage (Selbes Team (Alpha / Beta)) gebypasst haben.
-Info:"Wenn wir JE zu JNE ersätzt hätten wäre die Abfrage != gewesen und nur die Gegner würden angezeigt werden, mehr dazu folgt jetzt")
-Jetzt wollen wir noch uns im Kickvote haben um Später auch uns die Funktionen geben zu können wie z.B. Setroommaster. Sprich wir bypassen jetzt die 2 Abfrage. (Nicht die eigene Playerid (Selbstkickschutz))
-Dafür scrollen wir nun wieder weiter runter und müssen uns jetzt aber auch wieder denken:
Er fragt ab ob die Playerid nicht! die von einen selbst ist sprich:
if( Konstante 1 != Konstante 2)
-Wobei uns hier auch wieder nur die If abfrage interessiert.
JNE <Sprungziel>
(Jump if not equal)
Springe, wenn nicht gleich.
-Fassen wir zusammen was wir nun wissen.
-Es wird ein Vergleich angestellt ( CMP)
-Darauf wird mit dem Ergebnis des Vergleiches ein Sprung gemacht (in diesem Fall JNE)
-Da wir hier CMP und JNE in folge reinterpretiert es in Programmiersprachen ein if( Konstante 1 != Konstante 2 )
- J ( NE) if not equal !=
-So, nun ändern wir mit einen Doppelklick auf die Zeile in der JNE ist den Opcode.
-In das Inputfeld ändern wir nun das JNE zum JMP und bestätigen es.
-Der veränderte Opcode sieht nun wie folgt aus:
-Wenn wir jetzt das Kickvotefenster öffnen, werden wir sehen das nun auch wir selbst und die Gegner im Kickvote erscheinen.
-Sprich wir wissen nun von oben:
Quote:
-Nun denken wir logisch nach und wissen, das Kriterien erfüllt werden müssen damit die Spieler in der Liste auftauchen.
-Diese sind normalerweise:
^Selbes Team (Alpha / Beta)
^Nicht die eigene Playerid (Selbstkickschutz)
|
-Das wir beide Abfragen gebypasst haben.
-Info:"Wenn wir JNE zu JE ersätzt hätten wäre die Abfrage == gewesen und nur wir selbst würden angezeigt werden")

The following Tutorial is written by me and is only for Elitepvpers, i don´t allow that somebodey share/copy it on other forums!
-First you download  if you don`t have it already.
-Then open S4 with a Bypass.
-Start now Cheat Engine and go into the Settings.
-Change now the Debugger Options like them on the Picture.
-Now we attach the process, for this we open the Process Selection in Cheat Engine.
-Now the following Window opens (1) and then scroll down until you found the process "S4Client.exe"(2) and then make a doubleclick on the lable or press the "Open" button.
-Next we open the Memory Viewer. For this click on the labeld button.
-! If you already opened the Memory Viewer and it is minimized it is at the bottom left.
-If you see the window it should look like this.
-This tutorial is about the kickvote,to be more accurate the player list.
-Go now in the Memory Viewer and make a right click in the upper corner and go on "Go To Adress".
-Enter now there adress where you want to view the assembler code.
????????? =0075D930(is the adress of the function in this patch)
-Press then "OK".
-Now you should have the following Assembler code in front of your eyes.
-Now we must think logical and know, that some criteria must be true else the player will not be in the list.
-The criteria are normaly:
^Same Team (Alpha / Beta)
^Not the own Playerid (Selfkickprotection)
-We speak over 2 if statements.
-We scrollen down and find something.
-We are only interested in this part of the code.
-(Only the last 2 lines (CMP&JE))
CMP <Endoperand>,<Sourceoperand>
(Compare)
Compare two !Numbers!.
JE <Scopeadress>
(Jump if equal)
Jump, if equal.
-Lets collect what we know at the moment.
-An Compare will be done (CMP)
-Then with the Result will done a jump (in this part JE)
-Because we have CMP and JE successively it reinterprets in an programminglanguage if( Constant 1 == Constant 2 )
- J (E) if equal ==
JMP <Scopeadress>
(Jump)
Springe, everytime.
-So, now we change with a doubleclick on the line in their JE is the Opcode.
-Into the Inputfield we change JE to JMP and accept it.
-The changed opcode will look now like on the screen:
-If we now open the kickvote, we will see that now the enemys are shown in the Kickvote.
-So we know from above:
Quote:
-Now we must think logical and know, that some criteria must be true else the player will not be in the list.
-The criteria are normaly:
^Same Team (Alpha / Beta)
^Not the own Playerid (Selfkickprotection)
|
-That we already bypassed the first criteria (Same Team (Alpha / Beta)).
-Info:"If we change JE to JNE would be the != effect so only our enemys would be shown, not our mates")
-Now we want ourself in the kickvote for giving us later the functions too like z.B. Setroommaster. So we bypass now the second if statement. (Not the own Playerid (Selfkickprotection))
-For this we scroll down but we must imagine that:
He checks if the Playerid is not! from ourself means:
if( Constant 1 != Constant 2)
-But we are only interested at the if statement.
JNE <Scopeadress>
(Jump if not equal)
Jump, if not equal.
-So lets collect things that we know now.
-An if statement will be done ( CMP)
-With the result will an jump donw (in this part JNE)
-Because we have CMP and JNE successively it reinterprets in an programminglanguage if( Constant 1 != Constant 2 )
- J ( NE) if not equal !=
-So, now we change with a doubleclick on the line in their JE is the Opcode.
-Into the Inputfield we change JE to JMP and accept it.
-The changed opcode will look now like on the screen:
-If we now open the Kickvote, we will see ourself, our mates and our enemys in the list.
-So we now know from above:
Quote:
-Now we must think logical and know, that some criteria must be true else the player will not be in the list.
-The criteria are normaly:
^Same Team (Alpha / Beta)
^Not the own Playerid (Selfkickprotection)
|
-That we have both checks bypassed.
-Info:"If we change JNE to JE we had the if statement == so only we would be in the list")

|
|
|
04/03/2015, 22:40
|
#2
|
elite*gold: 37
Join Date: May 2014
Posts: 1,835
Received Thanks: 9,833
|
Cant Understand German,
Make Tutorial In English Please.
|
|
|
04/03/2015, 22:46
|
#3
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
Quote:
Originally Posted by HaMaDa..
Cant Understand German,
Make Tutorial With English Please. 
|
in *English
I am translating it atm.
|
|
|
04/03/2015, 22:48
|
#4
|
elite*gold: 37
Join Date: May 2014
Posts: 1,835
Received Thanks: 9,833
|
Quote:
Originally Posted by IceGuard™✔
in *English
I am translating it atm.
|
Okay.. ^^
|
|
|
04/03/2015, 23:11
|
#5
|
elite*gold: 10
Join Date: Nov 2014
Posts: 89
Received Thanks: 136
|
Nice tuto thx men
|
|
|
04/03/2015, 23:25
|
#6
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
Quote:
Originally Posted by HaMaDa..
Okay.. ^^
|
Translation to english is done, please write if i have some erros in the translation q.q.
Quote:
Originally Posted by LeheMan1
Nice tuto thx men
|
Thanks.
|
|
|
04/04/2015, 11:39
|
#7
|
elite*gold: 4
Join Date: Mar 2015
Posts: 339
Received Thanks: 458
|
Nice Tutorial. Was mich allerdings auch interessieren würde, wären die Argumente die dabei verwendet werden.
Unter anderem auch, was alles der Setroommaster-Function, übergeben werden muss, um diese selbst mit einem Thread oder anderem aufzurufen zu können.
Aber so alles in einem, nettes Tutorial um einen Einblick in die Vergleichsoperationen des KickVoteSystems zu bekommen.
|
|
|
04/04/2015, 15:47
|
#8
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
Werd ich mal gucken ob ich das adde
|
|
|
04/04/2015, 15:49
|
#9
|
elite*gold: 1
Join Date: Apr 2012
Posts: 3,001
Received Thanks: 6,198
|
Da ich 0 Ahnung von hacking habe, interessiert es mich wie ich verschiedene sachen mit der Vote kick func callen kann ô.ô
z.B Jeden roommaster geben, so wie ich das habe, kriege nur ich roommaster, egal wen ich auswähle. Oder wie ich jemanden einen Touch Down gebe or Heal Points etc.
Würde allgemein gerne wissen wie man die ganzen calls herausfindet.
(google hat mir noch nie was gebracht)
|
|
|
04/04/2015, 15:59
|
#10
|
elite*gold: 4
Join Date: Mar 2015
Posts: 339
Received Thanks: 458
|
Quote:
Originally Posted by xDonut-
Da ich 0 Ahnung von hacking habe, interessiert es mich wie ich verschiedene sachen mit der Vote kick func callen kann ô.ô
z.B Jeden roommaster geben, so wie ich das habe, kriege nur ich roommaster, egal wen ich auswähle. Oder wie ich jemanden einen Touch Down gebe or Heal Points etc.
Würde allgemein gerne wissen wie man die ganzen calls herausfindet.
(google hat mir noch nie was gebracht)
|
Calls, sowie Grundlegende ASM-Functions kannst du mit Cheat Engines Ultimap finden. Dieses Tutorial hat mir da weiter geholfen.
Du musst wie gesagt die Player-ID als Parameter für die jeweilige Funktion angeben.
|
|
|
04/04/2015, 16:24
|
#11
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
Quote:
Originally Posted by Successfully
Calls, sowie Grundlegende ASM-Functions kannst du mit Cheat Engines Ultimap finden. Dieses Tutorial hat mir da weiter geholfen.

Du musst wie gesagt die Player-ID als Parameter für die jeweilige Funktion angeben.
|
Donut das hat damit zu tuhen das die Kickvote funktion an sich anders gecallt wird als die anderen Funktionen wie Roommaster, daswegen musst du noch den Opcode modefizieren oder so selbst in c++ callen, das mit allen Rommmaster geben sprich spammen wird aber auch nur in c++ klappen da du vllt mit einen Thread eine schleife im Kickvote erzeugen könntest, das wäre aber viel zu unnötig.
Ich könnte falls man es haben möchte vllt ein VTut zum Obrigen Tut,zum Funktionen callen sprich modifizieren, zum abfangen der playerids im kickvote (zum späteren spammen etc...),und zum callen der funktionen in c++.
|
|
|
04/04/2015, 16:49
|
#12
|
elite*gold: 4
Join Date: Mar 2015
Posts: 339
Received Thanks: 458
|
Quote:
Originally Posted by IceGuard™✔
Schon kla aber das tutorial was du da angegeben hast ist fast müll, da du bei S4 mit Ultimap ziemlich sagen wir mal angepisst sein wirst und das hat viele Gründe. Da du z.b. nur mit Intel ultimap nutzen kannst, du nach jeden mal Ultimap nutzen deinen Pc neustarten must um DBVM auszuschalten da der Bypass eine protection gegen den debugger hat und und und ... Und Donut das hat damit zu tuhen das die Kickvote funktion an sich anders gecallt wird als die anderen Funktionen wie Roommaster, daswegen musst du noch den Opcode modefizieren oder so selbst in c++ callen, das mit allen Rommmaster geben sprich spammen wird aber auch nur in c++ klappen da du vllt mit einen Thread eine schleife im Kickvote erzeugen könntest, das wäre aber viel zu unnötig.
Ich könnte falls man es haben möchte vllt ein VTut zum Obrigen Tut,zum Funktionen callen sprich modifizieren, zum abfangen der playerids im kickvote (zum späteren spammen etc...),und zum callen der funktionen in c++.
|
Wenn du Zeit und Lust hast, warum eigentlich nicht? Würde mich darüber freuen. An liebsten wäre mir ein Tutorial dass einem das nötige Wissen vom finden der Funktionen hinweg übers callen bis zum schreiben in C++ bemittelt und dabei wie in diesem Tutorial alles Schritt für Schritt erklärt.
|
|
|
04/04/2015, 16:53
|
#13
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
Quote:
Originally Posted by Successfully
Wenn du Zeit und Lust hast, warum eigentlich nicht? Würde mich darüber freuen. An liebsten wäre mir ein Tutorial dass einem das nötige Wissen vom finden der Funktionen hinweg übers callen bis zum schreiben in C++ bemittelt und dabei wie in diesem Tutorial alles Schritt für Schritt erklärt.
|
Wird aber schwer mit Ultimap, ich selber hab es zwar genutzt um das zu finden aber der Bypass lässt das immoment fast nicht zu da man immer nur 1 versuch hat, da müsste wir mal gucken ob ich mal an den ohne protection rankomme.
|
|
|
04/04/2015, 17:00
|
#14
|
elite*gold: 1
Join Date: Apr 2012
Posts: 3,001
Received Thanks: 6,198
|
Quote:
Originally Posted by IceGuard™✔
Donut das hat damit zu tuhen das die Kickvote funktion an sich anders gecallt wird als die anderen Funktionen wie Roommaster, daswegen musst du noch den Opcode modefizieren oder so selbst in c++ callen, das mit allen Rommmaster geben sprich spammen wird aber auch nur in c++ klappen da du vllt mit einen Thread eine schleife im Kickvote erzeugen könntest, das wäre aber viel zu unnötig.
Ich könnte falls man es haben möchte vllt ein VTut zum Obrigen Tut,zum Funktionen callen sprich modifizieren, zum abfangen der playerids im kickvote (zum späteren spammen etc...),und zum callen der funktionen in c++.
|
Wäre cool wenn du das machen könntest.
|
|
|
04/04/2015, 17:18
|
#15
|
elite*gold: 0
Join Date: Nov 2014
Posts: 741
Received Thanks: 2,648
|
Quote:
Originally Posted by xDonut-
Wäre cool wenn du das machen könntest. 
|
Code:
0075DF7C - mov ecx,[eax+2C]
0075DF7F - push ecx //unk_00 - Reason
0075DF80 - mov edx,[eax+28]
0075DF83 - push edx // Player ID
0075DF84 - mov eax,[ebp-10]
0075DF87 - push eax // unk_01
0075DF88 - mov ecx,[ebp-14]
0075DF8B - push ecx // unk_02
0075DF8C - call 004123E0
0075DF91 - mov ecx,eax
0075DF93 - call 00E71730
Search the Parameter and get the Type of your own function.
Code:
[ENABLE]
alloc(Hook,256)
label(return)
Hook:
mov edx,[eax+28] // we know here is the player id
push ?? // parameter_%
push edx // id
call ???????? // your own function [ with thisptr etc. ]
jmp return
0075DF7C:
jmp Hook
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
return:
[DISABLE]
dealloc(Hook)
0075DF7C:
mov ecx,[eax+2C]
push ecx
mov edx,[eax+28]
push edx // Player ID
mov eax,[ebp-10]
push eax // unk_01
mov ecx,[ebp-14]
push ecx // unk_02
call 004123E0
mov ecx,eax
call 00E71730
|
|
|
 |
|
Similar Threads
|
[Tutorial-Collection] Metin2 Reversing/Hacking
07/03/2015 - Metin2 Guides & Templates - 149 Replies
Hey Epvp'ler.
Ich habe mich dazu entschieden die ungebildete Metin2-Community mal ein bisschen auf Vordermann zu bringen und release hier meine private Playlist mit Reversing-Tutorials für Metin2.
Die Tutorials sind so vom Niveau her für Anfänger, jedoch nicht für welche, die keine Ahnung von Memory, Assembler und Cheat Engine und sowas haben. Also WriteProcessMemory() solltet ihr schonmal gehört haben.
Wenn ihr Ideen für weitere Videos oder Fragen habt, fragt einfach hier, wenn sie mir...
|
[Tutorial] Basic Reversing in S4L (KickVote Function)
04/13/2015 - S4 League Hacks, Bots, Cheats & Exploits - 13 Replies
Hello. :)
Wanna show you how to reverse functions in S4 League.
So let's get started;
First you need the address of the pre-kickvote processing function,
which is located in some class(__thiscall). I found out that it's not a vtable entry, so that's not so good because with vftables you can always grab your functions easier.
http://i.imgur.com/8x9rO2q.png
.text:00E5FB12 push eax
|
[Tutorial] Reversing Spell Encryption
06/15/2014 - CO2 Programming - 1 Replies
It has been quite a while since I last wrote a tutorial related to Conquer. This is mostly useless because as far as I know the spell encryption has already been reversed long time ago. The purpose of this post / tutorials is to help people understand how it's possible to find functions and implement them in desired language by reverse engineering. This will also be kind of log for me on how I approach reversing.
This reverse engineering was performed on a unnamed private server so I'm not...
|
[ C++ / Reversing | Tutorial ] Detour + Code Cave mit WPM
01/03/2010 - Coding Tutorials - 4 Replies
Moin leute, habe hier ein kleines Tutorial geschrieben wie man Funktionen auf seinen eigenen Code umleitet mit WriteProcessMemory. Ihr solltet jedoch schon wissen wie man WriteProcessMemory verwendet. Als Beispiel habe ich das Spiel Counterstrike
genommen und Whitewalls gemacht. Das Tutorial ist NICHT dazu da um zu zeigen
wie man Hacks schreibt und wie diese Funktionieren.
Programme die benutzt werden:
OllyDBG
Credits für den White Walls code:
b2k5
|
All times are GMT +1. The time now is 14:39.
|
|