Hi
Ich versuche eine bestimmte Ram Adresse aus einem Programm zu lesen. Es funktioniert auch fast, aber
ich weiss nicht in welchem Format ich die Variable setzen muss um die Adresse (zb 0x00CA9008) zuzuweisen
ohne dass es ein Fehler gibt. Ich hab die Var dann einfach auf Long gesetzt und die Adresse in Long um-
gerechnet, aber das geht leider auch nicht, denn ich bekomme immer ein leerer string zurück, obwohl
auf der Adresse 100% was steht, denn mit einem anderen Proggi das ich Paralell mitlaufen lasse seh ich,
dass da was steht. Hab aufgeschnappt, dass man einen Pointer auf die Adresse machen kann oO stimmt das?
Hoffe, dass mir jemand helfen kann
mfg
Juhu
Code verkürzt, wichtiges Fett hervorgehoben
<b>Public lp As Long</b>
Const SYNCHRONIZE = &H100000
Private Sub Form1_Load()
Dim hwnd, target_process_id As Integer
Dim target_process_handle&
hwnd = FindWindow(vbNullString, "Programmtitle")
If (hwnd = 0) Then MsgBox("Starten Sie zuerst das Programm", MsgBoxStyle.Information, "Hinweis")
target_process_id = 0
GetWindowThreadProcessId(hwnd, target_process_id)
If (target_process_id = 0) Then MsgBox("Prozess ID konnte nicht übermittelt werden", MsgBoxStyle.Critical, "Hinweis")
target_process_handle = OpenProcess(SYNCHRONIZE, False, target_process_id)
If (target_process_handle = 0) Then MsgBox("Prozess Handle konnte nicht übergeben werden", MsgBoxStyle.Critical, "Hinweis")
<b>Dim buffer(1000) As Byte
Dim bytesWritten As Integer
lp = 13471752
ReadProcessMemory(target_process_handle, lp, buffer, buffer.Length, bytesWritten)
Dim test As String
test = System.Text.Encoding.Default.GetString(buffer)
text1.Text = System.Text.Encoding.Default.GetString(buffer)
MsgBox(test)</b>
End Sub
End Class
Ich versuche eine bestimmte Ram Adresse aus einem Programm zu lesen. Es funktioniert auch fast, aber
ich weiss nicht in welchem Format ich die Variable setzen muss um die Adresse (zb 0x00CA9008) zuzuweisen
ohne dass es ein Fehler gibt. Ich hab die Var dann einfach auf Long gesetzt und die Adresse in Long um-
gerechnet, aber das geht leider auch nicht, denn ich bekomme immer ein leerer string zurück, obwohl
auf der Adresse 100% was steht, denn mit einem anderen Proggi das ich Paralell mitlaufen lasse seh ich,
dass da was steht. Hab aufgeschnappt, dass man einen Pointer auf die Adresse machen kann oO stimmt das?
Hoffe, dass mir jemand helfen kann
mfg
Juhu
Code verkürzt, wichtiges Fett hervorgehoben
<b>Public lp As Long</b>
Const SYNCHRONIZE = &H100000
Private Sub Form1_Load()
Dim hwnd, target_process_id As Integer
Dim target_process_handle&
hwnd = FindWindow(vbNullString, "Programmtitle")
If (hwnd = 0) Then MsgBox("Starten Sie zuerst das Programm", MsgBoxStyle.Information, "Hinweis")
target_process_id = 0
GetWindowThreadProcessId(hwnd, target_process_id)
If (target_process_id = 0) Then MsgBox("Prozess ID konnte nicht übermittelt werden", MsgBoxStyle.Critical, "Hinweis")
target_process_handle = OpenProcess(SYNCHRONIZE, False, target_process_id)
If (target_process_handle = 0) Then MsgBox("Prozess Handle konnte nicht übergeben werden", MsgBoxStyle.Critical, "Hinweis")
<b>Dim buffer(1000) As Byte
Dim bytesWritten As Integer
lp = 13471752
ReadProcessMemory(target_process_handle, lp, buffer, buffer.Length, bytesWritten)
Dim test As String
test = System.Text.Encoding.Default.GetString(buffer)
text1.Text = System.Text.Encoding.Default.GetString(buffer)
MsgBox(test)</b>
End Sub
End Class