_MemoryGetBaseAddress liefert falschen wert

11/01/2013 15:00 Croco™#1
Hi zusammen,
ich verzweifel gerade an einem möglichem Denkfehler von mir.
Folgendes Szenario:
Ich habe mit CE einen pointer ermittelt der Folgende Werte hat.

Quote:
Base address: "spotify.exe"+006AEF98 (=> 061895A8)
Offsets: 10, 16
End Addresse: 060CD83A
Soweit so gut. Jetzt wollte ich mit AutoIT über die Funktion _MemoryGetBaseAddress die Addresse von "spotify.exe" auslesen.
Leider, und das verstehe ich nunn nicht, kommt immer 0x004000 dabei raus.
Das kann aber nicht sein da 061895A8 - 006AEF98 nicht 004000 ergibt !?
Habe ich gerade einen Denkfehler oder stimmt der Wert tatsächlich nicht ?

Mein Code:
11/01/2013 16:25 KDeluxe#2
Dein Script ist schrecklich. Überprüfen kannst du das ganze doch einfach, indem du in CE "spotify.exe" als Adresse hinzufügst. Eine mögliche Fehlerursache können die ganzen unnötigen Stringoperationen sein, das kann ich nicht genau sagen.

Ich habe dir mal ein Beispiel [Only registered and activated users can see links. Click Here To Register...] erstellt.
Falls das ganze nicht funktionieren sollte einfach die Stelle mit entsprechenden @error Code schreiben.
11/01/2013 16:45 Croco™#3
Du weist garnicht was du angerichtet hast :)
Ich hatte noch 3 Andere Fragen die du alle dank deiner UDF gelöst hast.
THX !

Aber eine Frage habe ich noch.
Du hast eine Funktion namens _KDMemory_FindAddress eingebaut.
Wie kann man den Suchbereich eingrenzen wenn man garnicht weis wo der Pattern anfängt ?
Ansonsten würde die Schleife ja von 0x00400000 bis 0x00FFFFFF durchlaufen !?
11/02/2013 01:25 KDeluxe#4
Beide Parameter müssen vom Anwender selbst angegeben werden, einen Standardwert gibt es nicht. Bei 32 Bit Anwendungen kann es deshalb theoretisch von 0 bis 0xFFFFFFFF und bei 64 Bit Anwendungen von 0 bis 0xFFFFFFFFFFFFFFFF gehen. Das kann man nicht machen, das würde viel zu lange dauern und viel zu viele Ergebnisse bringen. Wenn du den Suchbereich nicht kennst musst du diesen schlichtweg herausfinden, denn das ist eine Voraussetzung.
Für was brauchst du den diese Funktion? Für einen einfachen Bot bzw. Hack sollte diese Funktion unnötig sein, ich rate dir davon ab. Pointer sind hier die bessere Lösung.
11/02/2013 15:44 Croco™#5
Es geht mehr um eine Verständnisfrage.
Mich hat es nur gewundert da die Funktion von Luzifer42 und RunzelEier ([Only registered and activated users can see links. Click Here To Register...]) das ganze mit einem Schrittwert von 51200 minus die Hälfte des Patternkeys absuchen. (Nur ihre Funktion funktioniert nicht ;) ) Die Frage ist also wie kann man "diesen schlichtweg herausfinden" ? Ist das dann nur eine Schätzung in der man sagt die Position ist meistens im Bereich X Y oder gibt es da bestimmte Wege ?
11/02/2013 19:41 KDeluxe#6
Die Funktionen unterscheiden sich, meine ist schlicht gehalten. Evtl. werde ich diese bearbeiten. Schätzungen sind immer fehl am Platz, man muss es wissen. Es gibt aber natürlich keine Universallösung, das muss von Anwendung zu Anwendung entschieden werden. Man muss wissen was man macht, das hat aber gar nichts mehr mit AutoIt oder diesen Funktionen zu tun.
11/02/2013 20:20 Croco™#7
Danke, ich habe mich heute ein wenig mit dem Thema befasst und habe nun beider FUnktionen und ihre Arbeitsweise verstanden. Vielen Dank für deine Hilfe !