Как я могу прочитать память другого процесса в Python в Windows?

Я пытаюсь написать сценарий Python, который читает серию мест памяти определенного процесса.

Как я могу это сделать в Python?

Я буду использовать Windows, если это имеет значение. У меня есть процессы PID, которые я пытаюсь читать / редактировать.

Должен ли я вернуться к вызову ReadProcessMemory () и использованию ctypes?

Я не видел ничего в стандартных библиотеках python, но я нашел пример с использованием ctypes, как вы предлагали на другом сайте:

from ctypes import * from ctypes.wintypes import * OpenProcess = windll.kernel32.OpenProcess ReadProcessMemory = windll.kernel32.ReadProcessMemory CloseHandle = windll.kernel32.CloseHandle PROCESS_ALL_ACCESS = 0x1F0FFF pid = 4044 # I assume you have this from somewhere. address = 0x1000000 # Likewise; for illustration I'll get the .exe header. buffer = c_char_p("The data goes here") bufferSize = len(buffer.value) bytesRead = c_ulong(0) processHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid) if ReadProcessMemory(processHandle, address, buffer, bufferSize, byref(bytesRead)): print "Success:", buffer else: print "Failed." CloseHandle(processHandle) 

Да, ctypes (или win32all ) и ReadProcessMemory – это именно то, что нужно. Вы искали что-то дополнительное / другое? Что, в частности?

См. http://www.windowsreference.com/windows-xp/dos-commands-and-equivalent-linux-commands/

Вы можете использовать tasklist.exe для перечисления процессов, а затем очистить результаты. Затем используйте taskkill.exe (или tstskill.exe), чтобы закончить их.

Но ctypes и kernal32, вероятно, безопаснее.