Silkroad - Chat auslesen

01/23/2011 18:00 Kraizy​#1
Hallo,
kurze frage: wie kann man in Silkroad (ZSZC Private Server) den Chat auslesen und ihn in VB.NET wieder ausgeben? Muss kein C&P-Code sein, können auch nur die Begriffe sein, mit denen man das macht..

Bedanke mich jetzt schonmal!
01/24/2011 08:32 -AmA-#2
Guck mit einer CE in den RAMs nach wo der Chat text steht.
Danach suchst du den Pointer dafür.
Nun liest du in VB einfach den Pointer aus und musst den Inhalt nur noch ins passende Format umwandeln.

Zu CE und Pointer gibts genügend Tutorials.
Zum Umwandeln von Hex in Text sollte dir selber was dazu einfallen wenn du VB kanst.
01/24/2011 13:55 Kraizy​#3
Erstmal vielen Dank für deine Antwort!
Also, wie man HP/MP/Level/EXP/Charname usw. findet und die dann anschließend richtig umwandelt und anzeigt weiß ich, jedoch ist das beim Chat irgendwie anders. Wenn ich nun z.B. "hallo" im Chat schreibe und dann in CE danach Suche (als Text) dann gibt es auch nur eine Adresse mit dem Wert "hallo", jedoch wenn ich nach ca 1min nochmal hinschaue, werden das dann so komische Zeichen, die man nicht mehr lesen kann...weiß vielleicht einer, wie man richtig nach dem Chat sucht? Bei den Tutorials wird immer nur HP & MP ausgelesen...
01/24/2011 15:21 omer36#4
vllt kannste ja die packete abfangen mit WPEpro, aber ob mann dass dann zb in vb.net ausgeben kann weiß ich nciht....

[Only registered and activated users can see links. Click Here To Register...]
01/24/2011 15:31 -AmA-#5
Quote:
Originally Posted by omer36 View Post
vllt kannste ja die packete abfangen mit WPEpro, aber ob mann dass dann zb in vb.net ausgeben kann weiß ich nciht....

[Only registered and activated users can see links. Click Here To Register...]
Die Packete sind wahrscheinlich verschlüsselt. Die in VB auszugeben ist wiederum kein Problem
01/24/2011 17:53 mydoom#6
Ich kenne den genauen Kenntnisstand des Threaderstellers nicht, aber ich würde es so ähnlich versuchen:

Man kramt seinen Lieblingsdebugger aus der Schublade und lädt das Spiel da hinein. Danach setzt man einen Breakpoint auf WSASend(). Dann sendet man irgendwelchen Spam im Chat und kann auf den Stack nach der aufrufenden Funktion Ausschau halten. So sollte man irgendwann zur Chatfunktion kommen.

Alternativ kann man so auch eine eventuell vorhandene Verschlüsselungsroutine finden und reversen. Dadurch kann man den Mann in der Mitte spielen.

Das erfordert allerdings gewisse Kenntnisse.
01/25/2011 09:10 -AmA-#7
@mydoom:
Vergiss das... So weit ist der Threadersteller nicht...
Sonst würde der anstatt VB von Beginn an C++ nehmen ;)

jetzt möcht ich aber wissen warum du den, den Chat auslesen wilst...
01/25/2011 14:49 Kraizy​#8
Quote:
Originally Posted by -AmA- View Post
jetzt möcht ich aber wissen warum du den, den Chat auslesen wilst...
Einfach so, da ich die anderen Sachen (HP/MP/EXP/Level/Charname usw.) auslesen und anzeigen kann und mir gerade langweilig ist..und sowas wär auch nicht schlecht, wenn bei mir mal Silkroad versteckt im Hintergrund läuft und ich so dann trotzdem meine PM´s sehen kann.
Muss man da wie mydoom sagte mit z.B. WPE Pro Packete suchen oder kann ich nicht einfach mit Cheat Engine nach der Adresse + Offset suchen?
Hab das mit WPE Pro schon versucht und ich finde da auch ein Packet, wenn ich z.B. "hi" schreibe, aber die sind doch verschlüsselt oder?
01/26/2011 17:56 mydoom#9
Quote:
Originally Posted by Fisticuff View Post
aber die sind doch verschlüsselt oder?
Das wirst du sehen, denn falls Pakete verschlüsselt werden, sind sie logischerweise nicht als Klartext in WPE sichtbar.

EDIT// <ot> @-AmA-:
Ich kann VB auch nicht fürs Gamehacking empfehlen. Früher oder später muss man sich (insofern man weiterkommen möchte) mit Dingen, wie Strukturen, Speicherverwaltung, Assembler usw. auseinandersetzen. Genau dafür ist VB meines Erachtens (und meiner Erfahrung) nach nicht geeignet. Der dabei entstehende Overhead ist einfach grausam. Aber das soll jeder für sich selbst entscheiden. </ot>
01/26/2011 21:56 meak1#10
@mydoom du hast schon recht aber da er noch nich so weit ist lass ihn mal seine CE spielereien machen^^

ja es würde eig. auch gehen mit pointer + offset aber kp wie du die richtige addresse findest genau, eig. ganz normal was in chat eingeben und suchen in CE den text und bei scan "All memory location"(oder so^^) auswählen ;X
01/28/2011 16:23 Kraizy​#11
So, ich bin's nochmal.
Also ich hab nun ein bisschen mit WPEPro rumprobiert und wenn ich in Silkroad mit einem Bot(+ Loader) eingeloggt bin, dann kann ich die Packete, die ich davor gefunden habe auch wieder an den Client senden (also z.B. den zuvor geschriebenen Text senden, einen Skill aktivieren, hinsetzen, HP Potion nehmen etc.), jedoch wenn ich ganz normal Silkroad starten, dann bekomm ich sofort disconnect..
Naja nun meine Frage, wie kann ich in VB solch ein Packet senden (hab davor nur mit Read/WriteProcessMemory gearbeitet...). Im Sendpacket-Fenster von WPE Pro ist ein Paket:
01 00 00 4F 70 59 75 04 00 00 (hinsetzen/aufstehen)
Und, wenn ich mit dem Bot eingeloggt bin, dann steht über dem Packet 127.0.01:15788, ohne Bot steht da meine IP und es klappt nicht, heißt das ich muss mich dann in VB über den Port 15788 mit dem Client verbinden?

Hoffe auf Antworten!
01/28/2011 23:55 ZeraPain#12
am besten einfach mit srproxy machen und sich dann als "bot" auf den proxy einklinken.
dann kannst du den gesamten paketverkehr auslesen.

chat so auslesen ist kein problem, hatte ich selbst auch schonmal gemacht.

such dir am besten ein kleines tcp/ip tut für vb.
01/29/2011 13:41 Kraizy​#13
Ja, aber wie genau sende ich dann ein Packet? Bin mit SrProxy und SRO-DB Bot eingeloggt, also muss ich da nichts entschlüsseln usw. Kannst du mir vllt ein kleinen Beispielcode zeigen, wie du das gemacht hast?
01/29/2011 15:46 ZeraPain#14
auf den srproxy kannst du dich nur einmal einklinken also entweder mit sro-db bot oder mit deinem tool. wenn du das paketsystem verstanden hast kannst du auch einfach selbst einen bot schreiben und beides miteinander verbinden.

entschlüsseln musst du auch nichts, da das der proxy für dich übernimmt.
code könnte ich dir z.b. nur für C#, C++ oder Autoit geben, da ich selbst kein vb mache

vielleicht hilft dir das hier ein bisschen weiter