vorgehensweise beim Multiplayergame hacken

05/12/2014 20:05 xX.Slayer.Xx#1
Hi Leute,

Ich denke, dieses Thema wurde schon sehr oft angesprochen. Doch in der Suche habe ich leider nichts gefunden was mir genau weiterhilft.

Ich programmiere nun 2-3 Jahre C++. Angefangen mit einfachen Consolen Programmen und dann weiter zur WinApi und DirectX9(Direct3D9/11).

Nun habe ich im letzten Jahr vermehrt kleine Hacks geschrieben.
Hauptsächlich Memory Hacks aber auch kleine Direct3D Hooks für Wallhacks und Crosshairs etc..

Nun möchte ich einen Schritt weiter gehen.
Ich möchte ein Multiplayer Game Hacken.
Als Übungsobjekt habe ich mir das Game "Der Herr der Rinde - Schlacht um Mittelerde 2 - Aufstieg des Hexenkönigs" ausgewählt.

Für den Singleplayer des Spiels habe ich bereits einen Memory Hack geschrieben.
Es werden einfache Werte wie Ressourcen, Truppenstärken und Spezialpoints geändert.

Das ganze möchte ich nun auch im Multiplayer machen. Der Multiplayer läuft bei mir übers Netzwerk. Also ein PC als Server und der andere PC als einfacher Client. (Ich bin Client).

Nun meine Frage:
Wie lerne ich die "Basics für sowas? Wie lerne ich das abfangen der Packages?
Package Manager? Was ist das?

All solche Fragen stelle ich mir. Villeicht kann mir ja mal jemand auf die Sprünge helfen. Eventuell habt ihr auch nützliche Links für mich seperat.

Über Hilfe würde ich mich sehr freuen,

Grüße
xX.Slayer.Xx
05/12/2014 20:23 Actidnoide#2
Ein Problem ist aufjedenfall, dass die kritischen Werte, die man bei Memoryhacks z.B. zum erhoehen eines Levels verwendet, beim Server liegen. Das heisst du als Client kannst diese nicht veraendern.

Um Bots/Hacks zu programmieren, musst du vorerst nichts anderes tun, als den internen Aufbau des Spiels zu verstehen. Da waere dann der Schluesselbegriff "Reverse Engineering" sehr hilfreich. Dafuer verwendet man Debugger und RE Tools wie OllyDbg oder IDA (einfach mal googlen). Mit diesen Tools kannst du den Code des Spiels in Assembler darstellen und differenziert analysieren. Das ist vom Aufwand her leider kein Vergleich zum Memorysearching.

Wenn du dann den Aufbau verstanden hast, bist du auch direkt in der Lage deine eigenen Prozeduren in den Prozess zu injezieren und den Ablauf des Spiels zu modifizieren. Und mit ein bisschen Glueck findet man gleich noch schwerwiegende Sicherheitsluecken die mit dem Server zusammenhaengen und dir einen groesseren Zugriff verschaffen.

Das wars auch schon :)
05/12/2014 21:07 xX.Slayer.Xx#3
Quote:
Originally Posted by Actidnoide View Post
Ein Problem ist aufjedenfall, dass die kritischen Werte, die man bei Memoryhacks z.B. zum erhoehen eines Levels verwendet, beim Server liegen. Das heisst du als Client kannst diese nicht veraendern.

Um Bots/Hacks zu programmieren, musst du vorerst nichts anderes tun, als den internen Aufbau des Spiels zu verstehen. Da waere dann der Schluesselbegriff "Reverse Engineering" sehr hilfreich. Dafuer verwendet man Debugger und RE Tools wie OllyDbg oder IDA (einfach mal googlen). Mit diesen Tools kannst du den Code des Spiels in Assembler darstellen und differenziert analysieren. Das ist vom Aufwand her leider kein Vergleich zum Memorysearching.

Wenn du dann den Aufbau verstanden hast, bist du auch direkt in der Lage deine eigenen Prozeduren in den Prozess zu injezieren und den Ablauf des Spiels zu modifizieren. Und mit ein bisschen Glueck findet man gleich noch schwerwiegende Sicherheitsluecken die mit dem Server zusammenhaengen und dir einen groesseren Zugriff verschaffen.

Das wars auch schon :)
Habe auch schon etwas mit OllyDbg gearbeitet. Jedoch nicht sehr intensiv.
Werde mich mal genauer in das Thema OllyDbg und IDA einlesen.
Quote:
Ein Problem ist aufjedenfall, dass die kritischen Werte, die man bei Memoryhacks z.B. zum erhoehen eines Levels verwendet, beim Server liegen. Das heisst du als Client kannst diese nicht veraendern.
wie würde man denn da vorgehen? Eine Funktion aufrufen, welche dem Server sagt, dass man Punkte dazubekommt? z.B. Um Ressourcen zu bekommen, die Funktion ausführen, welche bei "Mühlen" aufgerufen wird, welche Ressourcen herstellen?
05/12/2014 21:25 Actidnoide#4
Quote:
Originally Posted by xX.Slayer.Xx View Post
wie würde man denn da vorgehen? Eine Funktion aufrufen, welche dem Server sagt, dass man Punkte dazubekommt? z.B. Um Ressourcen zu bekommen, die Funktion ausführen, welche bei "Mühlen" aufgerufen wird, welche Ressourcen herstellen?
Sofern so eine Funktion existiert, die einem vereinfacht Punkte zukommen laesst geht das, klar. Aber angenommen du würdest ein Multiplayergame entwickeln, würdest du so eine Möglichkeit überhaupt erst einbauen?

Meistens wird es eher so aussehen (bezogen auf dein Beispiel):

- Client sagt Server ich habe auf Mühlen geklickt
- Server überprüft ob du in deiner jetzigen Lage überhaupt mühlen kannst.
- Wenn ja, fuehrt er die interne Serverfunktion aus, die dir Resourcen zukommen lässt

Wie du siehst, hast du bisauf den Anfangsbefehl selbst keine Kontrolle über den Prozess
Meist bleibt nichts anderes übrig, als das zu tun, was normale Bots auch machen.
05/12/2014 21:45 xX.Slayer.Xx#5
Quote:
Originally Posted by Actidnoide View Post
Meist bleibt nichts anderes übrig, als das zu tun, was normale Bots auch machen.
Wie genau gehen denn "Normale Bots" da vor?
Sicherheitslücke vom Server suchen und dann den Server steuern?
Wie könnte eine solche "Lücke" aussehen?
05/12/2014 21:53 Actidnoide#6
Nein, "normale Bots" machen nichts anderes als Pixelsearch/Clickbots auch. Nur anstatt nach Pixelfragmenten zu suchen, werden die Informationen direkt aus dem Speicher gelesen. Und anstatt auf dem Gameinterface rumzuklicken wird die Funktion für einen Klick/Befehl einfach Clientintern aufgerufen.


Das ist um einiges effizienter aber leider leichter zu detecten.

Sicherheitsluecken wirst du allgemein nur temporär finden, da diese vom Spielehersteller schnell erkannt und behoben werden.
05/14/2014 18:29 xX.Slayer.Xx#7
So habe mich jetzt eingelesen in das Thema und mir viele verschiedene Beiträge angesehen.
Habe mich für ein anderes Spiel entschieden, da das vorherige nicht so ganz mein Ziel ist^^.

Möchte mir nun mal Metin 2 vornehmen.
Problem an der Sache:

Wie komme ich nun mit OllyDBG am Hackshield vorbei?
Kennt sich da jemand aus?
Wäre echt super, wenn mir da mal jemand auf die sprünge helfen kann. Villeicht Links mit anleitungen oder wieder ein paar Wörter, nach denen in Googlen kann?

Grüße
xX.Slayer.Xx
05/14/2014 18:33 ​Tension#8
Dafür brauchst du einen Bypass. Ohne Reversing Kenntnisse wird das aber nichts.
05/14/2014 20:07 xX.Slayer.Xx#9
Mein Problem ist, sobald ich OllyDBG starte, beendet sich Metin 2.
Ich habe bereits das Hackshield deaktiviert und wollte nun die MessageBox umgehen, damit das game auch ohne HackShield startet.

Leider nach jedem start von OllyDBG ist das Programm aus.
05/14/2014 20:35 Actidnoide#10
Bei Metin2 sind mit Sicherheit auch Anti-Debug Methoden vorhanden, sodass ein Debugger das Spiel ohne spezielle Konfiguration erstmal nicht starten kann. Um solche Protections zu bypassen braucht man schon ein sehr umfangreiches Wissen ueber den Aufbau und Ablauf der Prozesse unter Windows.

Leg dir einfach ein paar Buecher und Paper uebers Reversing unter Windows zu und arbeite dich dann erstmal mit einfachen Uebungsaufgaben wie Crackmes heran.

Ich glaube nicht, dass du mit deinem derzeitigen Stand an Metin 2 Erfolge erzielen wirst.
05/14/2014 20:42 Mostey#11
Quote:
Originally Posted by xX.Slayer.Xx View Post
Mein Problem ist, sobald ich OllyDBG starte, beendet sich Metin 2.
Ich habe bereits das Hackshield deaktiviert und wollte nun die MessageBox umgehen, damit das game auch ohne HackShield startet.

Leider nach jedem start von OllyDBG ist das Programm aus.
Dann läuft der Schutz noch. Es gibt einige Techniken die erkennen können, ob ein Debugger an dem Prozess klebt oder generell läuft. Hierzu mal [Only registered and activated users can see links. Click Here To Register...] Post als Referenz. Da wird auf die einzelnen Schutzmechanismen eingegangen.

Damals hatte ich diesbezüglich TerminateProcess / ExitProcess gehooked und dort einen Sleep von x Sekunden eingebaut um meinen Debugger attachen zu können. Als ich die Methode fand, hab ich den Schutz gepatched.

Quote:
Originally Posted by Actidnoide View Post
Ich glaube nicht, dass du mit deinem derzeitigen Stand an Metin 2 Erfolge erzielen wirst.
Das klingt irgendwie so, als ob Metin2 sicher wäre und generell ein anspruchsvolles Spiel ist. :rolleyes:
05/14/2014 20:59 Actidnoide#12
Quote:
Originally Posted by Mostey View Post
Das klingt irgendwie so, als ob Metin2 sicher wäre und generell ein anspruchsvolles Spiel ist. :rolleyes:

Wie ich deinem Post gerade entnommen ist es das anscheinend nicht ;)
Dennoch war das jetzt relativ auf den Wissensstand vom Threadersteller bezogen (und sorry an Slayer wenn dies nur ein falsches Vorurteil war :rolleyes:).
05/14/2014 21:10 Mostey#13
Quote:
Originally Posted by Actidnoide View Post
Wie ich deinem Post gerade entnommen ist es das anscheinend nicht ;)
Dennoch war das jetzt relativ auf den Wissensstand vom Threadersteller bezogen (und sorry an Slayer wenn dies nur ein falsches Vorurteil war :rolleyes:).
Es geht. Viel Erfahrung habe ich damit auch nicht, aber für den Anfang wäre ein Spiel ohne jegliche Schutzmechanismen von Vorteil, um sich darin frei bewegen zu können.

Und btw. ist Metin2 definitiv nicht anspruchsvoll, die besagten Techniken verwenden viele Spiele. ;O
05/14/2014 21:29 ​Tension#14
Afaik ist Metin mit Themida gepackt.
Du kannst also während Metin läuft einen Dump erstellen und dort drin rum suchen.
Solltest du auf irgendeine Art und Weise den OEP finden, kannst du mit ImpREC auch noch den IAT rekonstruieren lassen.