nxビット
NXビット
WindowsXP SP2より、NXビットによるプロテクションが提供されています。この機能は、バッファオーバランなどを利用したマルウェアからPCを守るのに有効とされています。
具体的には、スタックをオーバフローさせ、スタック上に配置した悪意あるコードへ制御を移すことで実現される攻撃をブロックできるのです。
この機能は、NXビットをサポートしたCPU(AMD Opteron/Athlon64など)との組み合わせでのみ機能します。
機能しているかどうかを確かめるには、次のコードをコンパイルして実行してみればいいでしょう。
#include <stdio.h>
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ビットによるプロテクトは機能していません。機能している場合には、次のようなダイアログが現れます。
なお、コンパイラをお持ちでない方のために、上記のソースをコンパイルしたものを、evil.exeとして置いておきます。ダウンロードしたら、コマンドプロンプトから実行してください。
Windowsに関してへ戻る。
nxビット.txt · 最終更新: by 127.0.0.1

