0
我一直在嘗試這樣做的日子沒有任何成功,所以我希望有人能幫助我。使用Python掃描窗口中外部進程的內存3
我的目標是一旦我有了pid就掃描一個進程的內存,並且實際讀取該進程的字符串。
例如,我想要做這樣的事情。
假設我打開了一個記事本並且pid = 4578. 我想首先檢查進程內存中是否存在字符串「cold water」,如果字符串在內存中,那麼我會執行一個更深的掃描提取內存中的所有字符串,否則我wouldnt。
from ctypes import *
import ctypes
import psutil
import time
def get_client_pid(process_name):
pid = None
for proc in psutil.process_iter():
if proc.name() == process_name:
pid = int(proc.pid)
print("Found, PID = ", pid)
break
return pid
pid = get_client_pid("notepad.exe.exe")
PROCESS_QUERY_INFORMATION = 0x0400
PROCESS_VM_READ = 0x0010
process = windll.kernel32.OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,False,pid)
readprocess = windll.kernel32.ReadProcessMemory
rdbuf = ctypes.c_uint()
bytread = ctypes.c_size_t()
base = 0x00400000
for addr in range(base, base + 11):
try:
if readprocess(process, ctypes.c_void_p(addr), ctypes.byref(rdbuf), ctypes.sizeof(rdbuf),ctypes.byref(bytread)):
print(rdbuf.value)
except Exception as e:
print("ERROR", e)
這是我在某處找到並編輯了一點的示例代碼。
如何知道屬於特定進程的內存中的所有地址?
是一個比ctypes更好或更簡單的模塊來做到這一點?
感謝您的幫助