Windows XP以降のバージョンでBSODを発生させる方法


14

Windows XP以降のバージョンでプログラムでBSODを発生させる方法はありますか?どうやって?

ところで明確にするために、これは悪意のある目的のためではありません。クライアントは、この方法でLAN上の端末をシャットダウン/再起動できるように要求しました。理由を尋ねると、通常の再起動よりも速いため、彼らは言った... :)

(これを「ユーザー」のどの部分がスーパーユーザーに移行したのかを理解していない人がいるのは興味があります。Duh。)


18
ドライバーの作成を伴わないものを見つけた場合は、Microsoftに連絡して修正してください。
エリック

13
あの 理由により通常の再起動よりも高速です-正常にシャットダウンする必要はありません。あなたが本当にゆっくりシャットダウンするプログラムを持っているなら、それを中断することは問題ではないかもしれません。I / Oハードウェアに非常に近いものを強制的にシャットダウンまたは放棄した場合、破損したファイルシステムなどになる可能性があります。あなたの問題も...)

12
あなたのクライアントは制度化され、彼の精神状態は医療チームにより密接に続く必要があります。
ダリンディミトロフ

9
救急車は一般的に、自分の車を病院に運転するよりも高速です。それは旅行の好ましいモードになりません。
FreeAsInBeer

8
クライアントに電源ボタンを6秒間押し続けるように伝えます。または、電源コードを引っ張るだけです。
ハンスパッサン

回答:


15

キーボードドライバーは、BSODを引き起こすように指示できます。

HKLM\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters

または(古いPS / 2キーボードの場合)

HKLM\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters

そして、REG_DWORDという名前CrashOnCtrlScrollを設定し1ます。

次の再起動後、Ctrl+ ScrollLk+でブルースクリーンを強制できますScrollLk。この場合、バグチェックコードは0xE2(MANUALLY_INITIATED_CRASH)になります。

プログラムによる方法が本当に必要な場合は、そのマシンのドライバーに穴を見つけるか、または呼び出す単純なドライバーを作成してインストールする必要があります。KeBugCheckKeBugCheckEx

楽しんで ;)

サイドノート:ドライバー作成者やマルウェアに対処する場合でも、意図的にこのようなクラッシュを引き起こすことは非常に便利です。フルメモリダンプを作成するようにシステムを構成した場合、実行中のシステムのイメージが得られ、さらに分析できます。デバッガーがすべての場合に必ずしも役立つとは限らないデッドロックのようなケースを検討してください。


4
これは本当ですか?かっこいいね!(いいえ、私は自分のコンピューターでテストする気分ではありません。)
アンドレアスレイブランド

3
はい、それは実際には冗談を意味するものではありません。これは、ドライバー作成者がしばらくの間使用しているものですが、レジストリの場所が何であるかを頭の中で覚えていませんでした。私のメモで調べなければなりませんでした。
0xC0000022L

私は、printscreenを入力するか、Ramまたは内部Hardiskを使用する際にメモリが多すぎるため、bsodを経験しました。システムを悪用するかもしれません。
Tech-IO


1

原因を正確に特定することはできませんが、Vistaおよび7では、システム障害が発生するとデフォルトでシャットダウンし、BSODは表示されません。


大丈夫です、私はその振る舞いが欲しいです。
タマスシェレイ

1
@FreeAsInBeer:実際には、システム設定がクラッシュ後に再起動するように指示しているためです。これは、コンピューターのプロパティの[詳細設定]タブで変更できます。また、最近作成されたクラッシュダンプは通常、デフォルトでミニダンプであるため、再起動が非常に高速で行われるため、ブルースクリーンが表示されません(文字通り)。しかし、それはそこにある、私を信じて;)
0xC0000022L

1
@STATUS_ACCESS_DENIED:私は、この変数のデフォルトがBSODを表示しないように設定されていることを彼に知らせるだけだったので、期待どおりにプロパティを取得できなかった場合、彼はそのプロパティをチェックすることを知っていました。
FreeAsInBeer

@FreeAsInBeer:十分に良い:)
0xC0000022L

1

一般に、BSODは、オペレーティングシステムまたはハードウェア内で何かがひどく間違った場合に発生します。オペレーティングシステムの作成者とハードウェアベンダーはどちらも、悪いソフトウェアエンジニアが製品の外観を悪くしてユーザーエクスペリエンスを台無しにすることを好まないため、外部からのいずれかで何かを間違えることは本質的にかなり困難です。

ドライバーの作成は、オペレーティングシステムとハードウェアに十分に近づき、そのようなエラーを引き起こす数少ない方法の1つです。もちろん、このようなドライバーをインストールすることは、一般的に意図的な知識と管理者権限なしで行うことではないため、悪意のある目的でこれを使用することはかなり困難です。この種のアクセスを使用すると、BSODまたはそのようなラウンドアラウンド手段なしで、はるかに多くの害を及ぼす可能性があります。


1

BSODはカーネルパニックです。これは、カーネルの一部であり、オペレーティングシステムのコア部分が非常に悪いことをしたことを意味します。メモリを走らせたり、必要のないコードを実行したりするかもしれません。プログラム的には、カーネルスペースでコードを取得し、必要に応じてコードをトリガーする必要があります。prodサーバーには少し危険です。

通常のWindowsマシンには、プロセスとカーネルに多くの状態があります。状態の一貫性を保つために必要なクリーンアップが何であれ、それを短絡しただけです。

具体的には、BSODは(通常)カーネル(またはドライバー)のバグであり、カーネルは悪い状態にあるため、クリーンアップできず、むしろ再起動したいという悪い感じがあります。何が良くて何が悪いかを知る。バッファはディスクにフラッシュできませんでした。その後、再起動時にクリーンアップを試行しますが、シャットダウン/パニック時に多くのコンテキストを失ったため、保守的なクリーンアップになり、パニックから良い残りと悪い残りの両方を選択する必要があります。

そのため、シャットダウン時の利点の一部は起動時に失われます。今では、自身の足から切り落とされた場所を把握する必要があるためです。chkdskを実行し、部分書き込み状態にあったディスクブロックをクリーンアップする必要があります。USBディスクは大量にキャッシュします。キャッシュをオフにすると、クラッシュ時にデータが失われる可能性が低くなりますが、キャッシュしないと速度が低下します。どのファイルを失いますか?

要するに、これは悪い考えです。これが発生した本番マシンは、クリーンアップ後でも不安定な状態になる場合があります。これは悪いです。

シャットダウンして再起動するだけでいいと思います。サーバーが再起動しないか、プログラムが起動できないため、サーバーの再構築が初めて必要になると思われる時間の節約はできません。


あなたはポイントを見逃しています。記述したドライバの問題をデバッグするときに、オンデマンドでBSODを発生させるのには十分な理由があります。ただし、この質問はその性質上、SOからここに移行されるべきではないと思います。
0xC0000022L

@STATUS_ACCESS_DENIED私はあなたの声明に同意しますが、元の質問を覚えていれば、デバッグとは何の関係もありませんでしたが、システムをシャットダウンするためのショートカットです。私の意見では正当な理由ではありません。
リッチホモルカ

0

csrss.exeプロセスを強制終了するとBSODになります。しかし、最新のWindows(8、8.1)ではそうではありません。


これはアプリで実行できます。Visual Studio Express(無料)で誰でもこのようなアプリを作成できます。
pbies 14年

これはコード0xC000021A(STATUS_SYSTEM_PROCESS_TERMINATED)、ところでです。
0xC0000022L

0

https://www.mpgh.net/forum/showthread.php?t=1100477のコードスニペットは 、Windows 10.17134で動作します

#include <windows.h>
#pragma comment(lib, "ntdll.lib")

extern "C" NTSTATUS NTAPI RtlAdjustPrivilege(ULONG Privilege, BOOLEAN Enable, BOOLEAN CurrentThread, PBOOLEAN OldValue);
extern "C" NTSTATUS NTAPI NtRaiseHardError(LONG ErrorStatus, ULONG NumberOfParameters, ULONG UnicodeStringParameterMask,
PULONG_PTR Parameters, ULONG ValidResponseOptions, PULONG Response);

void BlueScreen()
{
    BOOLEAN bl;
    ULONG Response;
    RtlAdjustPrivilege(19, TRUE, FALSE, &bl); // Enable SeShutdownPrivilege
    NtRaiseHardError(STATUS_ASSERTION_FAILURE, 0, 0, NULL, 6, &Response); // Shutdown
}

イベントログにトレースがないようです。しかし、確かにミニダンプには痕跡がありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.