DAoC - Offset für den Combat-Chat herausfinden

10/07/2010 20:44 coder#1
Hi,

ich bräuchte mal Eure Hilfe beim Auslesen den Aktions-Chats von DAoC (Dark Age of Camelot).

Ich nutze Cheatengine und versuche damit das das richtige Offset für den Combat-Chat zu finden. Das einzige, was ich aber finde, ist eine flüchtige (ändert sich bei jedem Relog oder Spielneustart) Speicheradresse.

Ich habe schon die Funktion "Pointer Scan for this Address" genutzt und einen (mehrere?) Pointer auf die Adresse gefunden. Screenshot:
[Only registered and activated users can see links. Click Here To Register...]

Nur bringen mir die Angaben alleine wohl nicht viel. Ich benötige doch einen Wert wie "game.dll+681627", sprich Einstiegspunkt-des-Spiels + Offset = Speicherort, den ich suche.

Die Werte aus dem Screenshot bringen mir aber alle nichts, nirgendwo steht der Combat-Chat drin. Wie komme ich nun an das richtige Offset des Combat-Chats ran?

Danke im Voraus!
10/07/2010 22:41 krustx#2
du schnappst dir die baseadress der game.dll, da gibts ne api fuktion getbaseadress oda so, dazu addierst du dann den rest, ließt den wert der entstandenen addrese aus, und addierst das offset:
hier mal pseudocode
Adresse1 = GetBaseAdress("game.dll") + 102d2e0;
Pointer1 = ProcessReadmemory(Adresse1) + 78; 'also das erste offset
Pointer2 = ProcessReadMemory(Pointer1) + 0; 'zweites offset addieren
Pointer3 = ProcessReadMemory(Pointer2) + 8; 'drittes Offset
Pointer4 = ProcessReadMemory(Pointer3)+ 7c;
EndAdresse = ProcessReadMemory(Pointer4) + 0;' man muss natürlich nicht 0 addieren

Endadresse ist also die adresse, auf die der Pointerreihe zeigt.
ich hoffe der pseudocode ist so richtig.
10/07/2010 23:13 coder#3
Hallo krustx,

danke für deine Antwort. Ich erhalte durch das ganze Addieren dann wieder den Wert, den ich Suche. Das hat schonmal geklappt.

Leider ändern sich beim ein- und ausloggen aber die Adressen wieder. Siehe Screenshot:
[Only registered and activated users can see links. Click Here To Register...]

Was habe ich falsch gemacht?

Ich nutze die Blackmagic.dll fürs Speicherauslesen. Es gibt dort eine FindPattern-Methode. Hilft mir die vielleicht beim finden des richtigen Speicherortes des Combat-Chats?
10/07/2010 23:30 SmackJew#4
sieht mehr aus wie dark age of computer gaming
10/07/2010 23:31 coder#5
ja, das spiel ist schon ein tag älter aber deine antwort hilft mir jetzt auch nicht weiter. :D
10/07/2010 23:37 SmackJew#6
hier meine hilfe: hör auf mit noobengine rumzufummeln, schnapp dir nen richtigen debugger und setz nen hook
10/08/2010 00:32 krustx#7
nimm andere pointer...
erstmal ist es wichtig, dss du einen pointer hat, der auch statisch ist.
dann kannst du andfangen du programmieren.
10/08/2010 18:19 coder#8
Hallo ihr beiden,

das ist ja mein Problem, wie komme ich an die statischen Pointer ran? Ich nutze den Pointerscanner aber der wirft mir immer die gleichen Ergebnisse aus.

SmackJew: Welche Tools empfiehlst du denn statt CheatEngine?
10/09/2010 13:52 SmackJew#9
Quote:
Originally Posted by coder View Post
Hallo ihr beiden,

das ist ja mein Problem, wie komme ich an die statischen Pointer ran? Ich nutze den Pointerscanner aber der wirft mir immer die gleichen Ergebnisse aus.

SmackJew: Welche Tools empfiehlst du denn statt CheatEngine?
olly + programmiersprache deiner wahl
10/09/2010 20:52 coder#10
Wie schon gesagt, nutze ich zum Speicherauslesen die blackmagic.dll. Dort gibt es eine Funktion FindPattern().
Eventuell hilft mir diese Funktion, die dynamische Speicheradresse zu finden.

Nehmen wir an, ich suche mit FindPattern nach dem Text "No such command (/whox" im Speicher, dann schreibe ich:
uint adrs = bm.FindPattern("4e 6f 20 73 75 63 68 20 63 6f 6d 6d 61 6e 64 20 28 2f 77 68 6f 78 20", "xxxxxxxxxxxxxxxxxxxxxxx");

Damit finde ich scheinbar die erste Adresse, wo dieser Text drinsteht. Leider steht dort immer dieser Text drin, egal was später noch im Combat-Chat erscheint. Wie kann ich denn mit Blackmagic alle Speicheradresse finden, in denen mein gesuchter Text steht.

Oder habt ihr noch andere Ideen, wie ich mein Problem lösen kann?
10/10/2010 00:55 SmackJew#11
Quote:
Originally Posted by SmackJew View Post
olly + programmiersprache deiner wahl
....