웬디의 기묘한 이야기

글 작성자: WENDYS
반응형

안전모드에서 디바이스 드라이버를 사용하기 위해서는 드라이버를 정적 로딩을 해야 한다.


정적 로딩을 하기 위해서는 CreateService() 호출시 SERVICE_BOOT_START 로

등록후 리부팅을 해야 한다.


SERVICE_BOOT_START 로 등록하기 위해서는 .sys 파일이 c:\windows\system32\drivers 에 있어야 한다.

정적 등록된 드라이버를 안전모드에서 사용하기 위해서는 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Minimal
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SafeBoot\Network

에 드라이버 이름으로 키를 만드고 (확장자 불필요), 기본값에 REG_SZ 로 "Driver" 라고 적어주면 된다.


드라이버에서 현재 안전모드인지 확인하기

Windows 운영 체제 커널 InitSafeBootMode라는 ULONG 변수에 포인터를 내보냅니다. 이 변수는 안전 모드 설정이 포함 되어 있습니다. 

다음 표에서 다른 값에 대 한 모드입니다.

모드
1 SAFEBOOT_MINIMAL
2 SAFEBOOT_NETWORK
3 * SAFEBOOT_DSREPAIR
* 참고값 3 Windows 도메인 컨트롤러에만 적용 됩니다. 

extern PULONG InitSafeBootMode; 

시스템 안전 모드에서 실행 중인지 여부를 확인 하려면 InitSafeBootMode 값을 확인 해야 합니다.
if (*InitSafeBootMode > 0){ 

     // The system is in Safe Mode. 
     // Take appropriate action. 
     //     
 


반응형

'⌨ DEVELOPMENT > Windows Kernel' 카테고리의 다른 글

Windbg 명령어 모음  (0) 2015.03.21
Kernel debugging Windbg Symbol Path  (0) 2015.03.21