Vb.net 内存地址读/写VB程序
当我运行这段代码时,它会运行,但是当我尝试将正在运行的进程内存地址的字符串值更改为其他值时,它会给我一个错误:Vb.net 内存地址读/写VB程序,vb.net,process,memory-address,Vb.net,Process,Memory Address,当我运行这段代码时,它会运行,但是当我尝试将正在运行的进程内存地址的字符串值更改为其他值时,它会给我一个错误: "System.IndexoutofRangeException Index was outside the Bounds of the Array" 这些是功能: <DllImport("kernel32.dll", SetLastError:=True)> _ Public Shared Function WriteProcessMemory(ByVal hProc
"System.IndexoutofRangeException Index was outside the Bounds of the Array"
这些是功能:
<DllImport("kernel32.dll", SetLastError:=True)> _
Public Shared Function WriteProcessMemory(ByVal hProcess As IntPtr, ByVal lpBaseAddress As IntPtr, ByVal lpBuffer As Byte(), ByVal nSize As System.UInt32, <Out()> ByRef lpNumberOfBytesWritten As Int32) As Boolean
End Function
Public Shared Function StrToByteArray(ByVal str As String) As Byte()
Dim encoding As New System.Text.ASCIIEncoding()
Return encoding.GetBytes(str)
End Function
Public Shared Function Poke(ByVal proc As Process, ByVal target As Integer, ByVal data As Byte()) As Boolean
Return WriteProcessMemory(proc.Handle, New IntPtr(target), data, data.Length, 0)
End Function
不要以进程的名义添加程序/应用程序的扩展, 在您的情况下,对于Chrome AppName.Text必须是“Chrome”而不是“Chrome.exe”,
祝你好运。你的
p
数组中有多少个进程?我将是它的零。只有一个进程正在试图编辑它的内存地址。那么,当您键入错误的进程名称时,您希望发生什么情况?上面的进程名称键入错误的地方是哪里?@FBEvo1-process.GetProcessByName()
可以返回空数组。如果在调试器中中断是p
和空数组?
Private Sub saveButton_Click(sender As Object, e As EventArgs) Handles saveButton.Click
Try
Dim p As Process() = Process.GetProcessesByName(AppName.Text)
Dim Written As Boolean = False
Written = Poke(p(0), &HB8FDCC, StrToByteArray(TxtVal.Text))
If Written = True Then
MsgBox("WriteProcessMemory Sucess!", MsgBoxStyle.OkOnly, "Poke Memory Status")
ElseIf Written = False Then
MsgBox("WriteProcessMemory Failed!", MsgBoxStyle.OkOnly, "Poke Memory Status")
End If
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
End Class