Memory adresses für Browsergames

04/26/2009 18:29 Shadow992#1
Ich habe ein kleine Problem am besten ich Liste mal auf was ich habe und was nicht ;-)

Ich habe:
das browsergame von dem Ich die Addressen beziehen will
die Addressen (als text ) ausgelesen und gespeichert , habe sie in
einem Autoit Projekt eingebaut und anzeigen lassen ......

und zu meinem erstaunen .......
Autoit zeigt nicht den selben Wert als Text an , wie er eigentlich haben müsste ........
Er zeigt es auch nicht in ascII chars an (habe ich schon überprüft) , kann man addressen in denen Texte gespeichert sind überhaupt so anzeigen lassen wie es auch in cheat engine angezeigt wird ?

Mein fall :
Wert der Addresse :eigentlich 109
Angezeigt wird aber :3145777

Und noch eine Frage wie kann man Pointer statt addressen in ein AutoIT skript verwenden ?
das mit den addressen hab ich schon raus aber was muss statt der Addresse hin wenn z.b. soetwas da steht (cheatengine):
P->003D008E
04/26/2009 18:38 felixli93#2
Quote:
Originally Posted by Shadow992 View Post
Ich habe ein kleine Problem am besten ich Liste mal auf was ich habe und was nicht ;-)

Ich habe:
das browsergame von dem Ich die Addressen beziehen will
die Addressen (als text ) ausgelesen und gespeichert , habe sie in
einem Autoit Projekt eingebaut und anzeigen lassen ......

und zu meinem erstaunen .......
Autoit zeigt nicht den selben Wert als Text an , wie er eigentlich haben müsste ........
Er zeigt es auch nicht in ascII chars an (habe ich schon überprüft) , kann man addressen in denen Texte gespeichert sind überhaupt so anzeigen lassen wie es auch in cheat engine angezeigt wird ?

Mein fall :
Wert der Addresse :eigentlich 109
Angezeigt wird aber :3145777

Und noch eine Frage wie kann man Pointer statt addressen in ein AutoIT skript verwenden ?
das mit den addressen hab ich schon raus aber was muss statt der Addresse hin wenn z.b. soetwas da steht (cheatengine):
P->003D008E
also wenn das 109, das du auslesen willst ein text ist, dann kann es gut möglich sein, dass autoit was anderes ausspuckt
wenn du die NomadMemory verwendest, musst du einfach bei $sv_type reinschreiben "[char 100]", dann liest autoit einen string aus der adresse aus mit der länge 100 (soweit ich weiß)
also in dem fall
_MemoryRead (_MemoryOpen ("prozessname"), 003D008E, "[char 100]")
das müsste dann 109 ausspucken


zu der frage mit den pointern:

du solltest mal genau nachschauen, was ein pointer ist
wenn du einen pointer in ce hinzufügst, dann musst du zuerst die adresse vom pointer reinschreiben, dann das offset (falls vorhanden)

der wert vom pointer ist dann die adresse, auf die gepointet wird
also in dem fall hat z.b. der pointer 0x(die adresse vom pointer halt) den wert 003D008E und deshalb pointet dieser pointer nach 003D008E

sähe dann in autoit so aus:


$pointer = "dein pointer"
$offset = "offset, falls vorhanden (achtung: in hex-schreibweise)"
$adresse = _MemoryRead ($mem, $pointer) + $offset



$adresse würde in dem fall dann die adresse sein, die du am ende auslesen musst (wieder mit _MemoryRead)
04/26/2009 18:53 Shadow992#3
Dankeschön , du bist der beste (hätte nicht gedacht dass ich so schnell ne antwortbekomme )
04/27/2009 22:21 schlurmann#4
Das ganze Browsergame (bzw. der Teil den du siehst) ist nur interpretiertes HTML (usw.). Mag sein, dass du Werte findest, das hat aber nichts mit den eigentlichen Werten zu tun, welche auf dem Server liegen (in einer Datenbank). Wenn du also wirklich ein Programm schreiben möchtest, das Werte ausliest und anzeigt (klingt als wäre das deine Absicht), wäre ein Herunterladen des HTML Quellcodes und eine Analyse (die Werte auslesen die dich interessieren) dessen weitaus sinnvoller und ... weniger stümperhaft.


Zeiger sind eigentlich eine ziemlich einfache Angelegenheit.

Ein Zeiger zeigt auf eine Adresse im Speicher des Programmes in dem er existiert. Dabei sollte man beachten, dass Zeiger selbst ebenfalls eine Adresse besitzen, denn sie speichern ja Informationen (nämlich eine 4 Byte große Adresse) und sind somit auch im Speicher existent.

Sprichst du den Wert an der Adresse an, auf die der Zeiger zeigt, nennt sich das Dereferenzierung.
04/27/2009 22:47 kennyo#5
Wie der Poster über mir schon gesagt hat, kannst du mit den Adressen nichts machen, da die realen Werte auf dem Server gespeichert sind.

Wenn (und davon gehe ich aus) du die Werte nur auslesen willst um damit irgendwelche Berechnungen durchzuführen, solltest du dass durch direktes auslesen der Webseite tun - alternativ auch über Copy&Paste um nicht als Bot zu gelten.
Wenn du das daraus resultierende Programm auch anderen Spielern zur verfügung stellen willst, würde sich PHP sehr gut dafür eignen, da man sich dann keine Programme runterladen müsste.