Mit WinApi "ReadProcessMemory" und "WriteProcessMemory"
Code:
Public Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Public Declare Function WriteProcessMemory Lib "kernel32" Alias "WriteProcessMemory" (ByVal hProcess As Integer, ByVal lpBaseAddress As Integer, ByRef lpBuffer As Integer, ByVal nSize As Integer, ByRef lpNumberOfBytesWritten As Integer) As Integer
Brauchst halt das Prozesshandle
Code:
Dim myProcesses As Process() = Process.GetProcessesByName("notepad")
Dim processHandle as IntPtr = myProcesses(0).Handle
und die Adresse.
Beispiel wäre:
Code:
Dim zahl as Integer = 20
Dim adresse As Integer = &HD43318
WriteProcessMemory(processHandle, zahl, adresse, 4, 0)
oder um auszulesen
Code:
Dim buffer as Integer
ReadProcessMemory(processHandle, &HD43318,buffer, 4, 0)
EDIT: Mir fällt grad ein, dass deine Anwendung manchmal auch DebugRechte braucht.
Die kannste mit
Code:
Process.EnterDebugMode()
erhalten(am besten im Form.Load Event)