0
나는 아무런 성공도하지 않고 며칠 동안이 작업을 시도해 왔기 때문에 누군가가 나를 도울 수 있기를 바랍니다.Python 3을 사용하여 Windows에서 외부 프로세스의 메모리를 검사하십시오.
내 목표는 프로세스의 메모리를 스캔 한 후 PID를 가지고 실제로 프로세스의 문자열을 읽는 것입니다.
예를 들어 나는 이와 같은 것을하고 싶다.
내가 메모장을 열고 pid = 4578이라고 가정 해 보겠습니다. 문자열이 메모리에 있으면 작업 메모리에 "찬물"이라는 문자열이 있는지 먼저 확인하고 싶습니다. 더 깊은 스캔은 메모리의 모든 문자열을 추출합니다. 그렇지 않으면 I 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보다 우수하거나 간단한 모듈입니다.
감사합니다.