1.12.1 CTM

01/31/2013 03:09 mskc33#1
Hey,
hat jemand zufällig die ClickToMove (CTM) Offsets für den 1.12.1 Client oder weiß woher ich sie bekomme?
01/31/2013 03:51 Cambios#2
Cheatengine , Ida Pro , Ollydbg, such dir was raus^^
01/31/2013 10:44 daCoder#3
Hallo mskc33,

wenn Du dich mit 1.12.1 beschäftigst, kann ich Dir folgendes Framework empfehlen. Leider habe ich wegen mangelndem Interesse anderer nicht mehr weitergemacht.

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

Hier sind die Offsets (rebased natürlich), wie sie mit dem obigen Framework wunderbar funktionieren.

Code:
internal enum ClickToMove
        {
            CTM_Y = 0x84D890,
            CTM_X = 0x84D894,
            CTM_Z = 0x84D898,
            CTM_Action = 0x84D888
        }
01/31/2013 11:09 Cambios#4
passt eventuell nicht hier rein aber wie genau nutzt man das ClickToMove?
einfach in die Y,X,Z Variablen die Location reinschreiben, und dann das Action von 0 zu 1 ändern?:confused:
01/31/2013 12:59 Frosttall#5
Quote:
Originally Posted by Cambios View Post
passt eventuell nicht hier rein aber wie genau nutzt man das ClickToMove?
einfach in die Y,X,Z Variablen die Location reinschreiben, und dann das Action von 0 zu 1 ändern?:confused:
Na dann nutz doch du auch einen debugger aka ce, olly, ida um das herauszufinden. wer austeilt muss auch einstecken können :)

Tipp: Write-hook und dann reversen
01/31/2013 13:24 Cambios#6
Ich hab schon mit Ida pro die funktion gefunden gehabt und damit experimentiert gehabt ;)
Bisher gabs jedoch nur crashs beim testen..so das..ich da nicht viel rausbekam..außer das oben geschilderte, wobei ichs aber nichts ans laufen brachte ohne crash^-^
01/31/2013 14:12 Frosttall#7
Hast du denn schonmal geschaut, was für Werte sich bei welchem Moment in CTM_Status befinden? Durch einen Write-Hook kann man ganz einfach sehen, wer diese Werte schreibt.
01/31/2013 14:23 Cambios#8
Nunja ich hab geschaut wo im Speicher sich X,Y,Z befinden für das CTM, habe die Action-Speicherstelle gesucht die auf 1 springt solange der Charakter läuft.. jedoch wenn ich diese manuell zu 1 ändere nach dem füllen von X,Y,Z ist es immer abgeschmiert^^ Sobald er das CTM beendet hat und am Zielpunkt angekommen ist ändert sich der Wert wieder zu 0, wärend des bewegen zum Ziel ist es 1.. demnach schließe ich daraus das er zu den Koordinaten läuft die in X,Y,Z angegeben werden sobald man den Wert der Action auf 1 setzt.. oder?
01/31/2013 14:47 daCoder#9
Quote:
Originally Posted by Frosttall View Post
Na dann nutz doch du auch einen debugger aka ce, olly, ida um das herauszufinden. wer austeilt muss auch einstecken können :)

Tipp: Write-hook und dann reversen
Haha :) Eine bessere Antwort gebe es nicht. :)

Quote:
Originally Posted by Cambios View Post
passt eventuell nicht hier rein aber wie genau nutzt man das ClickToMove?
einfach in die Y,X,Z Variablen die Location reinschreiben, und dann das Action von 0 zu 1 ändern?:confused:
Ich gebe Frosttall recht, aber will mal nicht so sein :)
Ich habe die keine vollständige Liste der Actions, hatte CTM nur zum experimentieren genutzt. Action ist ein enum, wie der Name schon sagst, gibt es verschiedene Commands: Bewegen, Interagieren usw. Hier mal ein Auszug aus dem Framework. Ich habe bisher nur mit WalkTo genutzt um den Char zu bewegen.

Code:
        internal enum CTMAction
        {
            FaceTarget = 0x1,
            Stop = 0x3,
            WalkTo = 0x4,
            InteractNpc = 0x5,
            Loot = 0x6,
            InteractObject = 0x7
        }

Quote:
Originally Posted by Cambios View Post
Nunja ich hab geschaut wo im Speicher sich X,Y,Z befinden für das CTM, habe die Action-Speicherstelle gesucht die auf 1 springt solange der Charakter läuft.. jedoch wenn ich diese manuell zu 1 ändere nach dem füllen von X,Y,Z ist es immer abgeschmiert^^ Sobald er das CTM beendet hat und am Zielpunkt angekommen ist ändert sich der Wert wieder zu 0, wärend des bewegen zum Ziel ist es 1.. demnach schließe ich daraus das er zu den Koordinaten läuft die in X,Y,Z angegeben werden sobald man den Wert der Action auf 1 setzt.. oder?
Nicht den Adresseninhalt beobachten, sondern die Funktionen, die auf diese Adresse schreiben.
01/31/2013 14:53 Cambios#10
Quote:
Originally Posted by daCoder View Post
Haha :) Eine bessere Antwort gebe es nicht. :)



Ich gebe Frosttall recht, aber will mal nicht so sein :)
Ich habe die keine vollständige Liste der Actions, hatte CTM nur zum experimentieren genutzt. Action ist ein enum, wie der Name schon sagst, gibt es verschiedene Commands: Bewegen, Interagieren usw. Hier mal ein Auszug aus dem Framework. Ich habe bisher nur mit WalkTo genutzt um den Char zu bewegen.

Code:
        internal enum CTMAction
        {
            FaceTarget = 0x1,
            Stop = 0x3,
            WalkTo = 0x4,
            InteractNpc = 0x5,
            Loot = 0x6,
            InteractObject = 0x7
        }



Nicht den Adresseninhalt beobachten, sondern die Funktionen, die auf diese Adresse schreiben.
Hatte ja auch die Funktionen angeschaut die auf die Adressen schrieben :D
Die taten eben genau das was ich beschrieben hatte, sie schrieben den Wert 1 an die bestimmte Speicherstelle, und er Charakter lief solange wie dort 1 stand. Wenn man es mit Cheatengine auf 0 gesetzt hatte, stoppte der Charakter. Wenn ich jedoch die X,Y,Z Variablen (speicherstellen die ich von den funktionen hatte) gefüllt habe, und dann den wert auf 1 gesetzt hatte crashte komplett alles ;) Weiß auch nicht so genau was ich falsch gemacht hatte :) Mal beizeiten heut abend nochmal ransetzen, eventuell hab ich ja etwas übersehen ;)
02/01/2013 00:00 mskc33#11
// Hat sich erledigt, hab vergessen die BaseAddress zu addieren. Danke!
02/01/2013 00:50 Corthez#12
Koordinaten werden als float Werte gehandhabt und ein float Wert ist bekanntlich 4 Byte groß und nicht ein Byte.
Hast du denn die BaseAddress dazuaddiert, sprich BM.ReadFloat(BaseAddress + CTM_X)

Ihr versucht alle immer viel zu schnell irgendwas zu programmieren und dabei kommt sowas raus. Du probierst dich an Memory Reading und weißt nichtmal die Größe von float bzw hast dir anscheinend kein einziges Tutorial zum Thema wie finde ich Pointer rausgesucht.
Die CTM Adressen findet man mit CE ohne irgendwelche Programmierkenntnisse innerhalb von einer Minute.

Nicht böse gemeint, aber mit sowas stellt man sich manchmal selber ein Bein.
02/01/2013 00:51 mskc33#13
Hab es schon herausgefunden, trotzdem vielen Dank! :)
02/01/2013 13:55 Cambios#14
Quote:
Originally Posted by Corthez View Post
Koordinaten werden als float Werte gehandhabt und ein float Wert ist bekanntlich 4 Byte groß und nicht ein Byte.
Hast du denn die BaseAddress dazuaddiert, sprich BM.ReadFloat(BaseAddress + CTM_X)

Ihr versucht alle immer viel zu schnell irgendwas zu programmieren und dabei kommt sowas raus. Du probierst dich an Memory Reading und weißt nichtmal die Größe von float bzw hast dir anscheinend kein einziges Tutorial zum Thema wie finde ich Pointer rausgesucht.
Die CTM Adressen findet man mit CE ohne irgendwelche Programmierkenntnisse innerhalb von einer Minute.

Nicht böse gemeint, aber mit sowas stellt man sich manchmal selber ein Bein.
Bezieht sich das jetzt auf mein Post oder den vom TE?
Und wie meinst du das? Sagen wir meine Z Position ist 500 (reiner fantasiewert jetzt mal), und ich möchte zu Position Z 700, müsste ich dann in den CTM Z-Wert die 700 reinschreiben oder 300? Normal die 700 oder?
02/01/2013 18:37 -CrimeTime-#15
ganz logisch die 700, anderen falls wärest du auf 300.