-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))
-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, ifnot 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")
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.
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.
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.
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++.
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.
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.
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++.
[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