Trao đổi với tôi

http://www.buidao.com

11/5/09

[Rootkit] Tích hợp DDKBUILD vào Visual Studio 2008

[Kernel-Mode Driver Programming] Tích hợp DDKBUILD vào Visual Studio 2008

Tìm hiểu cấu trúc thư mục WDK

Bạn có thể tham khảo file help của WDK để biết chi tiết về cấu trúc thư mục của WDK:

clip_image028

Ở đây, tôi chỉ tóm tắt lại các thư mục cần thiết trong quá trình build driver mà thôi

  • Thư mục gốc WDK (ví dụ, C:\WinDKK\7600.16385.0 có file notes của bản WDK được release (Relnote.htm). File ghi chú này ghi những thông tin mới nhất về WDK và thường bao gồm luôn các thông tin về những thay đổi các file header cũng như là môi trường build driver. Mặc dù bạn có thể bỏ qua không xem file này, nhưng tôi khuyên bạn nên bỏ chút thời gian ra để đọc những dòng ghi chú này,
  • Thư mục \bin chứa các công cụ WDK để build driver như là các thủ tục, chương trình, dòng lệnh để build, link, ... mà nó hỗ trợ môi trường build WDK. Các file trong thư mục này bao gồm compiler, linker, và một số file hỗ trợ khác. bạn sẽ không truy xuất trực tiếp hoặc chỉnh sửa các file trong thư mục này.
  • Thư mục \debug chứa các phiên bản của các file symbol liên quan tới hệ thống và HAL. Những file này có thể giúp bạn khi bạn muốn debug một driver
  • Để bíêt thêm thông tin về những phiên bản đã được chỉnh tra và các symbol file, và làm thế nào để sử dụng chúng, hãy xem Check Build of Windows.
  • Thư mục \inc chứa các tập tin header và include bạn cần sử dụng để build driver sử dụng môi trường WDK.

Directory

Contents

\Bin

WDK build tools

\Debug

Files used during debugging

\Help

WDK documentation

\Inc

WDK headers

\Lib

Import libraries

\Src

WDK samples

II. Tích hợp WinDDK với Visual Studio

Bởi vì WinDDK là bộ công cụ build driver ở chế độ dòng lệnh. Nếu theo cách thông thường (chưa tích hợp) thì bạn phải viết code bằng một trình soạn thảo text như Notepad hay cao cấp hơn nữa là Notepad++. Sau đó, chép các file mã lệnh này vào thư mục được chỉ định là BASEDIR của WinDDK (thường là thư mục cài đặt WDK), sau đó chạy chương trình build.exe để tiến hành build driver.

→ Để cho bạn quen thuộc với cách lập trình thông thường là code mã nguồn trên môi trường phát triển tích hợp, thường gọi là IDE và quen thuộc với việc compile, build, debug, ... trên IDE, nên ta phải tích hợp WinDDK vào Visual Studio – một IDE thông dụng.

Để tích hợp WinDDK vào Visual Studio, thì bạn cần phải:

  • Đã cài đặt Windows Driver Kit (WinDKK hay WDK)
  • Đã cài đặt Visual Studio (6.0, 2k5, 2k8)
  • Thiết lập biến môi trường cho WinDDK
  • Bởi vì việc tích hợp này rất phức tạp, ta phải viết một file script để enable. Đối với người mới bắt đầu học code driver thì việc viết ra file script này rất khó khăn → cho nên ta phải sử dụng script đã được viết sẵn và được cung cấp bởi một số add-in hay extension (công cụ mở rộng) hỗ trợ.

Trong bài viết này, tôi sẽ hướng dẫn bạn tích hợp add-in DDKBUILD này với Visual Studio để cho bạn có thể code driver một cách quen thuộc và chuyên nghiệp hơn.

Thiết lập biến môi trường

Click chuột phải vào My Computer → Properties → Advanced → Environment Variables → User variables for User Account, thiết lập 2 biến môi trường sau:

  • Variable Name: WINDDK
  • Variable Value: C:\WINDDK

clip_image030

Tùy thuộc vào HĐH bạn đang sử dụng mà thiết lập tên của biến môi trường, bạn tham khảo tại đây http://www.hollistech.com/Resources/ddkbuild/ddkbuildhelp3_15.htm

Trong bài viết này, tôi sử dụng HĐH Windows XP SP3, nên tôi set biến môi trường là WHLBASE, và Variable value là C:\WINDDK\7600.16385.0

clip_image032

Chép file ddkbuild.bat vào thư mục C:\WinDDK

Liên kết library file và include file của WDK vào Visual Studio

Bạn có thể thực hiện việc liên kết library và include file của WinDDK vào VS ở bước này hoặc ở bước 3 (tức sau khi tạo project rồi mới thêm). Thông thường các lập trình viên sẽ add ngay từ lúc đầu.

Liên kết Include file

Vào menu Tools → Options → Projects and Solutions → VC++ Directories, chọn Show directories for: Include files. Nhấn chọn entry cuối cùng trong danh sách:

clip_image034

Nhấn nút clip_image036 để add thêm thư mục vào 2 mục sau:

  • C:\WinDDK\7600.16385.0\inc\api
  • C:\WinDDK\7600.16385.0\inc\ddk

clip_image038

Liên kết Library file

Thực hiện tương tự như trên, nhưng chọn Show directories file là Library files và thêm vào C:\WinDDK\7600.16385.0\lib\wxp\i386

clip_image040

Liên kết Executable file

Thực hiện tương tự như trên, nhưng chọn Show directories file là Executable files và thêm vào C:\WinDDK\

clip_image042


Tạo project

Khởi động Visual Studio 2008, chọn File → New → Project:

  • Project types : Visual C++ → General
  • Templates : Makefile Project
  • Name : TestDriver
  • Bỏ dấu check clip_image044

clip_image046

Nhấn OK, hộp thoại Makefile Project Wizard xuất hiện → nhấn Next

clip_image048

Bạn thiết lập Build command line và Rebuild command line như sau:

  • Build Command Line : ddkbuild –WLHXP checked .
  • Rebuild All Command Line : ddkbuild – WLHXP checked . –ceZ

Chú ý: có khoảng trắng giữa từ checked và dấu .

Nhấn Finish.

Link: http://nhatphuongle.spaces.live.com/blog/cns!320FF19317F0C9A2!728.entry