0

のようなランダムなアドレスをロードしたと0x00001234eaxます。このアドレスにジャンプまたは逆参照する前に、このアドレスが有効/存在することをテストする方法はありますか? または、例外ハンドラーを実装する必要がありますか?

4

1 に答える 1

2

確かに、オペレーティング システムでページ フォールト メカニズムを引き継げる場合は、簡単に実行できます。独自の障害ハンドラーを実装retし、そのアドレスに命令を一時的に保存しcallてから、その場所にだけ保存します。

ハンドラーにフラグを設定して、それが無効であることを示す必要があります (書き込みretまたは実行しようとするため)。元の内容が有効である場合は、元の内容を置き換える必要があります。

または、IDT/GDT/LDT テーブルを調べて、アドレスがそれらのいずれかに存在するかどうかを確認することもできます。

これらのいずれかを単なる人間が実行できるOSを見つけて頑張ってください:-)

おそらく、これが目的を達成するための最良の方法であると単純に仮定するのではなく、なぜこれを行いたいのかを教えていただければ、別の解決策を考えることができます.

于 2010-05-25T05:57:21.687 に答える