1. 기본 동작방식
1) 소스제작 -> 빌드 -> 설치 -> 시동 -> 중지 -> 제거
- 소스제작
- 빌드
- 설치, 시동, 중지, 제거
1) 소스제작 -> 빌드 -> 설치 -> 시동 -> 중지 -> 제거
- 소스제작
//1. 가장 가단한 드라이버
#include <ntddk.h>
VOID DriverUnload( PDRIVER_OBJECT pDrvObj )
{
DbgPrint( "Driver Unload" ); // 이 메세지는 커널 디버거에게 전달된다.
// 이 메세지를 보려면 winDbg 또는 softice 또는 DebugView 가 필요
}
// 드라이버의 EntryPoint - 반드시 C 맹글링 규칙을 따라야 한다.
NTSTATUS DriverEntry( PDRIVER_OBJECT pDrvObj, PUNICODE_STRING pRegPath )
{
DbgPrint( "DriverEntry" );
pDrvObj->DriverUnload = DriverUnload; // 드라이버가 unload 될 때 호출 될 함수 등록
return STATUS_SUCCESS;
}
#include <ntddk.h>
VOID DriverUnload( PDRIVER_OBJECT pDrvObj )
{
DbgPrint( "Driver Unload" ); // 이 메세지는 커널 디버거에게 전달된다.
// 이 메세지를 보려면 winDbg 또는 softice 또는 DebugView 가 필요
}
// 드라이버의 EntryPoint - 반드시 C 맹글링 규칙을 따라야 한다.
NTSTATUS DriverEntry( PDRIVER_OBJECT pDrvObj, PUNICODE_STRING pRegPath )
{
DbgPrint( "DriverEntry" );
pDrvObj->DriverUnload = DriverUnload; // 드라이버가 unload 될 때 호출 될 함수 등록
return STATUS_SUCCESS;
}
- 빌드
1. 설치된 DDK의 Windows XP Checked Build Environment 프롬프트를 사용하여 빌드한다.
2. MakeFile 과 Sources 파일이 필요하며 Sources만 편집하여 빌드 'build' 하면 된다.
3. 주의 해야 할점은 소스는 .c 로 되어야 하며 한글경로가 포함 되어 있으면 build가 되지 않는다.
2. MakeFile 과 Sources 파일이 필요하며 Sources만 편집하여 빌드 'build' 하면 된다.
3. 주의 해야 할점은 소스는 .c 로 되어야 하며 한글경로가 포함 되어 있으면 build가 되지 않는다.
- 설치, 시동, 중지, 제거
1. 레지스토리 편집기(regedit)에서 HKEY_LOCAL_MACHINE\SYSTEM 경로에 레지스토리를 등록한다.
1) 직접 수정해서 등록한다.
2) 서비스 API 함수를 사용하는 프로그램을 제작하여 등록한다.(Software 드라이버)
3) inf 파일을 제작하여 등록한다.(Hardware 드라이버)
4) Setup API를 사용한다.
2. 서비스의 설치 시작 정지 삭제는 나중에 알아보고 일단 EnumService.exe를 사용한다.
1) 직접 수정해서 등록한다.
2) 서비스 API 함수를 사용하는 프로그램을 제작하여 등록한다.(Software 드라이버)
3) inf 파일을 제작하여 등록한다.(Hardware 드라이버)
4) Setup API를 사용한다.
2. 서비스의 설치 시작 정지 삭제는 나중에 알아보고 일단 EnumService.exe를 사용한다.
Tag | WDM