У меня есть следующий код:
import subprocess
from ctypes import *
#-Part where I get the PID and declare all variables-#
OpenProcess = windll.kernel32.OpenProcess
ReadProcessMemory = windll.kernel32.ReadProcessMemory
processHandle = OpenProcess(PROCESS_ALL_ACCESS, False, PID)
ReadProcessMemory(processHandle, address, buffer, bufferSize, byref(bytesRead))
Все это работает безупречно, но поскольку некоторые процессы используют так называемые BaseAddress
или StartAddress
. И в моем случае размер этого BaseAddress время от времени является случайным. Как было предложено здесь, я попытался использовать следующий код:
BaseAddress = win32api.GetModuleHandle(None)
Все, что он делает, это дает одно и то же шестнадцатеричное значение снова и снова, хотя я точно знаю, что мой BaseAddress изменился.
Снимок экрана из связанной ветки, показывающий, что я ищу (где левая часть — это базовый адрес):