본문 바로가기

About Programing/04. Device Driver

5월 22일 SOURCES 파일

출처 : 루트킷 - 에이콘 50page

 SOURCES파일은 파일 이름이 항상 대문자로 SOURCES이어야 하고, 파일 확장자가 없다. 다음은 SOURCES파일이 포함해야 하는 내용을 보여주고 있다.

TARGETNAME=MYDRIVER
TARGETPATH=OBJ
TARGETTYPE=DRIVER
SOURCES=mydriver.c
 TARGETNAME 변수에는 드라이버의 이름을 할당한다. TARGETNAME에 설정된 이름은 드라이버 바이너리에 포함되기 때문에 TARGETNAME에 MY_EVIL_ROOTKET_IS_GONNA_GET_YOU와 같은 이름을 할당하는 것은 좋은 생각이 아니다. 드라이버 파일의 이름을 변경하더라도 바이너리 안에 포함된 이름은 변경되지 않는다.

 TARGETPATH 변수는 일반적으로 OBJ로 설정된다. 이것은 파일이 컴파일되어 어디에 저장되는지를 나타낸다. 일반적으로 드라이버 파일은 현재 디렉토리의 objchk_xxx.i386 하위 디렉토리에 위치한다.

 TARGETTYPE 변수는 컴파일 하는 파일의 종류를 나타낸다. 드라이버인 경우에는 DRIVER라고 설정한다.

 SOURCES 항복에는 소스 파일인 .c 파일을 명시한다. 여러 줄을 이용해서 소스 파일들을 명시하고자 한다면 다음과 같이 백슬래시('\')를 이용하면 된다.
SOURCES = myfile1.c \
		myfile2.c \
		myfile3.c
마지막 줄에는 백슬래시가 없다는 것에 주의하라. 선택적으로 INCLUDE 변수를 추가로 이용할 수도 있다. 이를 이용해서 인클루드 파일이 위치하는 디렉토리를 명시할 수 있다. 이 경우에도 백슬래시를 이용하면 여러 줄로 디렉토리들을 명시할 수 있다.
INCLUDE = c:\my_includes\
		..\..\inc\
c:\other_includes
링크해야 할 라이브러리가 있는 경우에는 TARGETLIBS 변수를 이용해야 한다. NDIS라이브러리를 사용하는 경우를 예로 들겠다.
TARGETLIBS = $(BASEDIR) \ lib\w2k\i386\ndis.lib
또는
TARGETLIBS = $(DDK_LIB_PATH)\ndis.lib
$(BASEDIR) 은 DDK가 설치된 경로를 의미하고, $(DDK_LIB_PATH)는 디폴트 라이브러리가 설치된 경로를 의미한다.

'About Programing > 04. Device Driver' 카테고리의 다른 글

SDT 수정을 이용한 Native API Hooking  (0) 2010.07.28
WinDbg 명령어 정리  (0) 2010.06.14
완전 신기!  (0) 2010.05.23
[TDI_FW] 예제 분석 5월 19일  (0) 2010.05.20
[TDI_FW] 예제 분석 5월 18일  (0) 2010.05.18