Flash Games hacken?

04/25/2010 14:00 Hanzo14#1
Hallo man sieht ja immer öfters im Internet wie man Flash Games hackt. Nur bezieht sich das immer auf Flash Games die auf deinem eigenem Rechner "laufen". Wie geht das nun mit Games die über einen Server kommunizieren?
04/27/2010 18:04 hallamasch#2
Da gibt es mehrere Möglichkeiten, ich mache mal ein Beispiel anhand von Darkorbit

Also bei meiner Entwicklung, benutze ich packet hacking. [TCP/IP Packet, Socket]

Das funktioniert im Prinzip so:

Methode NR. 1:

Das Spiel spielen und nebenher, einen Packet Sniffer laufen lassen.
Dabei werden die einzelnen Pakete die vom Server an den Client und vom Client an den Server geschickt werden ausgelesen.

Im Falle von Darkorbit sind diese nicht verschlüsselt, und in Text Form [Binary / Asci Transmission]

Beispiel:
Code:
0|C|46417093|7|2|ETA|louset1|19249|1040|2|996|11|0|0|0|0|0|0.
0|C|49071223|1|1||degmetrostars|18700|1300|2|0|1|0|0|0|0|0|0.
0|C|46217847|30|2||inferno65|18863|1495|2|0|9|0|0|0|0|0|0.
0|C|48788935|9|2||Phoenixxxeyes|19500|1000|2|0|9|0|0|0|0|0|0.
0|C|47676800|1|1||Hallo1010170|18700|1300|2|0|5|0|0|0|0|0|0.
0|C|45820307|10|4|C4|Leon1278|18700|1300|2|3141|16|0|0|2|0|0|0.
0|C|49071668|1|1||magnusschippmann|18700|1300|2|0|1|0|0|0|0|0|0.
0|C|36681920|10|4|VSF|...Yo......-C..sar...[VSF]|18168|2132|3|211|18|1|0|4|0|0|0.
0|C|45955419|2|2||-Cooper77-|17757|-209|2|0|8|0|0|0|0|0|0.
0|C|107700233|2|1||-=[ Streuner ]=-|20265|607|0|0|0|0|0|0|0|1|0.
Anhand von dem Beispiel erkennt man das die Daten in unverschlüsselter Text Form gesendet und empfangen werden.

Außerdem erkennt man das diese durch ein Trennzeichen in unserem Fall (|) getrennt werden. [Text delimited]

Anhand von diesen Daten lassen sich ein paar Dinge direkt erkennen, das in diesem Packet Nicknamen gesendet werden, die meisten anderen Daten sind erstmals nicht so ersichtlich.

Die Aufgabe des Bot Entwicklers besteht also erstmals darin, die Packet Struktur zu analysieren (80% cause and effect, 20% Erfahrung)

Als Beispiel wie das aussehen könnte:
Code:
0|C|48788935|9|2||Phoenixxxeyes|19500|1000|2|0|9|0|0|0|0|0|0

ErrorCode = 0;
Command = C;
? = 48788935;
? = 9;
? = 2;
? = ?;
Nickname = Phoenixxxeyes;
...............
Wie man sieht sind die meisten Daten erstmals nicht einfach ersichtlich und können meist nur durch viel ausprobieren und vorheriger Erfahrung erkannt werden.

So Der Coder beschäftigt sich nun Weiter mit diesem Packet und logt noch mehr von diesen Paketen, dabei fällt im auf das er ein Paket mit seinem Nickname geloggt hat.


Dabei fällt ihm auf das in diesem Packet auch seine User ID enthalten ist, also geht er erstmals davon aus das Abschnitt drei des Packet die User ID enthält

Code:
0|C|[COLOR="red"]48788935[/COLOR]|9|2||Phoenixxxeyes|19500|1000|2|0|9|0|0|0|0|0|0

ErrorCode = 0;
Command = C;
[COLOR="Red"]UserID[/COLOR] = 48788935;
? = 9;
? = 2;
? = ?;
Nickname = Phoenixxxeyes;
...............
Und schon kennt er das Packet ein wenig besser.
Der Coder beschäftigt sich weiterhin mit dem Packet und seiner mittlerweile 3dritten Kaffe Kanne.

Hat er die komplette Packet Struktur verstanden, die dann in etwa so aussieht:
Code:
0|C|48788935|9|2||Phoenixxxeyes|19500|1000|2|0|9|0|0|0|0|0|0

ErrorCode|Command|UserID (Entity ID)|ShipPatternID|ExpansionStage|ClanTag|Name|PositionX|PositionY|CompanyID|ClanID|DailyRank|SetWarnIcon|ClanDiplomacy|GalaxyGatesDone|?|?|?
Naja also ist ihm nun Klar das dieses Packet vom Server versendet wird wenn ein Objekt zum ersten mal erstellt wird. Da er nun das Packet versteht, macht er sich an die Arbeit und programmiert erstmals einen Parser für dieses Create Packet und anschließend einige Klassen und Funktionen die mit diesen Informationen die aus dem Packet gewonnen wurden etwas anfangen können.

Code:
string Packetdata = 0|C|48788935|9|2||Phoenixxxeyes|19500|1000|2|0|9|0|0|0|0|0|0

string data[] = funktionDieDasPacketAuseinanderNimmt(Packetdata);

PacketStructure packet = funktionDieDasPacketAnalysiert(data);

FunktionDieAlleFeindSchiffeAngreift(packet);
So da er nun damit fertig ist fällt ihm aber auf das es noch 200 weitere dieser Pakete gibt!!:facepalm:

Also überlegt er sich etwas neues :confused::confused::confused::confused:

Fortsetzung im nächsten Post!


Anmerkung: Alles was in eckigen [] Klammern ist sind Stichworte die dem Leser weiterhelfen werden um zusätzliches Material zu diesem Thema zu finden.

Also :rtfm:
Wenn ich Lust und Zeit habe ergänz ich diese mit Links.
04/27/2010 19:06 hallamasch#3
*reserviert* Hier kommt Methode2 hin
04/28/2010 14:34 Hanzo14#4
wow ok danke :D wär nett wenn du noch den zweiten Teil schreiben kannst hat aber Zeit also ja keine hektik :)