我是學C#的,并且是自己學著玩不是很精通,在網上看了一個寫外掛的文章,我自己試著寫了一個 可就是讀不出來數據???!? 并且發(fā)現 OpenProcess的返回值總是在變化??!!OpenProcess 返回值不是一個進程的句柄嗎?進程句柄對于同一個程序來說應該是固定的吧?我的這個這么會總變化呢? 并且讀出來的數據總是0!? ? ? (為了使問題簡單一些,我自己寫了個模擬游戲,用的是Visual Basic 6.0精簡版)代碼和現在地址如下:http://d.namipan.com/d/9cf212f12c8497fa18102a7dccf7a29a61a41c67a7120000?
?
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPrivate Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As LongPrivate Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As LongPrivate Const PROCESS_ALL_ACCESS = &H1F0FFF '全權打開進程Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, ByVal lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long'Dim rea As LongPrivate Sub Timer1_Timer()'Dim fw, pid, openp, readPM As LongDim fw As LongDim pid As LongDim ope As LongDim rea As Longfw = FindWindow(vbNullString, "一個模擬游戲")If fw = 0 ThenLabel3.BackColor = RGB(255, 0, 0)Label3.Caption = "FindWindow失敗"ElseLabel3.Caption = "FindWindow成功!" & fwEnd IfGetWindowThreadProcessId fw, pid '返回程序進程IDIf pid = 0 ThenLabel4.BackColor = RGB(255, 0, 0)Label4.Caption = "pid失敗"ElseLabel4.Caption = "pid成功!" & pidEnd Ifope = OpenProcess(PROCESS_ALL_ACCESS, False, pid)If ope = 0 ThenLabel5.BackColor = RGB(255, 0, 0)Label5.Caption = "ope失敗"ElseLabel5.Caption = "ope成功!" & opeEnd If'ReadProcessMemory 進程, ByVal 地址, 輸出值, 字節(jié), 0&ReadProcessMemory ope, ByVal &H14FD74, rea, 4, 0&?????? '&h表示是16進制的數'藍? 0014FD7C'紅 0014FD74Label1.Caption = "w" & reaEnd Sub
1 回答

回首憶惘然
TA貢獻1847條經驗 獲得超11個贊
ReadProcessMemory 和 WriteProcessMemory 中的參數 ByVal lpBuffer As Any 改寫為 ByRef lpBuffer As Any
- 1 回答
- 0 關注
- 620 瀏覽
添加回答
舉報
0/150
提交
取消