NXビットとは、任意のデータを実行させないように印をつける機構です。セキュリティホールを突くときに、本来実行しないデータ領域にコードを書き込み実行することが多い(たぶん)ため、データ領域を実行できないようにして安全化を図ります。Windowsでこの機能を利用するにはXP SP2と対応CPUが必要です。
我が家もWindows 2000からXPにしたことだし、一つ実験してみました。Athlon 64でXP SP2な方は再現できるはず。最近はPentium 4もNXビットあるんだったかな。
こんなプログラムです。
push 0x9090feeb;
mov eax, esp;
jmp eax;
データ領域で実行なんて大げさに聞こえますが、なんのことはなくてスタックにjmp -2つまり自身の先頭に飛ぶ命令を押し込んで、スタックの先頭にjmpするだけです。実行すると、普通はCPUを100% 使ったまま何も起こらないプログラムが起動しますが、NXを有効にした状態だと、このようにエラーが発生します。
データ実行防止のエラー
< | 2005 | > | ||||
<< | < | 09 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | - |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.2.15.
using GD bundled (2.1.0 compatible)(png support.)