2016-05-25 7 views
0

VirtualQueryを使用して実行中のプロセスの読み取り可能なメモリにアクセスしていますが、このメモリをスキャンして特定の文字列を検索すると、これは最終的に私のメモリアクセスしようとすると別の場所で解放され、私は読んでいるメモリが有効であることを確認するために進めて、ページ全体を読み終えるまで有効なままにしておきますか?VirtualQueryとスレッドの安全性

ありがとうございます!

+1

堅牢なSEH例外処理ですか? –

+3

メモリを読み取るだけで物事を変えることができます(たとえば、Guard Pagesを参照)。危険に満ちている場合は何をしていますか?それはあなたが[プロセスを中断する](http://stackoverflow.com/questions/11010165/how-to-suspend-resume-a-process-in-windows)すれば成功する可能性がはるかに高いということです。しかし、CreateRemoteThreadなどはあなたを引き継いでいます。 –

+0

プロセスを中断することはできません。これはビデオゲームのためのものです。私はSEHの例外が悲しいことになると思います! – awpsoleet

答えて

4

基本的には、デバッガにするのが最善の方法です。このようにして、プロセスを中断/再開することができ、中断されたプロセスは、デバッガが実行できるように、メモリを読み込みます。これは、プロセスを一時停止することが許容できる解決策であることを前提としています(一時停止されるプロセスには、デバッグのようなデバッグ機能はありませんが、まれです)。

あなたはまだメモリを読んで処理する必要がDebugActiveProcess

出発点のために[ページを読み、後にそれを復元する前にPAGE_GUARDを取り除くなどして]それを変更することができます参照してくださいが、その今はるかに制約の問題。

関連する問題