Я пытаюсь прочитать память процесса с помощью Python, но что-то не так, не знаю, что. операторы печати дают 0,0,299. Приведенный здесь ответ является неполным.
import ctypes
from ctypes import *
from ctypes.wintypes import *
import psutil
import sys
from ctypes import wintypes
PROCESS_QUERY_INFORMATION = 0x0400
PROCESS_VM_OPERATION = 0x0008
PROCESS_VM_READ = 0x0010
PROCESS_VM_WRITE = 0x0020
desired_access = (PROCESS_QUERY_INFORMATION|
PROCESS_VM_OPERATION|
PROCESS_VM_READ|
PROCESS_VM_WRITE)
process = windll.kernel32.OpenProcess(desired_access,0,5816)
rPM = ctypes.WinDLL('kernel32',use_last_error=True).ReadProcessMemory
rPM.argtypes = [wintypes.HANDLE,wintypes.LPCVOID,wintypes.LPVOID,ctypes.c_size_t,ctypes.POINTER (ctypes.c_size_t)]
rPM.restype = wintypes.BOOL
ReadBuffer = ctypes.c_uint()
lpBuffer = ctypes.byref(ReadBuffer)
nSize = ctypes.sizeof(ReadBuffer)
lpNumberOfBytesRead = ctypes.c_ulong(0)
x = rPM(process, hex(2305324751792),lpBuffer,nSize,lpNumberOfBytesRead)
print(ReadBuffer.value)
print(x)
print(ctypes.get_last_error())
ctypes
Вызовы DLL не вызывают исключений, если API fn дает сбой, если только вы не вызываете его через оболочку, которая проверяет GetLastError или что-то еще для вас. - person ivan_pozdeev   schedule 02.06.2018