你好 我使用vb 2008
這裏是我的代碼部分:VB 2008 WriteProcessMemory的()返回0
Private Declare Function WriteProcessMemory Lib "kernel32" Alias "WriteProcessMemory" (_
ByVal hProcess As Integer, _
ByVal lpBaseAddress As Integer, _
ByVal lpBuffer As Integer, _
ByVal nSize As Integer, _
ByVal lpNumberOfBytesWritten As Integer _
) As Integer
Dim proc() As Process = Process.GetProcessesByName("process")
If proc.Length = 0 Then Console.WriteLine("Process Not Found") : Exit Sub
Dim p = proc(0)
Dim pH As Integer = OpenProcess(PROCESS_ALL_ACCESS, 0, p.Id)
Dim address As Integer
address = &H98544
Dim memory As IntPtr
Call ReadProcessMemory(pH, address, memory, 4, 0)
Console.WriteLine(memory.ToString)
Dim data As Integer = 2000
Call WriteProcessMemory(pH, address, data, Len(data), 0&)
但是,在WriteProcessMemory的()返回0,和值不改變
SOLUTION:
<DllImport("kernel32", CharSet:=CharSet.Auto, SetLastError:=True)> _
Private Shared Function WriteProcessMemory(_
ByVal hProcess As IntPtr, _
ByVal lpBaseAddress As IntPtr, _
ByVal lpBuffer As Byte(), _
ByVal nSize As UInt32, _
ByRef lpNumberOfBytesWritten As UInt32 _
) As Boolean
End Function
Dim proc() As Process = Process.GetProcessesByName("process")
If proc.Length = 0 Then Console.WriteLine("Process Not Found") : Exit Sub
Dim p = proc(0)
Dim pH As Integer = OpenProcess(PROCESS_ALL_ACCESS, 0, p.Id)
Dim address As Integer
address = &H98544
Dim memory As IntPtr
Call ReadProcessMemory(pH, address, memory, 4, 0)
Console.WriteLine(memory.ToString)
Dim data() As Byte = BitConverter.GetBytes(2000)
Call WriteProcessMemory(pH, address, data, 4, 0&)
它顯示「299」錯誤(系統錯誤代碼(0-499)),但仍然無法理解問題出在哪裏。 – John 2011-05-14 11:26:40
@John:299是'ERROR_PARTIAL_COPY':只有部分ReadProcessMemory或WriteProcessMemory請求已完成。原來這不是很有幫助。我認爲它會告訴你更好的東西。讓我修改我的答案。 – 2011-05-14 11:31:27
我用解決方案更新了我的問題,感謝您的幫助 – John 2011-05-14 11:46:32