[Tutorial] Basic Packet Hacking

03/24/2009 16:44 Adroxxx#1
Basic Packet Hacking

In diesem kleinen Tutorial, will ich euch zeigen wie man Packete snifft, analysiert und editiert.




#Inhalt:
[-]Voraussetzungen & Programme
[-]Packete Sniffen
[-]Packete Analysieren
[-]Packete Editieren
[-]Nachwort



[-]Voraussetzungen & Programme

Voraussetzungen:
  • Grundlegende Kenntnisse im Hexadecimal System
  • Grundlegende Erfahrung im Umgang mit Sniffern
  • Menschenverstand

Ihr solltet um dieses Tutorial auch erfolgreich an anderen Spielen anwenden zu können wissen was ihr da macht..

Programme:
Als Opfer Spiel nehme ich in diesem Beispiel Deicide Online.
Dieses Spiel hat keine Verschlüsselung, deswegen macht es uns die Sache sehr einfach. Ich werde noch einen zweiten Teil dieses Tutorials machen, indem ich das Thema Packet encryption behandle.




[-]Packete Sniffen

So als erstes starten wir das Spiel und loggen uns ein. Wir switchen raus und öffnen WPE. Als Target wählen wir DeicideOnline.exe und starten den sniff vorgang. Dann switchen wir wieder ingame und schreiben "Hi" in den Total Chat.

[Only registered and activated users can see links. Click Here To Register...]

Nachdem wir das gemacht haben, switchen wir wieder raus und stoppen den aufzeichnungs vorgang. Nun sollten wir schon einiges in WPE stehen haben.

[Only registered and activated users can see links. Click Here To Register...]

Und da sticht uns doch das 10. Packet direkt ins Auge, mit dem Inhalt "......Hi"



[-]Packete Analysieren

So nun kommen wir ans analysieren der Packete. Am besten schickt ihr nochmal ein "Hi" ab und nehmt dies mit WPE auf. Somit habt ihr dann 2 Send Packete wo der gleiche Inhalt drin steht. Diesmal schreibt ihr das Hi aber nicht in den Total Chat sondern in den Trade Chat.

So hier dann die 2 Packete:

Total Chat:
[Only registered and activated users can see links. Click Here To Register...]

Trade Chat:
[Only registered and activated users can see links. Click Here To Register...]

So nun müssen wir herausfinden wie das Packet aufgebaut ist.
Dazu sollten wir das Hex System können. Außerdem müssen wir wissen, dass wir hier eine umgekehrte Byte-Anordnung für die Werte haben. Klingt schwer, ist es aber nicht.
'A' hat den Dezimalwert 65. Nachzulesen in der ASCII Tabelle. 65 Dezimal ist in Hex 41.
Wenn wir einen 2-Byte Delimiter haben (WORD oder 16bit Integer ), sieht es in Hex so aus: 00 41
Bei einem 4-Byte Delimiter (DWORD oder 32bit Integer), sieht es so aus: 00 00 00 41 .

Bei der umgekehrten Byte-Anordnung müssen wir das einfach umkehren.
Bei einem 2-Byte Delimiter wird aus 00 41 -> 41 00


Also fangen wir an:

WPE zeigt uns als Size für das Packet 8 an. Nun schauen wir uns das Packet an und was steht direkt am Anfang ?
08 00
Da wir eine umgekehrte Byte-Anordnung haben müssen wir das umdrehen und bekommen
00 08 daraus. 00 08 Hex ist in Dezimal auch 8.

Also wissen wir schonmal die ersten 2 bytes sind für die Packetgröße.

Gehen wir zu den nächsten 2 Byte. Dort haben wir bei dem einen Packet l 10 00 und beim anderen Packet l 8A 00. Umkehren = 00 10 & 00 8A.
Wir erinnern uns, wir haben einmal eine Nachricht in den Total Chat versendet und eine in den Trade Chat. Also haben wir den Chat Typ herausgefunden.

Dann kommt 02 00. Das ist die Anzahl der Zeichen die gesendet wird.
Wir müssen es wieder umgekehren 00 02 in dezimal = 2. Und wir haben auch 2 Zeichen gesendet undzwar "H" und "i".

48 69 sind unsere Zeichen "H" & "i".

So hier nun was wir rausbekommen haben:

08 00 10 00 02 00 48 69

<PacketSize>.2B<ChatTyp>.2B<AnzahlDerZeichen>.2B<Text>.2B

Somit haben wir das Packet außeinander genommen und wissen wie es aufgebaut ist. Die ersten 2 Byte sind für die gesamte Packet größe, die nächsten 2 Byte für den Chattyp, also Total Chat, Trade Chat, Party Chat usw., die nächsten 2 Bytes für die Anzahl der gesendeten Zeichen und die nächsten 2 - X Bytes beinhalten den Text den man sendet.
Da wir das nun alles wissen, kommen wir zum Editieren der Packete.



[-]Packete Editieren

Da wir nun Wissen wie das Packet aufgebaut ist, ist es ein leichtes für uns es zu verändern.
Wir machen einen Rechtsklick auf das Packet wo wir Hi gesendet haben und klicken auf Send.
[Only registered and activated users can see links. Click Here To Register...]

Nun öffnet sich das Send Fenster und wir können das Packet manipulieren.

Die Packetsize erhöhen wir auf 11. Dann bearbeiten wir den Inhalt des Packetes.

0B 00 10 00 05 00 65 2A 70 76 70

Packetgröße 11 Dezimal in Hex = 0B
ChatTyp 10 = Total Chat
AnzahlDerZeichen 05 = 5
Text = 65 2A 70 76 70 = e*pvp

[Only registered and activated users can see links. Click Here To Register...]

Dann senden wir das Packet ab.
Wenn wir dann ingame schauen, sollte unser charakter e*pvp in den Chat gesendet haben.

[Only registered and activated users can see links. Click Here To Register...]


[-]Nachwort

Ich bin in diesem Tutorial auf verschiedene Dinge nicht eingegangen. Man könnte über das Hexadecimal System und Byte Anordnungen nochmal ein großes Tutorial schreiben, aber dies hier ist für Anfänger gedacht und ich wollte diese nicht zu sehr verwirren :) Dieses Beispiel ist recht simpel, um den Leuten zu zeigen wie es geht. Dadruch das keine Verschlüsselung vorhanden ist in diesem Game, macht die sache natürlich sehr sehr einfach. Ich werde mich irgendwann nochmal an ein Tutorial setzen wo man auch die Verschlüsselung umgeht bzw. entschlüsselt :) Aber alles zu seiner Zeit.

Ich hoffe ich konnte dem ein oder anderen etwas helfen.
03/24/2009 17:41 BlackFog#2
Sehr schönes Tutorial ;). Endlich kommt mal ein bischen Leben in die Gamehacking Section und nich nur NEET HAXXXxx gespamme ;).
03/24/2009 17:42 Adroxxx#3
Sind auch noch paar kleine Tuts in Planung :D
03/24/2009 20:01 DamageBreaker#4
Quote:
Originally Posted by Adroxxx View Post
Sind auch noch paar kleine Tuts in Planung :D
nice tut :D

das ist wirklich leicht und passt deshalb auch am besten für newbies aber das kann man wie das hello world prog verstehen von der schwierigkeit her;)


die meisten games sind einmal sniffgeschützt oder haben nen gameguard oder hackshield das ist hart XD( packet encryption nebenbei)

sticky!sticky!
03/24/2009 20:23 Adroxxx#5
Ja klar, Anti-Cheat Systeme sind die eine sache. Gibt es aber in vielen Fällen auch einen Bypass. Auf Encryption geh ich noch weiter drauf ein. Man kann über olly einen bp auf den send() machen und die packets vorher abfangen.
03/24/2009 20:26 DamageBreaker#6
Quote:
Originally Posted by Adroxxx View Post
Ja klar, Anti-Cheat Systeme sind die eine sache. Gibt es aber in vielen Fällen auch einen Bypass.
hast du einen ;)?
..................................................
achso bin so ein vollpfosten

Quote:
Man kann über olly einen bp auf den send() machen und die packets vorher abfangen.
jetz weiß ich es auch XD danke dir wusste gar nich dass das geht

mache mich sofort dran
03/24/2009 20:37 Adroxxx#7
Gamename + Bypass in die Forensuche eingeben hilft da oftmals :P
03/25/2009 12:40 Atheuz#8
Quote:
Originally Posted by Adroxxx View Post
Ja klar, Anti-Cheat Systeme sind die eine sache. Gibt es aber in vielen Fällen auch einen Bypass. Auf Encryption geh ich noch weiter drauf ein. Man kann über olly einen bp auf den send() machen und die packets vorher abfangen.
Oder eine Middleware, dazu braucht man keinen bypass oder sonstige Methoden. Einfach nur IP weiterleiten.
03/25/2009 16:44 DamageBreaker#9
Quote:
Originally Posted by Atheuz View Post
Oder eine Middleware, dazu braucht man keinen bypass oder sonstige Methoden. Einfach nur IP weiterleiten.
:O du und deine begriffe XD das heißt?
03/25/2009 21:40 cstyler#10
nette guide, pobier es mal in mh, wenn xtrap meinen pc net neustartet wie immer
03/25/2009 21:59 ms​#11
Quote:
Originally Posted by DamageBreaker View Post
:O du und deine begriffe XD das heißt?
Hosts-datei in Windows zum weiterleiten und lokaler Proxy nehme ich mal an.

Normal
Code:
Client <----------> Server
Mit Lokalem Proxy
Code:
Client <-----> Proxy <-----> Server
Hat halt den Vorteil, dass man keine Dll oder so injecten muss und dadurch nichts bypassen muss.
03/25/2009 22:03 DamageBreaker#12
Quote:
Originally Posted by Disconnect View Post
Hosts-datei in Windows zum weiterleiten und lokaler Proxy nehme ich mal an.

Normal
Code:
Client <----------> Server
Mit Lokalem Proxy
Code:
Client <-----> Proxy <-----> Server
Hat halt den Vorteil, dass man keine Dll oder so injecten muss und dadurch nichts bypassen muss.
achso danke^^

allgemeine frage: werden die pakete vom dem hackshield bzw gameguard / xtrap usw encryptet sonst würde das ja nix bringen.
03/25/2009 22:04 ms​#13
Nein, die werden vom Client encryptet. Anti-Cheat-Programme haben damit nichts zu tun.
03/25/2009 22:09 DamageBreaker#14
Quote:
Originally Posted by Disconnect View Post
Nein, die werden vom Client encryptet. Anti-Cheat-Programme haben damit nichts zu tun.
k das ergibt sinn
03/25/2009 22:17 Adroxxx#15
Aber AC Programme können WPE Blocken. Allgemein kann man auf mehrere Hürden stoßen. Neben AntiCheat Programmen, könnte eine starke Verschlüsselung hinzukommen, und eine gepackte client.exe. Wie man die Verschlüsselung aushebelt werde ich im nächsten Tutorial mal näher beschreiben. Unpacking gibts genügend Tutorials zu. Je nachdem welcher Packer verwendet wurde.