구리의 창고

VisualDDK - 비주얼스튜디오에서 드라이버 디버깅하기 본문

Window Driver

VisualDDK - 비주얼스튜디오에서 드라이버 디버깅하기

구리z 2010. 11. 12. 16:33
여기저기 뒤지다가 VisualDDK 라는걸 알아냈다


VisualDDK 1.5 시작 메뉴얼

이 가이드는 VisualDDK를 설치하고 설정하는 것 부터 첫 드라이버를 만들고 디버깅하는 과정을 순서데로 알려줍니다. 당신은 VisualDDK를 기능적으로 완벽하게 느낄 수 있고 간략한 가이드를 통해 어떻게 빠르게 가장 유용한 기능에 접근 할 수 있는지를 알려 줄 것이다.

  1. 먼저 Visual Studio 2005/2008, WinDDK(6000과 7600버전에서 테스트했다.)가 설치돼는지인해라. 64비트 호스트 머신에서도 32비트 디버깅 툴을 설치해야 한다. 왜냐하면 VisualStudio자체는 32비트 이고 32비트 DLL들을 사용한다.

  2. Installer에서 요구하는데로 설치를 진행해라.

  3. 설정 마법사에서 DDK/WDK가 설치된 경로를 선택하라. Installer가 %DDKPATH%와 %WDKPATH% 환경변수를 변경하므로 관리자 권한이 필요하다. 관리자권한이 없으면 VisualStudio가 제대로 작동하지 않을 수도 있다.

  4. VisualDDK로 만든 모든 프로젝트는 %DDKPATH%나 %WDKPATH%를 사용한다.
  5. 설정마법사 마지막 부분에서, 원하는 버전의 Visual Studio 를 선택해라. "register debug version of DDKDebugger.DLL" 를 체크 하길 추천한다. 이걸 체크하면 버그나 크래쉬가 일어났을 때 더 쉽게 알아내고 버그리포트를 생성해준다. 커널디버깅의 장애물은 디버거와 커널의 연결이다. 그러므로 릴리즈모드 대신 디버깅모드를 사용하는 것은 작업을 느리게하는 것이 아니다.

  6. 설정마법사가 Visual Studio에 모든 요소들을 등록하도록하고 에러가 난다면 SysProgs.org 에 알려주면 좋겠다.

  7. VirtualKD DLL과 VisualDKK 모니터를 가상머신에 설치해야한다. VisualDDK 폴더 안에 target\vminstall.exe을 복사하고 실행해라. 그리고 가상머신이 32비트인지 64비트인지는 자동으로 검사해줄 것이다. 디버깅를 하는데 진짜 머신을 사용한다면 DDKLaunchMonitor.exe를 설치하고 실행하기만 하면된다.

  8. 드라이버를 디버깅하기위해 VisualBox를 사용한다면 , 수정 후 VBoxDD.DLL 파일을 사용해라.

    • VirtualBox 폴더 안에 있는 VBoxDD.dll 파일을 VBoxDD0.dll 로 변경한다.
    • 수정한 VBoxDD.dll 파일을 VisualDDK\VirtualBox 폴더에서 VirtualBox directory에 복사한다.
    • VBoxDD.dll 버전이 32비트인지 64비트인지 확인해라.

    가상머신에 대해 자세히 알고싶으면 다음 링크를 클릭해라. here

  9. 메뉴에서 Debug->Attach to Process를 클릭하고 "Kernel-Mode connections"를 선택해라.

  10. "Qualifier strings"은 아래처럼 설정해라.
    • pipe://local_pipe_name
    • pipe://\\host\pipe\remote_pipe_name
    • com://COMx,baud=xxx
    • 1394://channel_num
    • usb2://target_name
    • dump://c:\windows\minidump\some_dump.dmp
    • raw://windbg_connection_params (example: raw://com:modem)
    • vm://vm_name (requires VirtualKD[works for both VMWare and VirtualBox]

    이렇게 하면 Visual Studio에서 커널디버깅을 하도록 지원한다. 그러나 이런 것들은 VisualDDK가 지원하는 기능 중 일부분일 뿐이다.

  11. Visual Studio를 실행하고 아래 그림처럼 프로젝트를 만든다.

  12. 원래있던 드라이버소스를 사용하고 싶어도 처음에는 프로젝트를 만들어줘야한다.

  13. Legacy 드라이버난 WDM 드라이버를 만들어 줄 수 있다. 하지만 Legacy 드라이버는 .reg 파일 등을 통해 서비스를 만들어줘야하고 WDM 드라이버는 장치를 설치해줘야한다.

  14. DDKLaunchMonitor.exe 가 타겟머신에서 실행되고 있는 것을 확인해라. 타겟 머신의의화벽은 TCP와 UDP 연결을 허용해야한다.


  15. 이 스크린샷은 DDKLaunchMonitor가 실행되고 작동하는 걸 보여준다.
  16. Debug->Driver Launch Settings 를 선택해라.

  17. "VisualDDK Project Launcher" 창에서, debug connection type, target machine IP address (DDKLaunchMonitor를 통해 드라이버를 복한다.), 드라이버가 시작/중지 할 때 할 행동등을 설정한다.

  18. Launch 버튼을 클릭해서 드라이버와 VisualDDK가 연결시켜라. 처음에 드라이버를 실행하면, VisualDDK는 타겟머신에 자동으로 드라이버를 설치할 것이다. 드라이버를 설치해라.(타겟에 unsigned 드라이버를 인스톨한다는 것을 잊지마라)

  19. 일단 breakpoint를 걸었다면, 이제 그 부분이 활성화 될 것이다. 그러나, 그러지 않았다면 실행되는동안 걸 수 있다. (타겟머신은 니가 다시 실행 할 때까지 멈춰있는다). 그리고 또한 Break All을 사용 할 수도 있다.

  20. 드라이버가 언로드되면 VisualDDK는 자동으로 디버깅모드를 종료한다. (설정이 기본값이라는 가정하에). 그러나, Stop Debuggin 명령어를 사용해서 종료 할 수도있다. 그런경우, VisualDDK Launcher는 니가 사용한 명령어로 언로드 할 것이다.


  21. 드라이버 언로드 중에 breakpoint를 걸었다면, 무시 할 것이다.
  22. 단축키를 지정하고 사용 할 수도 있다.

  23. 질문이 있다면 이메일을 보내거나 다음 포럼에 질문을 올려라. SysProgs.org forum.
Comments