드라이버 쪼물딱 거리기 2탄 시스템 프로그래밍

드라이버 쪼물딱 거리기 1탄

최대한 간단하게 코드 골격이나 필요한 것들에 대해서만 설명하려 했는데 이게 쉽지가 않네요.
설명해야 할 것도 많고, 작성해야 할 코드도 많고.. -_-;;
일단 그러려니 하고 넘어갑시다.
나중에 하나 하나 만들어 가죠 뭐 ~~ ㅎㅎ
저번에 게임 보안 세미나 갔더니 메모리 디펜더를 써라 뭐라 말씀들 하시던데..
3탄에선 기본 적인 SSDT 훅을 이용해서 메모리 보호(?) 비스무리한걸 한번 만들어 보도록 하지요 ^^

ddkbuild 가 빌드하고자 하는 source 들의 경로에 공백문자나 한글이 들어있는 경우 빌드가 잘 안되는 경우가 있습니다.
프로젝트를 C:kdp 처럼 공백이나 한글이 들어있지 않는 경로를 사용해 주세요.
또한 DDK 의 설치경로 또한 한글이나 공백이 있는 경우 문제가 됩니다. 주의하세요 :-)




개발 환경도 만들어 졌으니 이제 불후의 명작 "hello world" 를 만들어 봅시다.


드라이버 프로젝트 소스 코드 ==> bkdp1.zip
드라이버 로더 ==> FxLoader.zip

먼저 드라이버 빌드를 위해서는 Makefile 과 sources 파일이 있어야 하는데 DDK sample 에서 적당한 것 하나를 복사해 오자. 아래는 sources 파이릐 예이다.




대충 보면 뭘 해야 할지 감이 올 것이다.
전혀 이해가 가지 않는다면 build 명령에 대한 DDK help 를 먼저 대충 읽어보자.


프로젝트에 drv_entry.cpp 파일을 하나 추가하자.
파일의 이름은 sources 에서 등록한 파일이름이다.

예제 코드는 최소한의 driver 골격이다.
자세한 내용은 다른 훌륭한 책들이 많으니 그런 책들을 참고하자.
아무튼 빌드가 되면 실행을 해보자.
드라이버는 일반 실행 파일이 아니기 때문에 좀 다른 방법으로 로딩을 해주어야 한다.


Driver code 내에서 출력한 내용(디버그 메시지)을 보기 위한 툴을 설치해야 한다.
Sysinternals 에 가서 DebugView 를 받아서 실행하길 바란다.

드라이버를 로딩하는 프로그램은 fxLoader.exe 를 사용하면 된다.
(내가 만든 거지만 오래 전에 만든 거라 기억이 잘 안난다. ㅠㅠ 이넘의 휘발성 두뇌구조때문에...)
뭐 UI 는 예쁘지 않지만 그런대로 쓸만하다.
system service 내용도 볼수 있고.. PE 분석기능도 있으니 예뻐해 주셈 :-)

굳이 나를 못 믿어서 이걸 쓰기 싫다면 osronline 이나 그런데 가면 loader 들이 많이 있으니 사용하기 바란다.
어찌되었든 간에 fxLoader.exe 를 실행하면 아래와 같은 화면이 보일 것이다.



Open 버튼을 눌러서 생성된 sys 파일을 로딩하고, Init driver loader -> Register as Service -> Start Service -- Stop Service -> UnRegister Service 순서로 클릭하면 된다.
Issue command  나  Init event  버튼은 누르지 마세요.. C 드라이브가 포맷됩니다. 호호호 ^.^
FxLoader 를 순서대로 실행하면 Debug View 에 hello 어쩌구 하는 메세지가 출력되는 것을 확인 할 수 있을 것이다.


덧글

  • 파란열매 2007/08/27 11:02 # 삭제 답글

    와우.. 멋져요!!
    멋지게 배우겠습니다!!!
  • somma 2007/08/27 20:09 # 삭제 답글

    파란 열매 / 감사~
댓글 입력 영역