Python la memory read deniyorum ornek kaynak ararken kod buldum ama tam anlayamadim bu konuda yardimci olabilir misiniz? PROCESS_ALL_ACCESS, pid, address,buffer ozellikle bu bolumleri anlamadim.
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)
Çok bilgim yok ama anladığım kadarıyla birkaç yorum yazdım; umarım işinize yarar:
from ctypes import *
from ctypes.wintypes import *
# Buradaki OpenProcess, ReadProcessMemory ve CloseHandle, Windows API'ının fonksiyonlarıdır.
# ctypes modülü ile bunları kullanabiliyoruz.
OpenProcess = windll.kernel32.OpenProcess
ReadProcessMemory = windll.kernel32.ReadProcessMemory
CloseHandle = windll.kernel32.CloseHandle
# Oluşturulacak process'e her şekilde erişilebileceğini belirten sabit
PROCESS_ALL_ACCESS = 0x1F0FFF
# process ID
pid = 4044 # I assume you have this from somewhere.
# Process'in okunacak adresi; aşağıdaki yorumda .exe header'ının yer aldığı yazıyor.
address = 0x1000000 # Likewise; for illustration I'll get the .exe header.
# Okunan verinin tutulacağı hafıza konumu olarak düşünebilirsiniz.
# Altında da bu hafızanın büyüklüğü yer alıyor.
# bytesRead değişkeni ise, okuma işleminden sonra okunan byte sayısını tutacak.
buffer = c_char_p("The data goes here")
bufferSize = len(buffer.value)
bytesRead = c_ulong(0)
# Process'i oluştur.
processHandle = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
# Okuma işlemini yap.
# Okuma başarılı ise, "Success: <buffer>" yazdır.
# Değilse, "Failed." yazdır.
if ReadProcessMemory(processHandle, address, buffer, bufferSize, byref(bytesRead)):
print "Success:", buffer
else:
print "Failed."
# Process'i kapat.
CloseHandle(processHandle)