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更好或更简单的模块来做到这一点?
感谢您的帮助