Auto-it Waypoints

04/15/2007 00:04 Busti#16
Natürlich kann man per AutoIT memory reading, du must einfach die Pointer finden, dann die X,Y,Z Adressen finden, dann Auslesen, dann solange rumlaufen bis du auf der coordinate(n) stehst.
Daran arbeite ich gerade,bin gerade daran rauszufinden, wie ich die pointer finde :O
04/18/2007 19:58 BlackFog#17
Leichter gesagt als getan :D.
Ich versteh einfach nicht wie man Static Pointer findet. Ich hab einen Code in c++ für den Static Pointer für Health in WoW . In diesem Code ist eine bestimmte Adresse angegeben . Die frage ist wie kommt der Autor auf diese eine bestimmte Adresse ? Also wenn jemand das nochmal erklären könnte wäre nett. Wie ist mir Wurscht im Thread per icq 313-671-234 oder per PN .

MFG

BLackFOg
04/18/2007 20:38 triris#18
Hab mal auf die schnelle ein kleines Tut geschrieben:

Also, am besten besorgt ihr euch CE (CheatEngine) damit geht's am einfachsten!

Wir nehmen mal das Beispiel Solitär. Wir wollen die Anzahl der Punkte auslesen.

Also, CE öffnen und sol.exe damit öffnen.
Erst auf First Scan klicken, dann einfach auswählen:

Code:
Value Type: 4 Byte
Scan Type: Exact Value
Value: 0 (haben ja am Anfang 0 Punkte;) )

Jetzt einfach mal in Solitär irgend etwas machen was Punkte gibt. Punkte merken und Rückgängig machen klicken.

Dann geht ihr Auf Scan Type und Increased by... [Punkte]
Dann die Aktion wieder durchführen und Next Scan drücken.
Einfach solange rum machen bis ihr die Adresse gefunden habt.

Doppelklick auf die Adresse so das sie unten in der Adress Liste erscheint.

Testet das ganze dann einfach indem ihr die Punkte ändert. (In der Adress Liste doppelt draufklicken auf die Adress und einfach einen neuen Wert eingeben)

In meinem Fall ist die Adresse

Code:
A9238 bzw 0xA9238.
Dann Rechtsklick auf die Adresse im Adress Fenster und Find out what writes to this address.

Dann erscheint früher oder später in dem neuen Fenster die Zeile:

Code:
mov[esi+30],eax
Jetzt drückt ihr auf die Zeile und dann auf More Information.

In dem neuen Popup findet ihr dann unten die Werte für die Register. In meinem Fall ist

Code:
ESI = 000A9208.
Jetzt klickt ihr die beiden PopUp's wieder weg.
Dann geht ihr auf New Scan und markiert dann links neben Value Hex. In den Kasten Value gebt ihr den Wert den ESI hat ein. Also in meinem Fall 000A9208.
Jetzt erscheint links eine grün gefärbte Adresse und zwar 01007170 mit dem Wert 000A9208. Zumindest wenn ihr alles richtig gemacht habt. :P

Wenn die Adresse grün gefärbt ist bedeutet dass, das dies ein Static Pointer ist.

Dass heißt, der Pointer auf die Punkte ist IMMER! der Wert hinter der Adresse

Code:
0x01007170 + 0x30.
Ihr müsst also nur die Adresse 0x0100710 auslesen und 0x30 dazu addieren :)

In C++ sähe das so aus:

Code:
unsigned int address;
ReadProcessMemory(hProcess,(LPVOID)0x01007170,(LPVOID)&address,sizeof(address),0);
address += 0x30; // = Die Adresse für die Punkte :)
Ich hoffe ich konnte helfen^^
04/19/2007 16:25 BlackFog#19
Vielen dank das hat mir sehr geholfne :) +k

MFG

BlackFog
04/19/2007 18:30 triris#20
Gerne. Ich kann auch bei Bedarf mal ein komplettes Cpp Programm für einen Solitär Hack posten.
04/19/2007 18:45 BlackFog#21
Hmm ne eigentlich nicht nötig aber ich hab ein anderes kleines prob. Ich hab bei der Adresse für Health (bei WoW) es genauso gemacht wie du gesagt hast und ich komme nicht auf einen static pointer. Ich meinem mal in einem Threat etwas von "bei WoW sind die Pointer über mehrere Ebenen . Könntest du vllt. mal erklären wie ich da jetzt weiterkommen könnte ?

MFG

BlackFog
04/19/2007 20:37 triris#22
Stimmt...ziemlich vertrackt. Ich arbeite an einer Lösung, ich denke ich poste sie spätestens morgen abend :)

Ich poste mal immer meinen Fortschritt.
Also, es gibt immer zwei Pointer die auf die HP zeigen.

Ich vermute mal das du auch schon soweit warst ;)

Einer ist eigentlich nur ein Anti Cheat Schutz. Der ASM Code hinter dem zweiten ist
Code:
repe movesd
repe ist jedenfalls: repeat as long as equal
movesd ist laut referenz:
Quote:
Move Doubleword at address ESI to addresss EDI
vlt kann ja einer der ASM cracks hier was dazu sagen :)

hinter dem ersten ist der Code:
Code:
mov [eax+edx*4],ecx
Code:
EAX = 1842A420
EDX = 00000016
Code:
0x16 * 4 = 0x58
Auf der Suche nach EAX kommen zwei neue Pointer ins Spiel:

Code:
18428010 = EAX bzw 0x1842A420
18428BA8 = EAX bzw 0x1842A420
Code:
0x1842A420 = Die Adresse vom ersten Pointer - 0x58 (die ist 0x1842A478)
Bis hierher müsste also eigentlich alles stimmen da es immer aufgeht :)

Auf der Suche nach EDX kommen ziemlich viele neue Pointer ins Spiel. Static als auch nicht static.

So, für heute hab ich kein Bock mehr. Ich mach mich da morgen mal mit nem Debugger ran und versuche rauszufinden was in EAX schreibt. Ich denke das ist der Schlüssel :)

btw, du solltest soweit eigentlich selbst kommen ;) Sonst wird das eher nix mit dem Bot. Immerhin musst du noch Adressen für zig andere Variablen herausfinden und es wird jedes mal anderst sein ;)

Man braucht dazu kein können! Nur Motivation, Ausdauer, Geduld und eine ASM Referenz!

#edit: grade gefunden: [Only registered and activated users can see links. Click Here To Register...]
das sollte dir klarmachen wie du vorgehen musst ;)
Ist eigentlich recht gut beschrieben in dem Tut.

Das ganze Tut stimmt nichtmehr ganz, seit 2.0.10 gibt es jetzt noch mehr Pointer. Du musst dich einfach via Reverse Engineering einfach immer weiter zurückhangeln bis zum Static Pointer.