ich habe folgendes Problem, ich möchte mit Python den Speicher eines anderen Prozesses auslesen, nur leider schlägt es immer fehl.
Code: Alles auswählen
import psutil
from ctypes import *
from ctypes.wintypes import *
def listProcesses():
for proc in psutil.process_iter():
try:
pinfo = proc.as_dict(attrs=['pid', 'name'])
except psutil.NoSuchProcess:
pass
else:
print(pinfo)
listProcesses()
# Get dll functions
OpenProcess = windll.kernel32.OpenProcess
ReadProcessMemory = windll.kernel32.ReadProcessMemory
CloseHandle = windll.kernel32.CloseHandle
# flags
PROCESS_ALL_ACCESS = 0x1F0FFF
PROCESS_QUERY_INFORMATION = 0x0400
PROCESS_VM_READ = 0x0010
pid = 6040 # the pid to read
address = 0x0008C900 # the address to read
bufferSize = 255 # buffer size of 255 bytes
buffer = ctypes.create_string_buffer(bufferSize) # buffer of size bufferSize
processHandle = OpenProcess(PROCESS_VM_READ, False, pid)
if processHandle:
if ReadProcessMemory(processHandle, address, buffer, bufferSize, 0):
print("Success:", buffer)
else:
print("Failed.")
else:
print("Unable to open process")
CloseHandle(processHandle)
Auslesen möchte ich einen 4 byte integer zum testen.
In C# funktioniert es, in Python irgendwie nicht.
Kann mir da jemand weiterhelfen?