Что нового

_MemoryPointerRead x64

SeMgA

Новичок
Добрый день, у меня есть пример кода использующий MemoryHack.au3 который работает с игрой x86, но отказывается на отрез работать с х64 версией игры на отрез, не могли бы Вы помочь разобраться как заставить работать код в х64 спасибо

Код:
Func _test()
Global $Offset[9] = [0, Dec("D90"),Dec("5C"),Dec("2C0"),Dec("5D8")]
$ProcessName = "Client"
$PID = WinGetProcess($ProcessName,"")
$plus = 0x0085CC8C
$OpenMemory = _MemoryOpen($PID)
$hMemory = _MemoryOpen(ProcessExists("Client.exe"))
$baseADDR = _MemoryModuleGetBaseAddress($PID, 'Game.dll')
$ActionBad = "0x" & Hex($baseADDR)
Global $Test = _MemoryPointerRead($ActionBAD "dword")
ToolTip($Test[1],100,0)
_MemoryClose($hMemory)
;Sleep(1)
EndFunc
 

Вложения

Последнее редактирование:

eralex

Новичок
Моя переделанная функция - работает как с х86 так и с х64

Код:
Func _MemoryRead($ivAddress, $ahHandle, $sType = "dword")
    If Not IsArray($ahHandle) Then
        SetError(1)
        ;Return False
    EndIf

    Local $vReadData = DllStructCreate($sType)
    DllCall($ahHandle[0], "bool", "ReadProcessMemory", "handle", $ahHandle[1], "dword_ptr", $ivAddress, "ptr", DllStructGetPtr($vReadData), "ulong_ptr", DllStructGetSize($vReadData), "ptr", '')
    If Not @Error Then
        Local $v_Value = DllStructGetData($vReadData, 1)
        Return $v_Value
    Else
        SetError(6)
        Return 0
    EndIf

EndFunc   ;==>_MemoryRead64
 
Автор
S

SeMgA

Новичок
Моя переделанная функция - работает как с х86 так и с х64

Код:
Func _MemoryRead($ivAddress, $ahHandle, $sType = "dword")
    If Not IsArray($ahHandle) Then
        SetError(1)
        ;Return False
    EndIf

    Local $vReadData = DllStructCreate($sType)
    DllCall($ahHandle[0], "bool", "ReadProcessMemory", "handle", $ahHandle[1], "dword_ptr", $ivAddress, "ptr", DllStructGetPtr($vReadData), "ulong_ptr", DllStructGetSize($vReadData), "ptr", '')
    If Not @Error Then
        Local $v_Value = DllStructGetData($vReadData, 1)
        Return $v_Value
    Else
        SetError(6)
        Return 0
    EndIf

EndFunc   ;==>_MemoryRead64
Спасибо Вам огромное, я думал уже никто не ответит!
 
Верх