ユーザ用ツール

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ビットによるプロテクトは機能していません。機能している場合には、次のようなダイアログが現れます。

www.wildtree.jp_araki_images_nxbit.jpg (画像提供: kanai氏)

なお、コンパイラをお持ちでない方のために、上記のソースをコンパイルしたものを、evil.exeとして置いておきます。ダウンロードしたら、コマンドプロンプトから実行してください。

Windowsに関してへ戻る。

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also, you acknowledge that you have read and understand our Privacy Policy. If you do not agree, please leave the website.

More information