KDMemory Problem

11/28/2013 10:56 SpieleHacksInfo#1
Ich kann leider diesen Pointer nicht auslesen:
[Only registered and activated users can see links. Click Here To Register...]

Mein Code:
Code:
#RequireAdmin
#include "KDMemory.au3"
Global $pid = ProcessExists("javaw.exe")
Global $handle = _KDMemory_OpenProcess($pid)
$baseAddress = _KDMemory_GetModuleBaseAddress($handle, "jvm.dll") + 0x00007AB4
			Dim $offsets[5] = [0x688, 0x1d8, 0x20,0x14,0xc]
			MsgBox(0,"",hex($baseAddress))
            $memorData = _KDMemory_ReadProcessMemory($handle, $baseAddress, "DWORD",$offsets  )
			MsgBox(0,"",$memoryData)
Ich würde mich über jede Hilfe freuen.
11/28/2013 11:50 SwarN#2
32bit / 64bit problem eventuell?

Bitte das zuerst überprüfen.
11/28/2013 11:53 SpieleHacksInfo#3
Habe ich.

[Only registered and activated users can see links. Click Here To Register...]
11/28/2013 14:36 Croco™#4
_KDMemory_ReadProcessMemory gibt ein Array aus mit
[0] = Adresse
[1] = Wert

Versuchs also mal mit:
MsgBox(0,"",$memoryData[1])
11/28/2013 15:50 KDeluxe#5
Wie Croco™ schon gesagt hat gibt die Funktion ein Array zurück. $pid und $handle global zu machen bringt hier nichts, außerdem solltest du darauf achten, was die Funktionen für Rückgabewerte und/oder Fehlercodes zurück geben.
Mein Beispielscript ist nicht so "groß" nur damit es nach mehr aussieht, es hat alles einen Sinn. Die detaillierten Fehlercodes habe ich ebenfalls nicht sinnlos gemacht.

Mein Beispielscript kann mit drei kleinen Änderungen (Prozessname, Adresse, Offsets) an jede Anwendung angepasst werden. Mit abweichendem Modulnamen wären es vier Änderungen.
Falls du etwas testen möchtest empfehle ich dir mein Beispielscript nach deinen Belangen anzupassen, dieses ist fehlerfrei und gibt dir sämtliche Fehler aus.
Code:
#AutoIt3Wrapper_UseX64=n ; 32 Bit application
;~ #AutoIt3Wrapper_UseX64=y ; 64 Bit application

#RequireAdmin
#include "KDMemory.au3"

Const $processName = "javaw.exe", $moduleName = "jvm.dll"
Const $baseOffset = 0x00007AB4
Const $offsets[1] = [0x688, 0x1D8, 0x20, 0x14, 0xC]

$processId = ProcessExists($processName)
If $processId == 0 Then
    MsgBox(48, "Error", "'" & $processName & "' is not running!")
Else
    $handles = _KDMemory_OpenProcess($processId)
    If @error Then
        MsgBox(48, "Error", "Can't open '" & $processName & "'! @error: " & @error)
    Else
        $baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $baseOffset
        If @error Then
            MsgBox(48, "Error", "Can't get ModuleBaseAddress ('" & $moduleName & "')! @error: " & @error & ", @extended: " & @extended)
        Else
            $memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "DWORD", $offsets)
            If @error Then
                MsgBox(48, "Error", "Can't read memory! @error: " & @error & ", @extended: " & @extended)
            Else
                MsgBox(64, "Info", "Address: " & $memoryData[0] & @CRLF & "Value: " & $memoryData[1])
            EndIf
        EndIf
        _KDMemory_CloseHandles($handles)
    EndIf
EndIf
Solche kleinen Fragen kannst du auch in meinem Thread stellen.
11/28/2013 16:39 SpieleHacksInfo#6
Vielen Dank an alle die geholfen haben. @Croco: Ich hatte das so abgeändert, da im falle des Fehlers er keinen Array zurück gibt. @KDDeluxe: Top wie immer. Hatte anscheinend ein paar Logik Fehler drin als ich deins ersetzt hab.