Что нового

[Процессы] [API] как прочитать память через kernel32.dll ReadProcessMemory

Black_Hole

Знающий
Сообщения
126
Репутация
11
Помогите исправить, где-то в коде ошибка но не могу понять где.

Код:
global $a,$xxx
$xxx = DllCall('kernel32.dll','int','ReadProcessMemory','hwnd',ProcessExists('calc.exe'),'int',0x02D808D0,'int',$a,'int',1,'int',0)
msgbox(0,0,$xxx[0]&@cr&$xxx[1]&@cr&$xxx[2]&@cr&$xxx[3]&@cr&$xxx[4]&@cr&$xxx[5])
DllClose('kernel32.dll')
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
#include<WinAPI.au3>

Local $iRead

Run('calc.exe')
WinWaitActive('')
$hWnd = WinGetHandle('')
$pMem = DllStructCreate("dword") 

_WinAPI_ReadProcessMemory($hWnd, 0x02D808D0, DllStructGetPtr($pMem), DllStructGetSize($pMem), $iRead) 
MsgBox(0,"Result: " & $iRead , Hex( DllStructGetData($pMem,1)))
 
Автор
B

Black_Hole

Знающий
Сообщения
126
Репутация
11
Garrett
не читается значение в вашем варианте тоже :(
в варианте ниже значение считывается, но хотелось бы увидеть рабочий код через _WinAPI_ReadProcessMemory

Код:
#include <NomadMemory.au3>
msgbox(0,0,chr(_MemoryRead(0x02D808D0,_MemoryOpen(ProcessExists('calc.exe')),'byte')))


Ps. приложение может быть любым не обязательно 'calc.exe', главное считать байт который может изменится
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Black_Hole,
Код:
#include<WinAPI.au3>
#include <ProcessConstants.au3>

Local $iRead, $iPID, $tMem, $pMem, $iSize

$iPID = Run('calc.exe')
Sleep(500)
$tMem = DllStructCreate('byte[4]')
$pMem = DllStructGetPtr($tMem)
$iSize = DllStructGetSize($tMem)
$hProcess = _WinAPI_OpenProcess($PROCESS_VM_READ, 0, $iPID)
If @error Then Exit 13
If _WinAPI_ReadProcessMemory($hProcess, 0x02D808D0, $pMem, $iSize, $iRead) Then
	For $i = 1 To $iSize
		ConsoleWrite($i & ' _WinAPI_ReadProcessMemory: ' & DllStructGetData($tMem, 1, $i) & @LF)
	Next
Else
	ConsoleWrite('_WinAPI_ReadProcessMemory ERROR!!!' & @LF)
EndIf
If $hProcess Then _WinAPI_CloseHandle($hProcess)



Добавлено:
Сообщение автоматически объединено:

Garrett,
Вы ошибочно первым параметром в функции _WinAPI_ReadProcessMemory установили Handle окна, а не открытого процесса.
 
Автор
B

Black_Hole

Знающий
Сообщения
126
Репутация
11
madmasles
ваш вариант работает, спасибо
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Верх