他プロセスでメモリ内容を取得したいのですが、
以下の方法でダメでした。
ご教授願います。
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Declare Function GetWindowThreadProcessId Lib "user32.dll" (ByVal hWnd As Integer, ByRef lpdwProcessID As Integer) As Integer
Dim PROCESS_VM_OPERATION = &H8
Dim PROCESS_VM_READ = &H10
Dim PROCESS_VM_WRITE = &H20
Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Integer, ByVal bInheritHandle As Integer, ByVal dwProcessID As UInteger) As Integer
Declare Function ReadProcessMemory Lib "kernel32" _
(ByVal hProcess As IntPtr, _
ByRef lpBaseAddress As Object, _
ByRef lpBuffer As Object, _
ByVal nSize As Integer, _
ByRef lpNumberOfBytesWritten As Integer) As Integer
Private Sub Form1_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
Dim hWnd As Integer
Dim PID As UInteger
Dim hProcess As IntPtr
Dim res As Integer
Dim bRet As Integer
Dim dwRead As Integer
hWnd = FindWindow(vbNullString, "無題 - メモ帳")
GetWindowThreadProcessId(hWnd, PID)
hProcess = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ Or PROCESS_VM_WRITE, False, PID)
If hProcess <> 0 Then
bRet = ReadProcessMemory(hProcess, &H1001000, res, 4, dwRead)
MessageBox.Show(hProcess.ToString & ":" & &H1001000 & ":" & res)
End If
End Sub
そんな数行で簡単にでいたら、セキュリティー以前に
ウィルスに乗っ取られてしまいますヨ!
まぁ〜できるかできないか・・・を言えば、OSの
タイプに依存します。NT系では、一般的にできま
せんが、Win95/98系はできます。
※ もう手に入りませんが、UnDocumented Windows
だったかの書籍や、Windows95システムxxxx
とか言う書籍に、他プロセスをハッキンする
C言語のソースコードが掲載されていました。
※ デバッガー作る気ならば、できるヨ!
以上。
APIの宣言から怪しげですが……。
# As Objectとか。
まずは,エラーチェックをちゃんとしましょう。
「ダメでした。」がどこで起きているのか,どういう理由による物なのかがわかります。
どこで失敗したのか,そのときのGetLastErrorの値は何だったかまで書いて,始めて質問として成立します。
まずは,それらを調べるところから始めて下さい。
ツイート | ![]() |