3

1バイトのメモリを読み取りたいのですが、メモリが本当に読み取り可能かどうかわかりません。OS Xではvm_read関数を使用して、WindowsではReadProcessMemoryまたは_ try/ _catchを使用して実行できます。Linuxでは、ptraceを使用できると思いますが、まだデバッグされていない場合に限ります。

参考までに、これを実行したい理由は、例外ハンドラプログラムの状態ダンプコードを記述しているためです。ユーザーがさまざまなメモリ値を確認できる場合、またはそれらが無効であるかどうかを知ることができる場合、ユーザーは非常に役立ちます。

4

1 に答える 1

1

状態ダンプ/例外ハンドラーを処理するコードで一般的である高速である必要がない場合は、アクセス試行の前に独自のシグナルハンドラーを配置し、後でそれを復元できます。信じられないほど痛くて遅いですが、完了です。

もう 1 つの方法は、/dev/proc//maps の内容を解析してメモリのマップを作成し、アクセスごとにアドレスがプロセス内にあるかどうかを判断することです。

もしそれが私だったら、すでにこれを行っているものを見つけて、ライセンスが私のニーズを満たしていれば、コードを直接再実装またはコピーします。ゼロから書くのは大変だし、シンボルの解決でトレースをサポートできるものがあると便利です。

于 2014-07-11T22:17:23.440 に答える