首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内存地址读写VB程序

内存地址读写VB程序
EN

Stack Overflow用户
提问于 2012-12-17 02:45:34
回答 1查看 3.8K关注 0票数 0

当我运行这段代码时,它会运行,但是,当我试图将正在运行的进程内存地址的字符串值更改为其他值时,它会给我一个错误:

代码语言:javascript
运行
复制
"System.IndexoutofRangeException Index was outside the Bounds of the Array"

以下是函数:

代码语言:javascript
运行
复制
 <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

这是执行更改后的内存地址值字符串的按钮。

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

发布于 2013-05-30 17:03:30

请勿在进程名称中添加程序/应用程序的扩展名,在您的情况下,因为Chrome AppName.Text必须是"Chrome“而不是"Chrome.exe",祝您好运。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13904391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档