如何解决使用 ReadProcessMemory API 的 VB.NET
我正在尝试在 VB.NET 中使用基本的 Windows API 函数。我有以下代码:
Imports System.Runtime.InteropServices
Public Class testClass
Declare Function CreateProcessA Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As String,ByVal lpCommandLine As String,ByVal lpProcessAttributes As IntPtr,ByVal lpThreadAttributes As IntPtr,<MarshalAs(UnmanagedType.Bool)> ByVal bInheritHandles As Boolean,ByVal dwCreationFlags As Integer,ByVal lpEnvironment As IntPtr,ByVal lpCurrentDirectory As String,ByVal lpStartupInfo As Byte(),ByVal lpProcessinformation As IntPtr()) As <MarshalAs(UnmanagedType.Bool)> Boolean
Declare Function Getthreadcontext Lib "kernel32" Alias "Getthreadcontext" (ByVal hThread As IntPtr,ByVal lpContext As UInteger()) As <MarshalAs(UnmanagedType.Bool)> Boolean
Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As IntPtr,ByVal lpBaseAddress As IntPtr,ByRef lpBuffer As IntPtr,ByVal nSize As Integer,ByRef lpNumberOfBytesRead As IntPtr) As <MarshalAs(UnmanagedType.Bool)> Boolean
Public Sub test()
Dim locProcess As String = "C:\Windows\notepad.exe"
Dim iPtr1 As IntPtr = IntPtr.Zero
Dim startInfo As Byte() = New Byte(67) {}
Dim procInfo As IntPtr() = New IntPtr(3) {}
Dim cpResult = CreateProcessA(locProcess,vbNullString,iPtr1,False,nothing,startInfo,procInfo)
Dim pContext As UInteger() = New UInteger(178) {}
pContext(0) = &H10002
If Getthreadcontext(procInfo(1),pContext) Then
Dim pAddress As New IntPtr(pContext(&H29) + 8L)
Dim pSize As New IntPtr(4)
Dim bAddress As IntPtr = IntPtr.Zero
Dim iPtr2 As IntPtr = IntPtr.Zero
If ReadProcessMemory(procInfo(0),pAddress,bAddress,CInt(pSize),iPtr2) <> 0 Then
MessageBox.Show("Success!")
Else
MessageBox.Show("ReadProcessMemory Error code is :" & Err.LastDllError)
End If
Else
MessageBox.Show("Getthreadcontext Error code is :" & Err.LastDllError)
End If
End Sub
End Class
Public Class Form1
Private Sub Button3_Click(sender As Object,e As EventArgs) Handles Button3.Click
Dim tc As New testClass
tc.test()
End Sub
End Class
我在 ReadProcessMemory 上遇到错误。代码结果
"ReadProcessMemory Error code is : 299"
。
我一直在努力寻找问题,因为直接处理 Windows DLL 时错误可能很模糊。对这个问题的任何帮助将不胜感激。或者,是否有另一种正确调试的解决方案(LastDllError 除外)可以为我指明解决此问题的正确方向。谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。