ReadProcessMemoryが使えません

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: ReadProcessMemoryが使えません

by read » 2005年9月27日(火) 12:05

AB4.10 + XP(SP2)で動作しました。
デバッグで実行するとエラーになりますが、リリースだと動作します。
その後は、デバッグでも動くようになりました。
デバッグで駄目なことが、たまにあるので試してください。

by Tomorrow » 2005年9月26日(月) 00:38

> とりあえずMSDNによるとReadProcessMemoryは失敗すると(つまりFALSEを返すと)GetLastErrorが使えるとあります。

拡張エラー情報の表示はコレで↓

コード: 全て選択

ErrorMessageBox(0, GetLastError(), "拡張エラー情報", MB_OK Or MB_ICONEXCLAMATION)

Function ErrorMessageBox(hWnd As DWord, ErrCode As Long, lpCaption As BytePtr, uType As DWord) As Long
	Dim lpMsgBuf As BytePtr
	FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER or FORMAT_MESSAGE_FROM_SYSTEM or FORMAT_MESSAGE_IGNORE_INSERTS, NULL, ErrCode, LANG_USER_DEFAULT, VarPtr(lpMsgBuf), 0, NULL)
	ErrorMessageBox=MessageBox(hWnd, lpMsgBuf, lpCaption, uType)
	LocalFree(lpMsgBuf)
End Function

by イグトランス » 2005年9月25日(日) 21:30

とりあえずMSDNによるとReadProcessMemoryは失敗すると(つまりFALSEを返すと)GetLastErrorが使えるとあります。
これは確かめてみましたか?

by ゲスト » 2005年9月25日(日) 14:59

返信ありがとうございます。

PROCESS_VM_READは指定してます。
同様のことがBorland C++BuilderXでは可能なので、どうしてABでできないのかよくわかりません。
ABでできればGUIを作るのが非常に楽なのに・・・。

Re: ReadProcessMemoryが使えません

by Tomorrow » 2005年9月23日(金) 00:29

詳しいことはよく知らないですが...

MSDNの関数リファレンスによると、hProcessで指定するプロセスのハンドルにはPROCESS_VM_READアクセス権が必要だそうです。
OpenProcessの時点で、このアクセス権を指定していないのではないでしょうか?

あるいは、
MSDN さんが書きました:要求された読み取り処理の途中で、プロセスのアクセス不能領域が見つかると、関数は失敗します。
とあるので、そのプロセスのメモリ領域にはアクセス不能なのかも知れません。

ReadProcessMemoryが使えません

by hoge » 2005年9月18日(日) 10:41

他のアプリケーションのメモリを読みたいと試行錯誤しています。
プロセスIDを入手するまでは出来たのですが、ReadProcessMemoryが失敗します。

コード: 全て選択

Declare Function ReadProcessMemory Lib "Kernel32" _
  (hProcess As HANDLE, _
  lpBaseAddress As VoidPtr, _
  lpBuffer As VoidPtr, _
  nSize As DWord, _
  lpNumberOfBytesRead As DWordPtr) As Long

Dim buf[128] As Byte

ReadProcessMemory(hProcess, &H1234ABCD As VoidPtr, buf, 80, NULL)
こんな感じでやってみてます。
OpenProcessまでは成功しているようなんですが、なにが悪いんでしょうか。

ページトップ