2011-01-28 58 views
7

Tôi nhớ dự án đại học năm cuối của mình, tôi đã viết một trình theo dõi C#, tuy nhiên, khi tôi so sánh nó với ứng dụng Microsoft ProcessMonitor (tôi không thể nhớ tên chính xác của nó, nhưng là một công ty được mua bởi MSoft), tôi đã không bắt được nhiều cuộc gọi đăng ký.Theo dõi đăng ký, bao gồm truy cập đăng ký chế độ lõi?

Đây có phải là vì tôi đang sử dụng trình bao bọc C# và như vậy, nó sẽ chỉ bắt được truy cập đăng ký chế độ người dùng?

tôi đã sử dụng wrapper này: http://www.codeproject.com/KB/DLL/EasyHook64.aspx

Để bắt kernel mode registry truy cập tôi sẽ phải viết bằng C++?

+2

Bạn đang nghĩ đến việc RegMon từ Sysinternals đã được thay thế bằng Process Monitor http://technet.microsoft. com/en-us/sysinternals/bb896645 –

+0

Trình theo dõi quá trình là bộ tôi đã sử dụng, có! – Tom

+1

Không phải phiên bản trước của các tiện ích SysInternals này có kèm theo mã nguồn hay tôi đang mơ? –

Trả lời

9

Process Monitor là sử dụng trình điều khiển nhân hoặc ETW (xem bên dưới) để nắm bắt các sự kiện đăng ký. Tôi biết rằng Process Monitor sử dụng ETW cho một số dữ liệu của nó (như thông tin mạng).

Cơ chế hooking hoặc rút vòng API như EasyHook thường hoạt động ở cấp API Win32 (ví dụ: RegSetValue hoặc RegCreateKeyEx trong ADVAPI32.dll). Vì điều này, nó có giới hạn mà bạn đề cập: chỉ các truy cập đăng ký chế độ người dùng mới được chụp. Ngoài ra, việc lấy cắp API thường được thực hiện trên cơ sở từng quy trình, do đó bạn phải tự chèn mình vào từng quy trình mà bạn muốn thu thập dữ liệu. Bạn cũng sẽ phải theo dõi quá trình tạo nếu bạn muốn thực sự nắm bắt tất cả các truy cập trên toàn hệ thống.

Event Tracing for Windows (ETW) sẽ là một cách dễ dàng (tương đối) để nắm bắt tất cả các truy cập đăng ký. Ý tưởng cơ bản đằng sau ETW là hệ điều hành, thời gian chạy, thư viện và thậm chí các nhà phát triển ứng dụng hàng ngày có thể thêm công cụ cụ thể vào mã của họ để ghi lại dữ liệu về các sự kiện và kịch bản thú vị. Truy tìm này có chi phí thấp và có thể dễ dàng được thu thập. ETW đã được khoảng một thời gian, nhưng nó đã thực sự đạt được lực kéo trong suốt hạt nhân bắt đầu với Vista. Hầu như tất cả các hệ thống con hạt nhân lớn giờ đây đều được thiết kế với ETW. Nó cũng là cơ sở cho Nhật ký sự kiện Windows.

ETW đã chia sẻ công bằng của các hành lý và thiếu tài liệu đáng kể trong một số lĩnh vực, nhưng nếu bạn quan tâm, bạn có thể kiểm tra như sau:

Để bắt kernel mode registry truy cập tôi sẽ phải viết bằng C++?

Không, sử dụng thư viện TraceEvent được đề cập ở trên, bạn có thể sử dụng C# để chụp và phân tích truy cập đăng ký chế độ hạt nhân và người dùng trên toàn hệ thống.

+1

Thú vị, vì vậy sử dụng ETW, tôi có thể chụp các truy cập tệp trong thời gian thực không? –

+1

@ChibuezeOpata: Về cơ bản, có. Sẽ có một số thời gian chờ phụ thuộc vào tải hệ thống và số lượng sự kiện ETW đang được xử lý, nhưng trong trường hợp chung, bạn sẽ có thể thấy quyền truy cập tệp khi chúng đang diễn ra. ETW là cực kỳ mạnh mẽ trong lĩnh vực này. –

3

Để nắm bắt quyền truy cập đăng ký chế độ lõi, bạn phải viết trình điều khiển trong C++, không có cách nào khác để thực hiện điều đó. Process Monitor là một trình điều khiển, đó là lý do tại sao nó có thể nắm bắt cả truy cập của người dùng và hạt nhân.

Bạn có thể tải về phiên bản cũ của Regmon và Filemon đây:

http://www.decuslib.com/decus/vmslt00a/nt/filemon.htm

http://www.decuslib.com/decus/vmslt00a/nt/regmon.htm

+0

+1 cho rõ ràng trên ProcMon, nhưng RE: "không có cách nào khác để làm điều đó" - hạt nhân Windows đã được xây dựng trong thiết bị ETW cho các sự kiện đăng ký. Thậm chí còn có thể nhận được các ngăn xếp chế độ người dùng và hạt nhân đầy đủ cho các truy cập đăng ký. –

+1

Điều đó không có trong XP, đó là lý do tôi không đề cập đến. –

Các vấn đề liên quan