====== NXビット ====== WindowsXP SP2より、NXビットによるプロテクションが提供されています。この機能は、バッファオーバランなどを利用したマルウェアからPCを守るのに有効とされています。 具体的には、スタックをオーバフローさせ、スタック上に配置した悪意あるコードへ制御を移すことで実現される攻撃をブロックできるのです。 この機能は、NXビットをサポートしたCPU(AMD Opteron/Athlon64など)との組み合わせでのみ機能します。 機能しているかどうかを確かめるには、次のコードをコンパイルして実行してみればいいでしょう。 #include int dummy(void) { return 3; } int main(int argc, char *argv[]) { unsigned char evilP[128]; unsigned char *srcP; int (*evilfP)(); int i; srcP = (unsigned char*)dummy; for(i = 0 ; i < 128 ; i++) { evilP[i] = srcP[i]; } evilfP = (int(*)())evilP; printf("%d\n", (*evilfP)()); return 0; } このコードが何も問題なく実行されたら、NXビットによるプロテクトは機能していません。機能している場合には、次のようなダイアログが現れます。 [[http://www.wildtree.jp/~araki/images/nxbit.jpg|{{http://www.wildtree.jp/~araki/images/nxbit.jpg}}]] (画像提供: kanai氏) なお、コンパイラをお持ちでない方のために、上記のソースをコンパイルしたものを、[[http://www.wildtree.jp/~araki/archive/windows/evil.exe|{{http://www.wildtree.jp/~araki/archive/windows/evil.exe}}]]として置いておきます。ダウンロードしたら、コマンドプロンプトから実行してください。 [[Windowsに関して]]へ戻る。