Einzelnen Beitrag anzeigen

infY2k7

Registriert seit: 21. Mai 2008
23 Beiträge
 
#1

Float-Wert auslesen mithilfe von Readprocessmemory

  Alt 7. Jun 2008, 17:57
Hallo, folgendes Problem:
Ich muss einen Wert aus einem Speicher auslesen. Solange der Wert im Format 4 oder 8 Bytes vorliegt, mache ich das mit meiner Funktion f_memoryread:

Delphi-Quellcode:
function f_memoryread(WindowTitle:Pansichar;adresse,size:integer):integer;
var p : pointer;
    puffer : array[0..1] of DWord;
    BytesRead: DWord;
    WindowName,ProcessId,ThreadId,HandleWindow : integer;
   begin
        p := ptr(adresse); //Adresse umwandeln:
        WindowName := FindWindow(nil,WindowTitle); //get Handle
        ThreadId := GetWindowThreadProcessId(WindowName,@ProcessId);
        HandleWindow := OpenProcess(PROCESS_ALL_ACCESS,False,ProcessId);
        ReadProcessMemory( HandleWindow, p , @puffer[0], size, BytesRead );
        closehandle(HandleWindow);//close
        f_memoryread := Puffer[0];
   end;//of f_memoryread
In Cheat-Engine kann man den Typ eines Wertes einstellen, siehe Bild:

http://1337files.13.funpic.de/Unbenannt-1.jpg

Wenn ich hier 4Byte wähle, ist der Wert "1149107790". Wenn ich jedoch Float auswähle, ist der Wert "1015,97351074219"!

Den 4Byte Wert dieser Adresse (1149107790) auszulesen ist mit der o.g. Funktion kein Problem, jedoch brauch ich den Float-Wert! Für die variable size einfach "float" statt "4" oder "8" zu schreiben, funktioniert nicht!

Weiß jemand, wie ich diesen auslese? Oder gibts eine Funktion, mit der man 4Bytes in Float umwandeln kann? Dann könnte ich den Wert ganz normal auslesen und anschließend einfach umwandeln.

Bitte um Hilfe, mfg infY
  Mit Zitat antworten Zitat