Memory Write brauche ein Beispiel

11/28/2013 18:15 Dumbatzig#1
Hi ich bin Neu hier und hoffe ich bin hier richtig, den ich verzweifle fast

Ich hoffe mir kann jemand kurtz helfen mit einem kleine Script Beispiel,

und zwar dreht es sich darum ich möchte für einen WoW Privat server ein MobRadar machen also das die Monster auf der Minimap erscheinen.
Soweit so gut, mit Cheat Engin habe ich das schon hinbekommen, aber da cheat Engin manchesmal Dedected wird und sich Wow schliest, möchte ich das mit Autoit machen und da bräuchte ich von jemanden eine kleine Hilfestellung.

Ich bräuchte ein einfaches Beispiel in Autoit um einfach in einer Adresse die Value zu verändern, ich hoffe es kann mir jemand ein Beispielscript geben das einfach zu verstehn ist damit ich mich einarbeiten kann, so na dann hier mal die
Adressen e.t.c

Quote:
Beast an 8 bytes
12884901892
Beast aus
17179869188 8 Bytes

"THREADSTACK0"-00000134 offset 0 = 294c Points to = 1C060A94
ich habe einfach vor einen ON und Aus Button zu machen, die Gui ist kein Problem ich brauche einfach nur eine Simple Funktion, um in der obengenanten Adresse die Value von Beast an [Value 12884901892] 8 Bytes - auf Beast aus [Value 17179869188] 8 Bytes zu schalten,

ich hoffe ihr Versteht was ich meine, schon mal ein Dankeschön im Vorraus, lg.
11/28/2013 18:46 KDeluxe#2
Sollte das ganze nicht funktionieren wäre die .CT Datei hilfreich.
11/28/2013 19:04 Dumbatzig#3
Hmm Funktioniert nicht hier mal ein Sreen Davon und im Anhang die .Ct Datei

[Only registered and activated users can see links. Click Here To Register...]
11/29/2013 00:38 KDeluxe#4
Das hatte ich mir schon gedacht. "THREADSTACK0" ist kein Modul, deshalb gibt dir die Funktion keinen Rückgabewert.
Ich könnte in der UDF eine neue Funktion hinzufügen, müsste vorher allerdings schauen, wie ich das umsetzen würde (evtl über Symbolnamen). Ein häufiges Problem wird es kaum sein, außerdem lässt es sich einfach umgehen, deswegen werde ich eine neue Funktion erst mal nicht in Erwägung ziehen.
Wie kannst du das Problem lösen? Ganz einfach:
  • "THREADSTACK0" in CE als Adresse hinzufügen ("Add Address Manually")
  • in der Liste einen Rechtsklick auf den neu hinzugefügten Eintrag → "Browse this memory region"
  • CE öffnet den "Memory Viewer" in einem neuen Fenster, in diesem Siehst du eine Tabelle mit vier Spalten (Address, Bytes, Opcode, Comment)
  • du kopierst "Address" der markierten Zeile, das dürfte in etwas so aussehen: wow.exe+123ABC
  • von diesem Wert subtrahierst du die 0x00000134 (beachte: es handeln sich hierbei um Hexadezimalzahlen)
  • das Ergebnis kannst du zur Kontrolle ebenfalls in CE als Adresse hinzufügen, bei meinem Beispiel wäre es: "wow.exe"+123988
  • "wow.exe"+123988 und "THREADSTACK0" müssen dir in CE das selbe Ergebnis anzeigen

Das Script würde dann so aussehen:

Im übrigen musst du gar keinen 8 Byte großen Wert schreiben, sondern nur einen 1 Byte großen Wert.
  • Address: "THREADSTACK0"-00000134
  • Offset 0: 294C
  • Type: Byte
  • Werte: 192 = aus, 128 = an
Relevant ist hierbei eigentlich nur das 7. Bit, bei einem 8 Byte großen Wert das 63. Bit. Dieses Ändert sich von 0 (an) zu 1 (aus).
11/29/2013 12:12 Dumbatzig#5
Quote:
Originally Posted by KDeluxe View Post
Das hatte ich mir schon gedacht. "THREADSTACK0" ist kein Modul, deshalb gibt dir die Funktion keinen Rückgabewert.
Ich könnte in der UDF eine neue Funktion hinzufügen, müsste vorher allerdings schauen, wie ich das umsetzen würde (evtl über Symbolnamen). Ein häufiges Problem wird es kaum sein, außerdem lässt es sich einfach umgehen, deswegen werde ich eine neue Funktion erst mal nicht in Erwägung ziehen.
Wie kannst du das Problem lösen? Ganz einfach:
  • "THREADSTACK0" in CE als Adresse hinzufügen ("Add Address Manually")
  • in der Liste einen Rechtsklick auf den neu hinzugefügten Eintrag → "Browse this memory region"
  • CE öffnet den "Memory Viewer" in einem neuen Fenster, in diesem Siehst du eine Tabelle mit vier Spalten (Address, Bytes, Opcode, Comment)
  • du kopierst "Address" der markierten Zeile, das dürfte in etwas so aussehen: wow.exe+123ABC
  • von diesem Wert subtrahierst du die 0x00000134 (beachte: es handeln sich hierbei um Hexadezimalzahlen)
  • das Ergebnis kannst du zur Kontrolle ebenfalls in CE als Adresse hinzufügen, bei meinem Beispiel wäre es: "wow.exe"+123988
  • "wow.exe"+123988 und "THREADSTACK0" müssen dir in CE das selbe Ergebnis anzeigen

Das Script würde dann so aussehen:

Im übrigen musst du gar keinen 8 Byte großen Wert schreiben, sondern nur einen 1 Byte großen Wert.
  • Address: "THREADSTACK0"-00000134
  • Offset 0: 294C
  • Type: Byte
  • Werte: 192 = aus, 128 = an
Relevant ist hierbei eigentlich nur das 7. Bit, bei einem 8 Byte großen Wert das 63. Bit. Dieses Ändert sich von 0 (an) zu 1 (aus).
Danke, das werd ich mal versuchen.

Edit: Funktioniert nicht ??????????

Browse Memory
Wow.exe+174C0 - 03 BB FFFF598B - add edi,[ebx-74A60001]


Hexdezimal = Wow.exe+174C0 - 294c
Dezimal = Wow.exe+95424 - 10572 = 84852
wieder in Hexdezimal 14B74
Ware dann wieder in Hexdezimal = Wow.exe+14B74
ergibt dann aber 36796569667
also das stimmt nicht überein, verstehe ich nicht wo hier der Fehler liegt, lg.