第4回 続き

著名なアプリが次々実行禁止に
 このハードウエアDEPは,Windows XP SP2では「重要なWindowsのプログラムおよびサービスについてのみ」有効になっている。実はWindows XP SP2の製品候補版では,ハードウエアDEPはすべてのプログラムについて有効であった。しかし,編集部でハードウエアDEPをテストしてみたところ,著名なアプリケーションのいくつかがハードウエアDEPによって強制終了された。「Adobe Reader 6.0」のインストーラや,「Yahoo!メッセンジャー」である(図19)。

図19●データ実行防止機能によってアプリケーションの起動が制限されている画面
AMD64アーキテクチャのプロセッサ(Athlon 64やOpteron)を搭載するマシン上で,Adobe Reader 6.0のインストーラを起動すると,下記のような警告画面が出て,プログラムが自動的に終了する。

 これらは「バッファ・オーバーフローの恐れがあるプログラム」ではあるが,現状では何が原因でハードウエアDEPによって強制終了されたか断言できない。マイクロソフトによれば,バッファ・オーバーフローが起きていなくても,プログラムのメモリー操作の部分にバグがあるとハードウエアDEPによって実行が禁止されることがあるという。

 マイクロソフトは製品候補版でのテストにおいてハードウエアDEPによって非常に多くのプログラムが動作しなくなったことから,正式版のWindows XP SP2ではDEPの有効範囲を狭めたもようだ。

 OS以外のプログラムにおけるバッファ・オーバーフローを防止したり,ハードウエアDEPをすべてのプログラムに対して有効化することも可能だ。[コントロールパネル]-[システム]-[詳細設定]-[パフォーマンス]-[設定]-[データ実行防止]を選択し,[次のプログラムを除くすべてのプログラムでハードウエアおよびソフトウエアによるDEPを有効にする]を選択すればよい。

 ハードウエアDEPによる強制終了が発生した場合は,まずはアプリケーションのベンダーに問い合わせるべきであろう。なお,Adobe Reader 6.0のインストーラが実行できなくなったのは「インストーラーを作成した『PECompact』というプログラムにバグがあったため」(アドビシステムズ広報)で,詳細な原因は不明という。Yahoo!メッセンジャーも「原因は現時点では不明」(ヤフー広報)としている。

 ハードウエアDEPで実行を制限されたアプリケーションを利用したい場合は,警告画面の[設定の変更]をクリックすると,ここでハードウエアDEPの「例外リスト」を編集できるので,ここにアプリケーションを登録すればいい。また任意のアプリケーションを登録することも可能だ。前述のハードウエアDEPの詳細画面で表示される[次のプログラムを除くすべてのプログラムでハードウエアおよびソフトウエアによるDEPを有効にする]のリストに,アプリケーションを追加する。

.NETは1.0 SP3/1.1 SP1でDEP対応
 なおXP SP2の.NET Framework環境では,当面ハードウエアDEPが無視されることになっている。

 そもそもマイクロソフトはXP SP2の資料で,ジャスト・イン・タイム(JIT)コンパイルを行うプログラムは,ハードウエアDEPによって実行が禁止される恐れがあると指摘する。

 .NET FrameworkはJITコンパイルを実行するプログラムではあるが,ハードウエアDEPの対象から外すことで,この問題を回避した。また今後リリースする予定の.NET Framework 1.0 SP3/1.1 SP1で,XP SP2のハードウエアDEPに対応すると述べている。.NET Framework環境では,バッファ・オーバーフローは原理的にあり得ないはずだが,マイクロソフトは.NET Frameworkも「ハードウエアDEPの恩恵を受けられるようになる」と表現している。

DEPを有効にするリスクも
 ハードウエアDEPが有効になっていると,アプリケーションだけでなく,OSそのものが起動しなくなることもあるので注意が必要だ。これはハードウエアDEPを有効にするには,Windowsの起動時にオプションで「/noexecute」スイッチを有効にして,メモリー空間を4Gバイト以上に拡張しておく必要があるためだ(これを物理アドレス拡張という)。しかし,Athlon 64搭載パソコンや周辺機器の中には,物理アドレス拡張に対応していないものがある。

 NECのAthlon 64パソコン「VALUESTAR TZシリーズ」がその代表例だ(図20)。VALUESTAR TZはBIOSが物理アドレス拡張に対応していないため,Windows XP SP2をインストールする前にBIOSをアップデートしてやる必要がある。詳細は同社のWebサイト(該当サイト)を参照してほしい。同様のことは他のAthlon 64マシンでも起こる可能性があるので,Athlon 64ユーザーはWindows XP SP2のインストール前に,メーカーが出す情報を必ずチェックするようにしてほしい。

図20●DEPが有効になっていると起動しなくなるAthlon 64マシン
NECの「VALUESTAR TZシリーズ」は,BIOSがハードウエアDEPに対応していないので,Windows XP SP2のインストール前にBIOSをアップデートしないと,OSが起動しなくなる。

 インテルやトランスメタも年内にはハードウエアDEP対応プロセッサをリリースする予定である。そのころには,ハードウエアやアプリケーション側のDEP対策も進んで,より安心してDEPを利用できるようになっていることを期待したい。

 

【用語解説】
JITコンパイル
.NET Frameworkでは,アプリケーションは「中間言語(LL)」と呼ばれる仮想アーキテクチャのコードにコンパイルされている。アプリケーションの実行時は,.NET Frameworkの実行エンジンが中間言語を動的にマシン語コードにコンパイルして,プロセッサに実行させる。この動的なコンパイルをJITコンパイルと呼ぶ。Back



連載第1回に戻る
連載第2回に戻る

あなたにお薦め

もっと見る

日経クロステック Special

What's New

総合