관리 메뉴

Information Security

디바이스 드라이버 본문

포렌식/윈도우 포렌식

디바이스 드라이버

HackingPractice 2020. 12. 18. 11:09

디바이스 드라이버 

  • 로드 가능한 커널 모드 모듈(sys 확장자)로 I/O 관리자와 관련 하드웨어 사이를 인터페이스로 연결 (IRP, I/O Request Packet)
  • 직접 하드웨어를 조작하지 않고, 하드웨어와 통신하기 위해 HAL 내의 함수를 호출
  • 유저 모드 프로그램과 통신하기 위해서 IRP에 대한 처리가 필요

DriverEntry 함수가 커널로 Load가 됬을 경우 내부의 함수가 실행된다. 로그를 남기면 "I loaded" 메시지를 보여주고 onUnload가 가능할 수 있도록 작성되었다.

그림 1-1 basic.c

x86 Checked Build Environment 프로그램을 통해 basic.c 파일 위치에서 build -cegZ 빌드를 했다.

그림 1-2 build

build가 성공한 경우 i386 폴더에 파일들이 생성되었다.

그림 1-3 sys파일

InstDrv 프로그램을 통해 MSNBCVID.sys 파일의 경로를 입력했다.

그림 1-4 InstDrv

Install을 클릭 시 아래와 같은 메시지를 확인할 수 있다.

그림 1-5 Install

Start 클릭 시 아래와 같은 메시지를 확인할 수 있다.

그림 1-6 Start

DebugView 프로그램을 통해 소스코드에서 본 "I loaded!" 메시지를 확인할 수 있다.

그림 1-7 DebugView

Stop을 클릭 시 DebugView에서 "I loaded! OnUnload called" 소스코드의 내용을 확인할 수 있다.

그림 1-8 onUnload

'포렌식 > 윈도우 포렌식' 카테고리의 다른 글

보안 메커니즘  (0) 2020.12.19
콜백  (0) 2020.12.18
poolmon  (0) 2020.12.17
윈도우 실행부 객체  (0) 2020.12.17
메모리 관리  (0) 2020.12.16