Recent Posts
Recent Comments
Link
관리 메뉴

NaggingMachine

Show me the BSOD, 윈도우 블루스크린이 그리울 때, 본문

Season 1

Show me the BSOD, 윈도우 블루스크린이 그리울 때,

naggingmachine 2008. 2. 13. 22:26

사용자 삽입 이미지

It's not unusual thing that I got the BlueScreen of Windows operating system when I was developing a system driver because I made a mistake in the driver, especially failed to handle memory properly. BTW, what is the shortest system driver source code that causes the BSOD on purpose? Hmm. After one minute thought, I made the following code, <Listing - 1>. It is only 12 lines including comments! Of course, I made a test application, ShowMeTheBSOD.exe, to ensure that it works well, I mean, it always shows me the BSOD. :-)

Note that your operating system could be damaged, and you can't boot your operation system!


드라이버 개발을 하다보면 아주 작은 실수(특히 메모리 관리 소홀)로 인해 종종 블루 스크린의 악몽에 시달리곤 합니다. 블루스크린을 BlueScreen of Death (BSOD)라고 말할 정도입니다. 그런데 오늘 문득 원할 때 언제든지 블루 스크린을 만들 수 있으면 어떨까라는 생각을 하게 되었습니다. 그냥 재미 삼아 말이죠. 그래서 간단한 코드를 만들어서 로드해주는 프로그램을 만들어 봤는데, 이름하여 ShowMeTheBSOD, 굉장히 잘(?) 작동하네요. 실제 드라이버의 소스 코드는 다음 <소스 1>과 같이 간단합니다.

<Listing 1 - BSOD.c>


코드에서는 드라이버를 설치하는 순간, 할당도 안된 공간(NULL)에 값을 집어넣음으로써 오류를 발생시키고 있습니다. 물론 그 덕분에 커널 오류가 발생하여 곧바로 BSOD를 경험하게 됩니다.

첨부한 예제 프로그램에서는 드라이버 파일(BSOD.sys)을 리소스에서 가져오기 위한 기법과 드라이버를 로드하기 위한 기법을 적용하였습니다. 대부분의 소스 코드는 Rootkit 책을 참고하였습니다.



ShowMeTheBSOD 프로젝트 다운로드

프로그램 실행으로 인해 Windows가 영원히 부팅이 되지 않을 수 있으니 사용에 주의하시기 바랍니다. 테스트는 가상 머신(VMWare나 VirtualPC 등)에서 확인하세요.