一部のユーザーから、異常によりシステムがスタックベースのバッファーのオーバーランを検出したことを示すプロンプトが表示されたと報告がありました。この記事では、この問題について深く理解していただくと共に、MiniToolソフトウェアによるいくつかの解決策をご紹介します。

エラー「スタックベースのバッファーのオーバーラン」

スタックベースのバッファーのオーバーラン ( またはスタックベースのバッファーオーバーフロー) は、プログラムが実際の割り当て量よりも多くのデータをスタック上のバッファーに書き込んでしまうバグの一種です。これは一般的なプログラムの誤動作です。

この問題はドライバーに発生する可能性があり、 ドライバーがスタックバッファーをオーバーランすると死のブルースクリーンが表示される原因となります。しかし、より一般的にはアプリケーションに関連するものです。1度発生するとスタック上の隣接するデータが破損してしまうため、プログラムがクラッシュしたり、不適切な動作をしたりする可能性があります。

このスタックベースのバッファーエラーは、フォーラムで多くのユーザーから報告されています。その例がこちらです。

基本的に、このようなエラーが出続けています。「このアプリケーションでスタックベースのバッファーのオーバーランが検出されました。このオーバーランにより、悪意のあるユーザーがこのアプリケーションを制御する可能性があります。 (c0000409)」AAAのゲームをウルトラで動作させることができるビルドなので、ハードウェアの問題ではありません。SSDで動作させています。ドライバーはすべて最新で、Windows 10 64ビットは完全に更新されています。ゲームを何度もアンインストールし、キャッシュを再ダウンロードさせました。どなたかアドバイスがありましたらお願いします。   — Redditから

エラーメッセージ

この問題を経験したユーザーからの報告によると、スタックベースのバッファーのオーバーランというエラーメッセージは、主に以下の2つの状況で表示されます。

  • セーフモードでコンピューターを開いた後、Windowsのエクスプローラーが開き続けるなどの問題が発生したとき。
  • TwitchやDiscordのデスクトップアプリケーションをインストールしようとしたとき。

解決策をあれこれ試してみても、うまくいかなかったという方もいるでしょう。問題を解決するために試すことのできる方法をこの記事にまとめました。お役に立てれば幸いです。

注: このエラーにより、アプリや設定に正常にアクセスできない場合は コンピューターをセーフモードで起動して から、以下の対処法を試してみて下さい。また、この問題はデータの損失に繋がるおそれがあるため、対処法を実践する前に データを復元することをお勧めします。

修正方法 1:コンピューターのウイルスやマルウェアのスキャン

エラーメッセージが示すように、特定のプログラムが特別な権限で実行されており、悪意のあるユーザーが制御できるようになってしまっているため、悪意のあるコードやプログラムの影響を受けている可能性があります。そのため、コンピューターをスキャンして、ウイルスやマルウェアが潜んでいないかチェックしなければなりません。

Windows Defender オフラインスキャンを実行することをお勧めします。その方法は以下の通りです。

ステップ1: スタートボタンを右クリックし、コンテキストメニューから「設定」を選択します。

ステップ2: 更新とセキュリティ」→「 Windowsセキュリティ」を選択します。

ステップ3: 右の欄の 「保護の領域」セクションにある「ウイルスと脅威の保護」をクリックします。

ステップ4: Defender セキュリティセンター」ウィンドウが表示されたら、 「スキャンのオプション」をクリックします。

ステップ5: 次に、「Microsoft Defender オフラインスキャン」 を選択し、「今すぐスキャン」ボタンをクリックします。

Microsoft Defender オフラインスキャン

この種のスキャンは、削除が困難な悪意のあるソフトウェアを削除するのに役立ちます。処理を完了するには再起動が必要です。スキャンには約15分かかりますので、終わるまでお待ち下さい。

修正方法 2: SFCとDISMコマンドの実行

システムファイルやWindowsイメージファイルが破損していると、バッファーのオーバーランが検出されることがあります。この問題を解決するには、システムファイルチェッカー (SFC)と 展開イメージのサービスと管理 (DISM)ユーティリティを使用します。

注: DISMの実行にはインターネットへの接続が必要です。正常に起動できない場合は、セーフモードとネットワークでコンピューターを起動します。

ステップ1: Windows + R で 「ファイル名を指定して実行」 ダイアログを表示します。

ステップ2: cmdと入力し、Ctrl + Shift + Enterを押すとWindowsのコマンドプロンプトが開き、管理者として実行されます。

ステップ3: コマンド sfc /scannow を入力して Enterキーを押すと、システムファイルのスキャンが開始されます。破損したファイルが見つかると、このツールがそれらをキャッシュされたコピーと置換しますが、スキャンプロセスには時間がかかります。これで無事に問題が解決すれば大丈夫です。そうでない場合は次のステップに進みます。

sfc /scannow の実行

ステップ4: 以下の各コマンドラインを入力後、Enterを押して実行します。

  • DISM /online /Cleanup-Image / ScanHealth
  • DISM /Online /Cleanup-Image /RestoreHealth

操作が正常に完了したら、ウィンドウを閉じてコンピューターを再起動します。その後、スタックベースのバッファーのオーバーランの問題が解決されたかどうかを確認します。また、必要に応じてSFCスキャンを再度実行することもできます。

修正方法 3: コンピューターをクリーンブートする

システムで起動する特定のサードパーティのアプリケーションが破損したり、問題が発生した場合に、システムがスタックベースのバッファのオーバーランを検出する可能性があります。このような場合、コンピューターをクリーンブートすることで、すべてのサードパーティ製プログラムやサービスがシステムで起動しないようにすることができます。そのためには以下の手順に従います。

ステップ1: Windows + Sを押し、 msconfig と入力し、検索結果から「システム構成」をクリックして開きます。

ステップ2: 「サービス」 タブを開き、 「Microsoft のサービスをすべて隠す」 にチェックを入れ、 「すべて無効」ボタンをクリックすると、すべてのサードパーティサービスが停止します。

ステップ3: スタートアップ」タブに切り替え、 タスクマネージャーを開く」をクリックします。

ステップ4: 次に、プログラムを選択して 「無効化」をクリックします。リスト内の他のプログラムにもこの操作を繰り返し、これらのサードパーティ製アプリがシステムで起動しないようにして変更を確定します。

ステップ5: システム構成」ウィンドウに戻ったら、 「適用」と「OK」をクリックして変更内容を保存します。

その後、コンピューターを再起動して変更を反映させれば、問題は解決するはずです。ちなみに、これらのプログラムを1つずつ再有効化して問題のあるプログラムを見つけ出し、無効化したままにするか、削除することができます。

修正方法 4: システムの復元を行う(可能な場合)

システム保護機能を有効にしてコンピューターを保護し、少なくともスタックベースのバッファーのオーバーランが発生する前に 復元ポイントを作成 した場合は、コンピューターを以前の復元ポイントに戻すことで問題を解決できる可能性があります。

注: セーフモードに入れない場合は、 「スタートアップ設定」に進む前に、 「詳細オプション」ページで「システムの復元」モジュールを直接選択することができます。

ステップ1: 検索ボックスに「復元」と入力し、結果から 「復元ポイントの作成」を選択します。

ステップ2: システムのプロパティ」 ウィンドウが表示されますので、 「システムの保護」タブにある 「システムの復元」ボタンをクリックします。

「システムの復元」ボタンをクリック

ステップ3: 次のページをスキップします。最新の復元ポイントを選択し、 「次へ」 ボタンをクリックします。

提示: 処理中にアンインストールまたは変更されるプログラムを確認するには、 「影響を受けるプログラムの検出」をクリックします。

最新の復元ポイントを選択

ステップ4: 次のページで復元ポイントの確認が必要になります。すべてのタスクが保存されていることを確認し、 「完了」 ボタンをクリックすると、この操作が実行されます。変更を適用するためにコンピューターを再起動します。

その後、うまくいけばこの問題は解消されるはずです。

修正方法 5: スタートアップ修復を試す

前述のようにバッファーのオーバーランがシステムで検出されると、コンピューターがフリーズ したり、起動できなくなったりすることがあります。上記の方法で問題が解決しない場合は、スタートアップ修復を試してみましょう。

そのためにはセーフモードで起動する必要はなく、 高度なスタートアップオプション で操作を行うか、ブータブルメディアを使用するという2つの一般的な選択肢があります。1つずつ見ていきましょう。

オプション1:  高度なスタートアップオプションでスタートアップ修復を行う

ステップ1: 強制的に3回シャットダウンして Windowsの回復環境 に入り、「その他の修復オプションを表示」をクリックします。

ステップ2: トラブルシューティング」→ 「詳細オプション」で「スタートアップ修復」を選択します。

「スタートアップの修復」を選択

ステップ3: 次に、ユーザーアカウントを選択し、対応するパスワードを入力します。画面に表示されるメッセージに従って、 「続行 ボタンをクリックします。

「続行をクリック」

ツールがコンピューターの診断を開始します。コンピューターの正常な読み込みを妨げる問題を検出し、修復します。修復には時間がかかりますので、しばらくお待ち下さい。

その際、 SrtTrail.txtという名前のログファイルが作成され、  C:WindowsSystem32LogFilesSrt. というディレクトリに保存されます。この修復についての詳しい情報を確認することができます。

オプション2: Windowsインストールメディアによるスタートアップ修復の実行

一般的な方法で回復環境にアクセスできない場合は、USBブータブルメディアなどのインストールメディアを使用することができます。

ステップ1: Windows 10メディア作成ツール を使用してUSBインストールメディアを作成します。

ステップ2: 起動用USBメモリを問題のあるデバイスに接続し、BIOSの設定を変更して起動します。

ステップ3: Windowsのセットアップ画面が表示されたら、言語やその他の環境設定を入力し、 次へ ボタンをクリックします。

ステップ4:コンピューターを修復する」をクリックして回復環境に入り、上記コンテンツの手順を参照して 「スタートアップ修復」 を起動します。

コンピュータを修復する

修正方法 6: データのバックアップとWindowsの再インストール

上記のいずれの方法でもスタックベースのバッファーのオーバーランが解消されない場合は、デバイスを正常に動作させるために、Windowsを再インストールする必要があるかもしれません。

Windowsを再インストールすると、システムディスク上のデータが失われてしまうので、これは最後の手段です。そのため、必要なファイルを事前にバックアップまたは転送しておく必要があります。バックアップしたいファイルの数が多い場合、最も簡単な方法はディスク全体をバックアップすることです。そのためにMiniTool Partition Wizard ユーティリティを使用することができます。

ステップ1: 購入したライセンスキーで「MiniTool Partition Wizardプロ版」に登録します。

MiniTool Partition Wizard Freeクリックしてダウンロード100%クリーン&セーフ

注: デスクトップに正常にアクセスできない場合には ブータブルメディア を別の正常なコンピューターで作成する必要があります。その後、メディアからコンピューターを起動し、MiniToolの回復環境に入って以下の操作を行います。

ステップ2: メインインターフェースでシステムディスクを選択し、左の欄の「ディスクコピー」をクリックします。

「ディスクコピー」をクリック

ステップ3: バックアップ保存先のディスクを選択し、「次へ」をクリックします。

警告: 保存先ディスクのデータはすべて破壊されますので、重要なデータが保存されていないことを確認して下さい。

ステップ4: コピーオプションを選択し(デフォルトの設定で構いません)、新しいディスクのパーティションのサイズと位置を確認して「次へ」をクリックします。

コピーオプションを選択

ステップ5: 保存先ディスクからの起動方法についての情報を読み、「完了」をクリックします。メインインターフェースに戻って「適用」をクリックし、保留中の操作を実行します。

「適用」をクリック

MiniTool Partition Wizardのおかげで、ドライブ上のすべてのデータを素早くバックアップすることができました。クリックしてツイート

システムディスクのバックアップが完了したので、安心してWindowsを再インストールすることができます。

そのためには、前述の方法で作成したWindowsインストールメディアを引き続き使用することができます。セットアップ画面に入ったら、「コンピューターを修復する」ではなく「今すぐインストール」をクリックし、表示される指示に従ってインストールを完了させます。

最後に

この記事について何か問題はありますか?それとも、今回説明したことに関して、他にも良い解決方法はありますか?是非お知らせ下さい。下記のコメント欄にメッセージをお寄せいただくか、[email protected]までお問い合わせ下さい。

システムがスタックベースのバッファーのオーバーランを検出 よくある質問

バッファーオーバーフロー攻撃とは?
バッファーオーバーフロー(またはバッファーのオーバーラン)攻撃は、プログラムのよくある誤動作の一種であり、スタックスマッシング攻撃の一部です。
「スタックオーバーフロー」と「バッファーオーバーフロー」の違いは?
スタックオーバーフローとは、実行スタックが実行プログラム用に確保されたスペースを超えてしまうことを意味します。バッファーオーバーフローとは、プログラムがバッファー用に確保されたメモリを超えてデータを書き込むことを指します。スタックオーバーフローは、バッファーオーバーフローの一種です。
バッファーオーバーフローはなぜ危険?
バッファーオーバーフローは、システムクラッシュやセキュリティの脆弱性など、コンピューターに深刻な問題を引き起こす可能性があるからです。
  • reddit