Windows XP以降のバージョンでプログラムでBSODを発生させる方法はありますか?どうやって?
ところで明確にするために、これは悪意のある目的のためではありません。クライアントは、この方法でLAN上の端末をシャットダウン/再起動できるように要求しました。理由を尋ねると、通常の再起動よりも速いため、彼らは言った... :)
(これを「ユーザー」のどの部分がスーパーユーザーに移行したのかを理解していない人がいるのは興味があります。Duh。)
Windows XP以降のバージョンでプログラムでBSODを発生させる方法はありますか?どうやって?
ところで明確にするために、これは悪意のある目的のためではありません。クライアントは、この方法でLAN上の端末をシャットダウン/再起動できるように要求しました。理由を尋ねると、通常の再起動よりも速いため、彼らは言った... :)
(これを「ユーザー」のどの部分がスーパーユーザーに移行したのかを理解していない人がいるのは興味があります。Duh。)
回答:
キーボードドライバーは、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)になります。
プログラムによる方法が本当に必要な場合は、そのマシンのドライバーに穴を見つけるか、またはを呼び出す単純なドライバーを作成してインストールする必要があります。KeBugCheck
KeBugCheckEx
楽しんで ;)
サイドノート:ドライバー作成者やマルウェアに対処する場合でも、意図的にこのようなクラッシュを引き起こすことは非常に便利です。フルメモリダンプを作成するようにシステムを構成した場合、実行中のシステムのイメージが得られ、さらに分析できます。デバッガーがすべての場合に必ずしも役立つとは限らないデッドロックのようなケースを検討してください。
NotMyFaultをお試しください!
原因を正確に特定することはできませんが、Vistaおよび7では、システム障害が発生するとデフォルトでシャットダウンし、BSODは表示されません。
一般に、BSODは、オペレーティングシステムまたはハードウェア内で何かがひどく間違った場合に発生します。オペレーティングシステムの作成者とハードウェアベンダーはどちらも、悪いソフトウェアエンジニアが製品の外観を悪くしてユーザーエクスペリエンスを台無しにすることを好まないため、外部からのいずれかで何かを間違えることは本質的にかなり困難です。
ドライバーの作成は、オペレーティングシステムとハードウェアに十分に近づき、そのようなエラーを引き起こす数少ない方法の1つです。もちろん、このようなドライバーをインストールすることは、一般的に意図的な知識と管理者権限なしで行うことではないため、悪意のある目的でこれを使用することはかなり困難です。この種のアクセスを使用すると、BSODまたはそのようなラウンドアラウンド手段なしで、はるかに多くの害を及ぼす可能性があります。
BSODはカーネルパニックです。これは、カーネルの一部であり、オペレーティングシステムのコア部分が非常に悪いことをしたことを意味します。メモリを走らせたり、必要のないコードを実行したりするかもしれません。プログラム的には、カーネルスペースでコードを取得し、必要に応じてコードをトリガーする必要があります。prodサーバーには少し危険です。
通常のWindowsマシンには、プロセスとカーネルに多くの状態があります。状態の一貫性を保つために必要なクリーンアップが何であれ、それを短絡しただけです。
具体的には、BSODは(通常)カーネル(またはドライバー)のバグであり、カーネルは悪い状態にあるため、クリーンアップできず、むしろ再起動したいという悪い感じがあります。何が良くて何が悪いかを知る。バッファはディスクにフラッシュできませんでした。その後、再起動時にクリーンアップを試行しますが、シャットダウン/パニック時に多くのコンテキストを失ったため、保守的なクリーンアップになり、パニックから良い残りと悪い残りの両方を選択する必要があります。
そのため、シャットダウン時の利点の一部は起動時に失われます。今では、自身の足から切り落とされた場所を把握する必要があるためです。chkdskを実行し、部分書き込み状態にあったディスクブロックをクリーンアップする必要があります。USBディスクは大量にキャッシュします。キャッシュをオフにすると、クラッシュ時にデータが失われる可能性が低くなりますが、キャッシュしないと速度が低下します。どのファイルを失いますか?
要するに、これは悪い考えです。これが発生した本番マシンは、クリーンアップ後でも不安定な状態になる場合があります。これは悪いです。
シャットダウンして再起動するだけでいいと思います。サーバーが再起動しないか、プログラムが起動できないため、サーバーの再構築が初めて必要になると思われる時間の節約はできません。
csrss.exeプロセスを強制終了するとBSODになります。しかし、最新のWindows(8、8.1)ではそうではありません。
STATUS_SYSTEM_PROCESS_TERMINATED
)、ところでです。
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
}
イベントログにトレースがないようです。しかし、確かにミニダンプには痕跡がありますか?