08.09.2012, 01:39
(Dieser Beitrag wurde zuletzt bearbeitet: 08.09.2012, 01:45 von iNvIcTUs oRCuS.)
(07.09.2012, 20:25)darius83 schrieb: Zeigt CE die direkt an? Hab da noch nicht so drauf geachtet. bzw nicht nachgeschaut, weil ich damit noch nichts anfangen konnteDiese zeigt in der Regel jeder Debugger/Dissassembler an. So auch Cheat Engine...
(07.09.2012, 20:25)darius83 schrieb: Aber rein theoretisch finde ich das mit dem Data als Var schon garnicht so verkehrt, weil ich den Code so einfacher in eine Funktion auslagern und ggf erweitern kann... Ich habe bisher nur ein Data von 4 gebraucht, deswegen hab ich den Wert auch fest gesetzt, aber ich könnte ja jetzt in dem Code aus meinem späteren Post das Data:=4 entfernen und Data als Parameter übergeben lassen und die Funktion so auch für variable Werte verwenden.Ich weiß jetzt nicht wie geübt Du mit Delphi bist aber z.B. das "Button - On Click" Ereignis ist ja nur eine Prozedur. Eine Funktion, oder in Delphi als "function..." bezeichnet sieht ja so aus wie z.B. deine "GetAdress" Funktion. Eine Funktion setzt sich demnach als "Bezeichnung (Übergabeparameter, ..., ... etc.): Ausgabeparameter" zusammen.
Somit wäre die Deklaration bei der Button Prozedur irrelevant. Zumindest so wie diese letztlich aufgebaut ist.
Zum anderen... Pointer sind immer (auf 32-Bit Systemen sicher) 4 zusammenhängende Bytes. Deshalb spricht man auch z.B. von 4 Bytes Aligned. Einzig der letzte Datentyp, also z.B. ein Geld- oder Healthwert im Spiel kann eine andere Größe haben. Und da Du bereits eine Funktion namens "GetAdress" hast, also quasi das Ganze trennst, kannst Du getrost bei dem bleiben wie ich es beschrieben hab. Das auslesen oder schreiben des Wertes könntest Du dann in eine andere Funktion auslagern und da dementsprechende Parameter über geben.
Eine Ausnahme bilden z.B. die FLOAT Werte. Werte mit einfacher Genauigkeit sind 4 Bytes lang. Werte mit doppelter Genauigkeit sind 8 Bytes lang. Diese sind also entweder als 2 zuammenhängende DWORD's zu sehen oder, wie sie durch die FPU angesprochen werden, als QWORD (Quad Word).
(07.09.2012, 20:25)darius83 schrieb: ReadProcessMemory(Pidhandle, Pointer(Result), @Result, Data, Written);In deinem Falle...
Data = nSize (MSDN Quelle)
Dieser gibt an, wie Du schon richtig erkannt hast, wieviel Bytes ausgelesen werden.
Written = lpNumberOfBytesWritten
Wie auch aus der MSDN Datenbank zu entnehmen ist ist dies ein Ausgabeparameter. Ist quasi ein Pointer zu einer Variablen die die Anzahl der tatsächlich geschriebenen/gelesenen Bytes enthält.
Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer !!!
Traineranfragen per PM werden prinzipiell gelöscht...
Traineranfragen per PM werden prinzipiell gelöscht...