삽질의 현장/- 윈도우 커널

윈도우커널_#012_드라이버를 만들어 봅시다.

shovelman 2015. 6. 9. 23:25

 

 

 

 

 

 

* 결론부터 말씀드리자면,

아직 Visual Studio 2013 으로 Driver Debugging은 하지 못했습니다. 
pipe 설정하시는 것만 참조하시고 나머지는 WinDbg로 디버깅을 진행하는

아래의 링크를 참조해주세요!

 

015. 끝까지 물고늘어진다! 윈도우 커널 디버깅 끝판왕!!! : http://sapzape.tistory.com/25 

 

 

 

 

006. 삽질의 시작! NtQuerySystmInformation 정복기 : http://sapzape.tistory.com/11

007. 삽질은 끝나지 않는다! NtDuplicateObject ! (1) : http://sapzape.tistory.com/12

008. 삽질은 끝나지 않는다! NtDuplicateObject ! (2) : http://sapzape.tistory.com/13 

009. 삽질은 언제 끝나나.. LoadLibrary와 GetProcAddress! http://sapzape.tistory.com/14

010. 넌 뭐하는 녀석이냐 NTSTATUS!  : http://sapzape.tistory.com/15

 


 

버전 

날짜 

내용 

작성자 

1.0.0.1 

2014.12.14 

WDK 설치 과정 

삽잡이 

1.0.0.2 

2014.12.15

캐릭터 추가 및

WDK Visual Stduio 연동 에러 화면 캡쳐 

삽잡이 

1.0.0.3 

2014.12.23 

내용 수정 및 추가 

삽잡이 


 


 


안녕하세요 삽잡이입니다.

저의 캐릭터가 인지, 삼각 김밥인지, 그냥 세모인지에 대한...정체성 혼란이 와...

캐릭터를 좀 Upgrade 시켰답니다 ㅎㅎㅎ

그렇다면 더욱 Upgrade 된 모습과 더불어서

더욱 새롭게! 알차게! 삽질을 하도록 하겠습니다 ㅎㅎ




자~ 오늘은 드라이버를 구현할 환경을 만들어보려 합니다.

왜냐... 드라이버를 개발하려면 환경이 있어야하죠...

허허... 콩심은데서 콩나고 드라이버 환경 구축을 통해서 드라이버를 만들수 있겠죠... 풉...

 

저는 뭔놈의 드라이버 환경 구축을 하는데 오래걸리는지요 허허...

다운 받으라고 뻔히 써있는 것을

뺑뺑 돌아 진행하였답니다... 이것이 바로 주말병...?의 현상인가... (핑계 대지마 -_-)

 

아무튼... 저는 MS 홈페이지에서 WDK 파일을 받았습니다.

우선 가장 중요한 것은!!!

WDK를 설치하기 전에 Visual Stduio가 설치되어 있어야한다는 점!

 

집에 TV 들어놓으려 했는데, 집이 없으면 안되겠죠 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

아무튼....

저는 Visual Studio 2013 환경에서 진행하였습니다~~~

 

 

아래의 파일과 또 다른 파일 하나가 더 있을 터인데...

고것은 Target 머신에 설치해야할 것이니 우선 PASS 합시당~

 

자... 설치를 진행해 봅시당~

 


 

따닥!

 

 


 

살포시 Next를 딱!

 

 


 

설치가 완료되고 Visual Studio를 시작해보면!

짜잔! 없던 메뉴가 하나 생겼네요 ㅎㅎ

 


 

 

 

 

하하... 저는 처음에 뭣도 모르고 WDK 두 파일을 모두 설치했는데...

 

Target 머신에 대한 개념이 없었던거죠... 

삽잡이의 이유 모를 삽질덕에 한숨 자고 말끔한 머리로 다시 진행했습니다 ㅋㅋㅋㅋㅋ

 

 

자... Target 머신... 뭘까요... 뭐냐하면...

 

우리가 현재 사용하고 있는 User 영역에 비해 보이지 않는 Kernel 영역

매우 민감하고 조심스럽게 다뤄야합니다.

그쪽은 윗동네 (User 영역)보다 까다롭고 절차도 복잡합니다...

마치... 음... User영역이 후방 군부대라면 Kernel 영역은 최전방?

모리 하나만 삐긋해도 블루스크린이 딱 나오져...

그래서 Target 머신이 필요합니다...

 

우리가 만든 드라이버가 커널영역에서 놀아야되는데

잘못됬다간... 블루스크린을 수없이 체험하실 수 있을 것입니다...

원하신다면 하세요 ㅎㅎㅎ 대신 육두문자 날리기 없기 ㅎㅎㅎ

 

자 계속 이어서 가봅시다.

제대로 설치된 것을 확인하기 위해서 MS에서 친절하게 제공해주시는

Sample Project를 실행해 봅시다~

잘될거에요~~

 

그렇다면... 이제 Target 머신을 주물러봐야합니다.

Target 머신으로 사용할 VM 이미지도 환경을 구축해줘야겠죠 ㅎㅎ (안해주면 서운해해요..)

 

/*

아래의 [출처 및 참고 자료] 에 있는

MSDN[클릭가능] DEVGURU Blog [클릭가능] 및 
하단에 있는 
[출처 및 참조자료] 참조하여 포스팅을 진행했습니다.
문제시 수정 및 조치하도록 하겠습니다.

*/

 

 

저는 기존에 VM에서 쓰던 OS가 있어서 그대로 사용하도록 하겠습니다.

 

OS 이미지가 실행중이라면 종료를 꼭 하시구요,

Edit Virtual machine setting 을 선택합니다.

 

 

Add 버튼을 살포시 눌러주시고요,

 



Serial Port 를 선택합니다.

 


 

Output to named pipe를 선택하시고요

 


 

파이프의 명칭을 지정합니다...

파란 선에 파이프의 명칭을 지정해주시면 됩니다.

(저는 저렇게 안쓰고 sap 이라고 썼습니다... 설마 저렇게 썼을까요... ㅋㅋㅋ)

 

 

 

 

완료가 된다면, Serial Port 2 가 생긴 것을 확인할 수 있으시고요...

(왜 Serial Port 2...? 지정된 OS에서 이미 포트를 사용하고 있기 때문이랍니다.)

 

우측 하단에 I/O mode에 반드시 check 하셔야 됩니다.

(Serial Port를 이용하여 데이터 통신을 하는 방식이라고 하네요)

 


 

자.. 이제 완료가 됬다면 해당 OS 이미지를 실행시킵니다.

하... 저의 VM은 부팅하는데 좀 걸리네요... 걸리는동안 데코좀 하고...

연결이 안되있다면 연결을 해주시고요~

 


 

Target 머신과 제 visaul이 있는 PC (잘생김 노놉... ㅈㅅ..) 의 연결을 위해서

cmd창을 관리자 권한으로 실행합니다.

 


 

1. bcdedit /debug on

-> debug 모드 실행입니다요~

2. bcdedit /dbgsettings serial debugport:2 baudrate:115200

-> VM에서 설정한 serial port를 입력해야됩니다요~

3. bcdedit /dbgsettings

-> 올바로 설정했는지 확인합니다요~~

4. shutdown -r -t 0 

-> 그리고 살포시 재시작을 해주시면 됩니다.

 

그렇다면~ 다시 Visaul 담당을 하고 있는 PC로 가봅시다.

해당 Target 머신을 사용하기 위해서 설정을 해야한다고 합니다.

자 visual에서 따라가봅시다~

 


 

Add 해주thㅔ요~

 

 

 


 

Computer name 을 쓰는 란이 뜰터인데,

당황하지 않고 VM 이미지에서 [제어판>장치관리자]를 확인하면 알 수 있답니당

 


 

다음으로 넘어가서~

 

Connection Type 을 Serial로 바꾸시고요!

 

Pipe name에는 아까 입력한 파이프 명칭을 그대로 쓰시구요

Target Port에는 com2로 입력을 합니다.

(Serial Prot 2이죠~)

 


 

 

이 상태로 진행하신다면 아래와 같은 머리 지끈 거리는 문제가 발생합니다.

네트워크 암호 입력을 계속해서 반복하고...

결국에는 실패창이 뜨죠...

 

 


 

 

 

12장에서 이 문제에 대해서 해답을 알려드리도록 하겠습니다.

푸하하...

 

수고하세요! 이상 삽잡이였습니다!

 

 

 

[출처 및 참고자료]

 

http://devguru.co.kr/blog/6619/ <-- Driver 환경 구축에 대한 자세한 설명이 있는 곳 (1)
http://munggeun.tistory.com/8 <-- Driver 환경 구축에 대한 자세한 설명이 있는 곳 (2)
http://egloos.zum.com/javahawk/v/10857013 <- -Driver 환경 구축에 대한 자세한 설명이 있는 곳 (3)

http://msdn.microsoft.com/ko-kr/library/windows/apps/hh465051.aspx <-- SDK Sample

http://technet.microsoft.com/ko-kr/library/dn481258.aspx <-- 보안 부팅 설정 안함

 

 

 

[구글 키워드]

 

WDK

Window Driver



http://sapzape.tistory.com/20