본문 바로가기
카테고리 없음

[ROOTKIT #2] 드라이버 제작을 위한 필수 파일들

by dladbru 2014. 5. 28.

프로그램이 실행되는 영역에는 크게 두가지가 있습니다.

사용자 모드(User mode 또는 Ring 3)와 커널 모드(Kernel mode 또는 Ring 0)

쉽게 생각해서 사용자 모드는 학생이고

커널 모드는 선생님이라고 보심 이해가 쉽습니다.

커널 모드에서 내 코드가 실행되어야 여러가지 특권을 누림으로써 컴퓨터 시스템을

내 마음대로 조정할 수 있습니다.

 

################################################

몇년전 글이다보니 운영체제가 진화하면서 아래에서 설명하는 DDK는 비스타부터 호환이 잘안되게 되었으니 WDK로 다운받아주세요~ 

네이버에 Windows Driver Kit이라 검색하시면 뜹니다.

################################################


그러기 위해 디바이스 드라이버(Device Driver)를 제작합니다.

디바이스 드라이버가 커널에서 돌아가기 때문이죠.

그래서 커널 드라이버라고 불리기도 합니다.

마우스, 키보드, 사운드카드, 비디오카드, 등등이 디바이스이고

이런 것들이 작동되기 위해서 드라이버가 필요합니다.

 

룻킷을 만드는데 우리는 그러한 디바이스가 없지 않나요?

물리적인 디바이스가 없어도 디바이스 객체를 만들 수 있기때문에 가능합니다.

 

결론적으로, 내 룻킷코드가 커널에서 돌아가게끔 하려고

디바이스 드라이버 제작 방법을 이용한다고 생각하면 됩니다.

 

 

[ 디바이스 드라이버 제작을 위한 필수 파일들 ]

 

DDK 가 설치되어 있어야함은 기본이겠죠?

 

1. C 언어로 작성된 드라이버 소스 파일

 

    예) empier.c

 

2. SOURCES 파일

 

   SOURCES 라는 파일에 아래와 같은 코드가 포함되어야 합니다.

   SOURCES 는 반드시 대문자이어야 하고 확장자도 없습니다.

 

TARGETNAME=empier     // 내가 만들고자 하는 드라이버 이름입니다. DDK 로 컴파일하면 empier.sys 파일이 생성됩니다.
TARGETPATH=OBJ
TARGETTYPE=DRIVER
SOURCES=empier.c              // 컴파일시 포함될 C 소스 파일명입니다. 여러개일 경우 파일명을 공백으로 구분해서 적어주면 됩니다. 

//뒤로는 쓰지말아주세요 SOURCES파일은 주석효과를 받지않습니다..ㅠㅠ

 

3. MAKEFILE 파일

 

   MAKEFILE 이라는 파일에 아래와 같은 코드가 포함되어야 합니다. 

   수정할 필요도 없겠습니다.

   MAKEFILE 은 반드시 대문자이어야 하고 확장자도 없습니다.

 

!INCLUDE $(NTMAKEENV)\makefile.def

 

 

[ 과제 ]

 

1. C:\MyFirstRootkit 폴더를 만듭니다. (주의: C 드라이버에 만들고 폴더명에 공백도 넣지마세요.)

 

2. C:\MyFirstRootkit 폴더 안에 위에 있는 코드를 넣어서 SOURCES, MAKEFILE 파일을 만듭니다.


   드라이버 이름과 C 소스 파일명은 자신이 원하는 것으로 변경하세요.

 

3. 에디터를 사용하여 빈문서 하나를 만든후 자신이 정한 C 소스 파일명으로 저장합니다.


   저장시 파일타입을 c/c++ 선택해주고 확장자는 .c 이여야 합니다. (제 경우는 empier.c)

 

4. 첨부한 DebugView.zip 파일을 다운받아 C:\MyFirstRootkit 폴더에 풀어주세요.

   (다음 시간에 사용할 예정~)

  

DebugView.zip



 

(계속...)


반응형

댓글