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?
