프로그래밍 방식으로 Windows XP 및 최신 버전에서 BSOD를 발생시키는 방법이 있습니까? 방법?
BTW는 명확히하기 위해 악의적 인 목적이 아닙니다. 클라이언트는이 방법으로 LAN에서 터미널을 종료 / 재부트 할 수 있도록 요청했습니다. 이유를 물었을 때 정상적인 재부팅보다 빠르기 때문에 ... :)
(이를 슈퍼 유저로 마이그레이션 한 사용자를 이해하지 못하는 사람들이 "프로그래밍 방식으로"사용하는 부분이 궁금합니다.)
프로그래밍 방식으로 Windows XP 및 최신 버전에서 BSOD를 발생시키는 방법이 있습니까? 방법?
BTW는 명확히하기 위해 악의적 인 목적이 아닙니다. 클라이언트는이 방법으로 LAN에서 터미널을 종료 / 재부트 할 수 있도록 요청했습니다. 이유를 물었을 때 정상적인 재부팅보다 빠르기 때문에 ... :)
(이를 슈퍼 유저로 마이그레이션 한 사용자를 이해하지 못하는 사람들이 "프로그래밍 방식으로"사용하는 부분이 궁금합니다.)
답변:
키보드 드라이버는 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는 운영 체제 나 하드웨어에서 무언가 잘못 될 때 발생합니다. 운영 체제 작성자와 하드웨어 공급 업체 모두 제품이 나쁘게 보이고 사용자의 경험을 망칠 수있는 나쁜 소프트웨어 엔지니어들에게 감사하지 않기 때문에 외부의 사람들 중 한 곳에서 문제가 발생하는 것은 본질적으로 다소 어렵습니다.
드라이버 작성은 운영 체제 및 하드웨어에 충분히 접근하여 오류를 발생시키는 몇 가지 방법 중 하나입니다. 물론 이러한 드라이버를 설치하는 것은 일반적으로 의도적 인 지식과 관리 권한이없는 작업이 아니므로 악의적 인 목적으로이 드라이버를 사용하는 것이 다소 어려울 수 있습니다. 이러한 종류의 액세스를 사용하면 BSOD 또는 이와 같은 수단을 사용하지 않고도 훨씬 더 많은 피해를 입을 수 있습니다.
BSOD는 커널 패닉입니다. 그것은 커널의 일부를 의미하며 운영 체제의 핵심은 실제로 나쁜 일을했습니다. 메모리가 손상되었을 수도 있고, 가지고 있지 않은 코드가 실행될 수도 있습니다. 프로그래밍 방식으로 커널 공간에서 코드를 가져온 다음 필요에 따라 코드를 트리거해야합니다. prod 서버에는 약간 위험합니다.
일반적인 Windows 시스템은 프로세스와 커널에서 많은 상태를 유지합니다. 상태를 일관되게 유지하기 위해 정리해야하는 것이 무엇이든 간단히 단락되었습니다.
특히 BSOD는 (일반적으로) 커널 (또는 드라이버) 버그이며, 커널은 나쁜 상태에 있으므로 정리할 수 없으며 재부팅 할 것이라고 느낍니다. 무엇이 좋고 나쁜지 알아 버퍼가 디스크로 플러시 될 수 없습니다. 그런 다음 재부팅 할 때 정리를 시도하지만 종료 / 패닉에 대한 많은 컨텍스트를 잃어 버려서 패닉에서 좋은 음식과 나쁜 음식을 모두 선택 해야하는 보수적 인 정리가 될 것입니다.
따라서 종료시 장점 중 일부는 시작시 사라 졌으므로 이제는 다리 밑에서 다리가 잘린 부분을 찾아야합니다. chkdsk를 실행하고 부분 쓰기 상태 인 디스크 블록을 정리해야합니다. USB 디스크는 많이 캐시합니다. 캐싱을 해제하면 충돌시 데이터가 손실 될 가능성이 줄어들지 만 캐싱을 수행하지 않으면 속도가 다소 느려집니다. 어떤 파일을 잃어 버리겠습니까?
요컨대, 이것은 나쁜 생각입니다. 이러한 상황이 발생하는 모든 생산 기계는 정리 후에도 불안정한 상태 일 수 있습니다. 이것은 나쁘다.
그냥 종료하고 다시 시작하라는 말을하고 싶습니다. 서버가 부팅되지 않거나 프로그램을 시작할 수 없기 때문에 처음으로 서버를 다시 작성해야하는 시간을 절약 할 수 있습니다.
csrss.exe 프로세스를 종료하면 BSOD가됩니다. 그러나 최신 Windows (8, 8.1)에는 없습니다.
STATUS_SYSTEM_PROCESS_TERMINATED
), btw입니다.
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
}
이벤트 로그에 추적이없는 것 같습니다. 그래도 미니 덤프에 흔적이 있을까요?