Python Memory Read

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)

Merhaba.

Ç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)

İyi çalışmalar.

1 Beğeni

Teşekkür ederim bilgi için.

1 Beğeni