Giter VIP home page Giter VIP logo

minifilter-hol's Introduction

Minifilter driver development Hands-On-Lab

BoB 6th, programming lecture by somma ([email protected])


실습 환경

디버거 설정 (빌드 머신)

Download the Windows Driver Kit (WDK) 를 참조하고, VMWare 또는 VirtualBox, Hyper-V 등을 통해 가상머신을 생성한다. 실습에서는 VMWare 를 사용한다.

  1. Visual Studio 설치 ( Visual studio 2015 )

    • Visual studio 2017 설치 금지
    • 반드시 C/C++ 개발환경을 모두 설치해야 함 (설치 옵션 선택)
  2. SDK 설치 ( Window SDK for Windows 10, version 1703 )

  3. WDK 설치 ( WDK for Windows 10, version 1703 )

  4. Python 설치

    • Anaconda 설치 (python 3.x)
    • Anaconda 설치 시 Add Anaconda to my PATH environment variable 에 체크한다.
  5. Virtual KD 설치 ( Virtual KD )

    • install 에 설명된 대로 Debugger/Debuggee 설정을 완료할 것
    • Debuggee 의 커널을 Break 할 수 있는지 반드시 확인할 것
  6. git 설치

  7. vcpkg 설치

    1. 소스코드 가져오기

       C:\>git clone https://github.com/Microsoft/vcpkg.git c:\work.vcpkg
       Cloning into 'c:\work.vcpkg'...
       ...
      
    2. 빌드

       C:\work.vcpkg>c:\work.vcpkg\bootstrap-vcpkg.bat
       Microsoft (R) Build Engine version 14.0.25420.1
       ...
      
    3. Visual Studio 연동

       C:\work.vcpkg>vcpkg integrate install
       Applied user-wide integration for this vcpkg root.
      
       All MSBuild C++ projects can now #include any installed libraries.
       Linking will be handled automatically.
       Installing new libraries will make them instantly available.
      
       CMake projects should use -DCMAKE_TOOLCHAIN_FILE=C:/work.vcpkg/scripts/buildsystems/vcpkg.cmake
      
       C:\work.vcpkg>
      
    4. 패키지 설치

       C:\work.vcpkg>vcpkg install boost:x86-windows boost:x86-windows-static boost:x64-windows boost:x64-windows-static
       C:\work.vcpkg>vcpkg install curl:x86-windows curl:x86-windows-static curl:x64-windows curl:x64-windows-static
       C:\work.vcpkg>vcpkg install sqlite3:x86-windows sqlite3:x86-windows-static sqlite3:x64-windows sqlite3:x64-windows-static
       C:\work.vcpkg>vcpkg install jsoncpp:x86-windows jsoncpp:x86-windows-static jsoncpp:x64-windows jsoncpp:x64-windows-static
       C:\work.vcpkg>vcpkg install gtest:x86-windows gtest:x86-windows-static gtest:x64-windows gtest:x64-windows-static
      
  8. _MyLib 가져오기

    1. _MyLib 소스코드 클로닝

      C:>git clone https://github.com/somma/_MyLib.git c:\work.mylib Cloning into 'c:\work.mylib'... ...

    2. _MyLib 소스코드 빌드 _MyLib 을 빌드가 완료되면 x:\ 드라이브에 생성된 실행파일을 복사하도록 설정되어있으므로 _MyLib 의 속성페이지에 들어가서 아래 Post-BuildEvent 섹션에 정의된 내용을 삭제한다.

      post-build

  9. WDK 샘플 빌드

    • 개발환경에 Windows-driver-samples 을 다운로드 혹은 clone 해 둔다.
    • Windows-driver-samples/filesys/miniFilter/ 아래에 있는 프로젝트들을 Visual studio 2015 를 통해 빌드해본다.
    • 깔끔하게 빌드가 되지 않는다면 뭔가 문제가 있는것이니 자신의 환경설정에 문제가 없는지 다시 한번 확인한다.

디버기 설정

  • VMWARE (Virtual Box 도 가능)
  • Windows 10 x64 가상머신
    • 직접 설치해서 가져오길 권장
    • 아니면 Free Windows Image 에서 다운로드
  • Virtual KD
    • install 에 설명된 대로 Debugger/Debuggee 설정을 완료할 것

기타

  • macbook 사용자입니다. 어떻게 하죠?

    인터넷 찾아보면 두개의 windows 가상머신을 통해서 커널디버깅 가능한 시나리오가 많이 있습니다. 인터넷에서 찾아보고, 설정해오세요.

  • linux 사용자는요?

    마찬가지. virtual box 로 windows 인스턴스 두개 띄워서 가상머신 끼리 커널디버깅 가능합니다. 인터넷에서 찾아보고, 설정해오세요.

minifilter-hol's People

Contributors

somma avatar

Watchers

James Cloos avatar Fandu avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.