Funzioni Read e Write Process Memory
In tutti i sistemi Windows (credo che da WindowsXP) vi sono funzioni che permettono di accedere, leggere e modificare la memoria dei processi in esecuzione. Queste funzioni sono: ReadProcessMemory e WriteProcessMemory. La prima funzione consente di leggere dei bytes da una zona di memoria di un determinato processo. La seconda funzione consente di scrivere dei bytes in una zona di memoria di un determinato processo. Queste due funzioni richiedono Kernel32.lib per essere dichiarate e utilizzate.
La sintassi delle due funzioni:
BOOL WINAPI ReadProcessMemory( |
La dichiarazione di queste due funzioni:
Public Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer |
Queste funzioni devono essere applicate ad un processo e per questo motivo e' necessario utilizzare altre funzioni per trovare il processo aperto. In VB.net potete trovare un processo usando la classe 'Process' ed ottenere il nome del processo stesso e il suo 'ID'.
Un piccolo esempio puo' aiutare:
Dim myProcesses As Process() = Process.GetProcessesByName("MyApplication") |
HANDLE WINAPI OpenProcess( |
Dichiarazione di OpenProcess:
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessId As Integer) As Integer |
Ora siamo pronti per aprire il processo; di seguito un piccolo esempio:
processHandle = OpenProcess(PROCESS_ALL_ACCESS, 0, myProcesses(0).Id) |
Ora il nostro processo e' aperto e pronto per essere letto e scritto.
Ecco un esempio che spiega entrambe le funzioni:
Dim RBuff As Long |
