Trao đổi với tôi

http://www.buidao.com

11/12/09

[Rootkit] Làm sao để build 1 driver

Làm sao để build 1 driver

Post tuannq 22-07-2008, 11:49

Cách để build 1 driver (programming in kernel mode)

Cách dễ dàng và tiêu chuẩn là sử dụng công cụ từ bộ Windows DDK của Microsoft, xem tại đây viewtopic.php?f=41&t=675

Để có thể chạy BUILD utility, máy của bạn phải có đủ những phần mềm sau:
1. Microsoft Visual C++
2. DDK build environments


Để chạy BUILD, trước tiên chạy "Free Build Environment" hoặc "Checked Build Environment" trong mục Windows® 2000 DDK (sau khi cài đặt DDK, trong Start menu -> Programs sẽ có mục này). Cửa sổ DOS command prompt sẽ mở ra, trong đó các biến môi trường (environmet variables) đã được chỉ định trước cần thiết cho qua trình BUILD.

Mọi chi tiết về lệnh BUILD, bạn có thể tìm hiểu bằng cách gõ "BUILD -?", một loạt những tùy chọn và cú pháp của nó sẽ hiển thị đầy đủ ra cho bạn thấy.

Bây giờ bạn di chuyển đến thư mục chứa source code của bạn, và gõ "BUILD" là xong, driver là file .SYS sẽ được tạo ra trong cùng thư mục chứa source code

Thực ra lệnh "BUILD" trống không như thế này sẽ tương đương với "BUILD -cZ" (chữ "cZ" nhớ gõ đúng hoa thường nha).
Lệnh này sẽ tạo ra 1 bản "clean build", tức là xóa hết các file của bản build cũ (nếu có) trước khi build lại bản mới

Sự khác nhau của "Free Build Environment" và "Checked Build Environment"

Để build 1 driver, bạn có thể sử dụng 1 trong 2 lệnh trên (từ Start menu->Programs->Windows® 2000 DDK), file .SYS tạo ra đều có thể dùng được. Tuy nhiên có sự khác nhau giữa chúng, đó là:
- Free build (hay Retail build) để tạo bản driver đến cho người dùng cuối (mọi người thường gọi là release đó mà).
Trình biên dịch sẽ thực hiện quá trình tối ưu/rút gọn code tối đa: các phát biểu ASSERTS bị bỏ đi, thông tin debug cũng bị bỏ đi.
File .SYS tạo ra sẽ nhỏ hơn và nhanh hơn, và dùng memory ít hơn. CHo nên bạn không thể dùng Free build cho quá trình debug được.

- Checked build tạo ra bản driver ở mode debug, dùng cho developer kiểm tra/tìm lỗi. Đương nhiên như vậy trình biên dịch sẽ không thực hiện bất kỳ sự rút gọn code nào (bạn viết sao thì nó dịch thế). Bản build này sẽ được trình dịch khuyến mãi thêm một số kiểm tra lỗi (mặc dù bạn không viết trong code), nên có thể giúp developer phát hiện các lỗi trong code như memory leak chẳng hạn,..

Link: http://www.codeprovn.com/forums/viewtopic.php?f=80&t=818