cơ chế hook trong windows

7 290 11
cơ chế hook trong windows

Đang tải... (xem toàn văn)

Thông tin tài liệu

LỜI NÓI ĐẦU3CHƯƠNG 1: HOOK LÀ GÌ?41.1: Hook là gì?41.2: Các mô hình Hook.41.3: Thành phần của Hook.51.3.1: Chuỗi Hook.51.3.2: Thủ tục Hook.51.3.3: Kiểu Hook.5CHƯƠNG 2: CƠ CHẾ, PHẠM VI VÀ CÀI ĐẶT HOOK72.1: Cơ chế hoạt động của Hook.72.2: Phạm vi của Hook.72.3: Cài đặt Hook.72.3.1: Cài đặt Hook72.3.2: Giải phóng Hook.7CHƯƠNG 3: KHẢ NĂNG VÀ ỨNG DỤNG CỦA HOOK93.1: Khả năng của Hook.93.2: Ứng dụng của Hook.9CHƯƠNG 4: KẾT LUẬN10

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ─────── * ─────── BÀI TẬP LỚN MƠN: HỆ ĐIỀU HÀNH ĐỀ TÀI: TÌM HIỂU CHẾ HOOK TRONG WINDOWS Giáo viên hướng dẫn : Sinh viên thực : Lớp Hà Nội, tháng 11 năm 2017 MỤC LỤC LỜI NĨI ĐẦU Trong thời buổi cơng nghệ nay, việc sử dụng máy tính phổ cập toàn giới Khả máy tính làm vượt xa so với người khả xử lí số liệu, giúp cho nhân loại đạt thành tựu vượt trội mà trước máy tính xuất người khơng thể làm Vì vậy, việc hiểu rõ tính máy tính giúp người dùng khai thác hết công sử dụng máy tính cách hiệu Cấu tạo máy tính ngày tối ưu hóa Từ máy tính xử lí thao tác kích thước cồng kềnh máy tính cá nhân nhỏ gọn siêu máy tính xử lí cho hệ thống máy tính lớn Tốc độ phát triển máy tính ngày nhanh để đáp ứng nhu cầu khám phá người Các tính máy tính ngày tối ưu hóa hiệu tốt Trong báo cáo này, đề cập đến chế quan trọng windows Đó chế Hook Hook chế quan trọng window, ứng dụng nhiều vào vấn đề thiết thực khác Một ứng dụng phổ biến mà người Việt biết đến gõ văn Tiếng Việt ví dụ vietkey, unikey, … CHƯƠNG 1: HOOK LÀ GÌ? Trước tìm hiểu Hook, nhặc lại chút q trình xử lý thơng điệp hệ điều hành Windows Q trình xử lý thơng điệp Windows diễn sau: Đầu tiên từ hành động người dùng click chuột, nhấn phím,… hệ điều hành chuyển hành động tương ứng thành thơng điệp (message) Rồi sau Windows đẩy message vào hàng đợi hệ thống (system queue) từ system queue message chuyển vào hàng đợi ứng dụng (application queue) Từ lúc ứng dụng lấy message hàng đợi ứng dụng để xử lý (thơng qua vòng lặp chờ thơng điệp – message loop) 1.1: Hook gì? Hook chế mà nhờ hàm chặn kiện (message, mouse actions, keystrokes) trước chúng gửi đến hàng đợi ứng dụng Các hàm thực số thao tác kiện, vài trường hợp định nghĩa lại hủy bỏ kiện mà chặn Một điểm quan trọng cần lưu ý hàm gọi Windows khơng phải ứng dụng Windows hỗ trợ nhiều loại Hook khác nhau, loại nhắm đến việc chặn bắt loại thơng điệp cụ thể Ví dụ, ứng dụng sử dụng WH_KEYBOARD để giám sát di chuyển thơng điệp bàn phím hệ thống Nhờ loại Hook mà chương trình can thiệp vào tạo khả gõ tiếng Việt soạn thảo văn Một loại Hook khác WH_MOUSE cho phép theo dõi thông điệp liên quan đến hoạt động chuột Hook xem tính mạnh mẽ Windows, cho phép ta đặt bẫy kiện Bằng cách sử dụng Hook, ta điều hướng ứng dụng tới thủ tục mà kiện quan tâm xuất kiện thuộc tiến trình bạn hay thuộc tiến trình khác 1.2: Các mơ hình Hook kiểu mơ hình Hook là: - Local Hook: kỹ thuật Hook dùng để bẫy kiện tiến trình cài đặt - Remote Hook: kỹ thuật Hook cho phép bẫy kiện thuộc tiến trình ứng dụng khác Trong mơ hình lại tồn hai kiểu Hook khác: • Thread-specific : kiểu Hook bẫy kiện luồng cụ thể • System-wide : bẫy kiện tất luồng tất tiến trình thi hành hệ thống Hook kỹ thuật xử lý thông điệp mạnh cho phép can thiệp sâu vào tiến trình khác nhau, làm ảnh hưởng tới tốc độ hệ thống, Hook system-wide, tất kiện hệ thống định hướng tới hàm đó, rõ ràng điều làm hệ thống chậm đáng kể Vì ta nên Hook thơng điệp thật cần thiết kết thúc việc Hook không dùng đến 1.3: Thành phần Hook 1.3.1: Chuỗi Hook Hệ thống khả hỗ trợ nhiều kiểu hook khác nhau, kiểu lại quy định cách thức truy nhập khác kỹ thuật điều khiển thông điệp Do vậy, hệ thống trì chuỗi hook cho kiểu hook khác Một chuỗi hook danh sách trỏ đặc biệt, trỏ tới hàm CallBack gọi hook procedure (thủ tục hook) Như kiện xuất hiện, hệ thống chuyển kiện tới thủ tục hook tham chiếu bới chuỗi hook theo thứ tự Vì phải thực xong thủ tục gọi thủ tục 1.3.2: Thủ tục Hook Thủ tục hook nơi thực thao tác sau bắt kiện mong muốn Các thủ tục hook phụ thuộc vào kiểu hook khác mà cấu trúc, chức khác thủ tục điều khiển thơng điệp, số khác sửa đổi thơng điệp, dừng tiến trình thơng điệp, ngăn cản thực hook đưa tới cửa sổ cuối … Thủ tục hook dạng chung sau: Code : LRESULT CALLBACK HookProc( int nCode, WPARAM wParam, LPARAM lParam ); Trong đó: - HookProc: tên đại diện thủ tục hook cài đặt - nCode : Đây mã hook, định tồn hoạt động thủ tục hook, mã hook phụ thuộc vào kiểu hook kiểu hook gán cho ký tự để thiết lập mã hook - wParam, lParam: Hai tham số chứa thông tin thông điệp hook phụ thuộc vào mã hook (nCode) Để dễ dàng sử dụng hook, Windows cung cấp giao diện API cho lập trình viên với hàm sau: - SetWindowsHookEx để cài đặt thủ tục hook vào chuỗi hook - UnhookWindowsHookEx để gỡ bỏ hook không cần đến - CallNextHookEx: Thủ tục hook định hay khơng tới thủ tục chuỗi hook, để từ thủ tục đưa tới thủ tục tiếp theo, ta sử dụng hàm CallNextHookEx Chú ý rằng, với thủ tục hook xử lý hook xảy tiến trình đơn khơng cần cài đặt thủ tục hook thư viện liên kết động (DLL) Tuy nhiên, với thủ tục hook xử lý kiện tất tiến trình bắt buộc phải cài đặt hook thư viện liên kết động (DLL) để tất tiến trình sử dụng thủ tục thư viện 1.3.3: Kiểu Hook Mỗi kiểu Hook cho phép ứng dụng điều khiển thông điệp theo cách khác kỹ thuật điều khiển thông điệp (message-handling mechanism) Dưới kiểu hook khác : Code : a WH_CALLWNDPROC WH_CALLWNDPROCRET Hook b WH_CBT Hook c WH_DEBUG Hook d WH_FOREGROUNDIDLE Hook e WH_GETMESSAGE Hook f WH_JOURNALPLAYBACK Hook g WH_JOURNALRECORD Hook h WH_KEYBOARD_LL Hook i WH_KEYBOARD Hook j WH_MOUSE_LL Hook k WH_MOUSE Hook l WH_MSGFILTER WH_SYSMSGFILTER Hook m WH_SHELL Hook CHƯƠNG 2: CHẾ, PHẠM VI VÀ CÀI ĐẶT HOOK 2.1: chế hoạt động Hook Hook procedure loại callback function (hàm hồi quy) Hệ thống gọi hàm kiện, thông điệp tương ứng với loại hook Mỗi loại hook hook procedure khác tham số cú pháp bên Với hook procedure khác việc xét giá trị tham số khác Như nói trên, nhiều loại hook (như chuột, bàn phím) hệ điều hành ln trì danh sách hook procedure cho loại Mỗi danh sách Hook procedure gọi hook chain Bản chất hook chain dãy trỏ hàm trỏ đến Hook procedure Khi hệ thống thực kiện đó, tìm kiếm hook chain tương ứng với kiện Nếu hook procedure phù hợp tìm thấy, hệ thống thực lấy lại quyền điều khiển sau hook chain kết thúc Vì hook procedure thực xong, phải thực việc chuyển quyền điều khiển cho hook procedure hook chain Tuy nhiên chế tùy thuộc vào loại hook Như số loại hook theo dõi thơng điệp, cho dù hook procedure chuyển quyền điều khiển cho hook procedure hay không, hệ thống tự động làm việc 2.2: Phạm vi Hook Dựa theo lọai hook bạn cài đặt hook procedure phạm vi cục (local hook/thread hook) tồn cục (global hook) Tất loại hook đểu cài đặt để trở thành global hook, số cho phép chọn lựa phạm vi hook dựa vào tham số hàm cài đặt (SetWindowsHookEx) Phân biệt đặc điểm hai loại hook (theo phạm vi ảnh hưởng): – Local hook (thread hook): ảnh hưởng phạm vi thread – Global hook: ảnh hưởng toàn hệ thống Trường hợp này, hook procedure phải chứa thư viện DLL 2.3: Cài đặt Hook 2.3.1: Cài đặt Hook Ta cài đặt thủ tục hook vào chuỗi hook việc gọi hàm SetWindowsHookEx kiểu hook gọi thủ tục, việc cài đặt hook thực tiến trình hệ thống Nếu sử dụng hook tồn cục phải đặt thư viện liên kết động (DLL) Ứng dụng muốn sử dụng thư viện liên kết động phải lấy handle thư viện Để nhận Handle thư viện liên kết động ta sử dụng hàm LoadLibrary với tham số tên thư viện Sau Handle DLL, ta lấy địa thủ tục hook thư viện liên kết động thông qua hàm GetProcAddress Sau thủ tục hook, sử dụng hàm SetWindowsHookEx để cài đặt thủ tục hook vào chuỗi hook 2.3.2: Giải phóng Hook Như nói hook nên bỏ không cần thiết cách sử dụng hàm UnhookWindowsHookEx Với thread-specific hook, việc sử dụng hàm UnhookWindowsHookEx giải phóng thủ tục hook Tuy nhiên với hook tồn tục (system-wide hook) hàm trả tự cho hàm DLL Việc gọi hàm LoadLibrary gọi ngữ cảnh tất tiến trình, nhiên hàm FreeLibrary khơng thể thực với tiến trình khác Vì vậy, khơng cách để giải phóng DLL Hệ thống giải phóng DLL tất tiến trình liên kết tới DLL phải kết thúc gọi FreeLibrary Giải pháp đặt cho vấn đề xây dựng hàm cài đặt thư viện DLL Bằng việc liên kết tới DLL, ứng dụng cài đặt hook Và DLL phải hàm giải phóng hook để giải phóng không cần đến – CHƯƠNG 3: KHẢ NĂNG VÀ ỨNG DỤNG CỦA HOOK 3.1: Khả Hook Hook cung cấp khả mạnh cho ứng dụng chạy Windows, ứng dụng dùng hook để : Xử lý định nghĩa tất thông điệp cho dialog box, message box, scroll bar, menu ứng dụng (Sử dụng hook WH_MSGFILTER) Xử lý định nghĩa tất thông điệp cho dialog box, message box, scroll bar, menu hệ thống (Sử dụng hook WH_SYSMSGFILTER) Xử lý định nghĩa tất thông điệp (bất chấp thơng điệp gì) hệ thống GetMessage PeekMessage gọi (Sử dụng hookWH_GETMESSAGE) Xử lý định nghĩa tất thông điệp (bất chấp thơng điệp gì) hệ thống SendMessage gọi (Sử dụng hook WH_CALLWNDPROC) Thu (Record) phát lại (Playback) kiện keyboard mouse (Sử dụng hook WH_JOURNALRECORD, WH_JOURNALPLAYBACK) Xử lý , định nghĩa hủy bỏ tất kiện bàn phím.(Sử dụng hookWH_KEYBOARD) Xử lý , định nghĩa hủy bỏ tất kiện chuột (Sử dụng hookWH_MOUSE) Tận dụng khả trên, ứng dụng sử dụng hook để : - Cung cấp phím trợ giúp F1 hỗ trợ menu, dialog box message box (Sử dụng hook WH_MSGFILTER) - Cung cấp tính thu phát kiện mouse keyboard, thường gọi macro (Sử dụng hook WH_JOURNALRECORD, WH_JOURNALPLAYBACK) - Theo dõi thông điệp để biết thông điệp gởi đến cửa sổ hành động làm phát sinh thông điệp tương ứng (Sử dụng hookWH_GETMESSAGE & WH_CALLWNDPROC) Chương trình Spy Win32™ SDK Windows NT thành công việc sử dụng hook để thực tác vụ Giả lặp tác vụ input keyboard mouse (Sử dụng hookWH_JOURNALPLAYBACK) Chỉ hook cho ta phương pháp chắn tin cậy để thực điều Nếu ta tiếp cận theo cách khác, gởi message chẳng hạn, Windows không cập nhật trạng thái mouse keyboard, điều dẫn đến hành động khơng mong muốn Còn hook sử dụng, kiện xử lý y hệt kiện vật lý 3.2: Ứng dụng Hook – Cho phép tạo chương trình hỗ trợ gõ tiếng Việt : Vietkey, Unikey… – Cho phép tạo chương trình Test tự động phần mềm (bằng cách phát sinh kiện phím, chuột giống người dùng nhập vào) – Cho phép thay đổi giao diện ứng dụng chạy – Cho phép xem phần trợ giúp ứng dụng việc nhấn phím đó, ví dụ nhấn F1 chẳng hạn – Và nhiều ứng dụng quan trọng khác CHƯƠNG 4: KẾT LUẬN ... hook (nCode) Để dễ dàng sử dụng hook, Windows cung cấp giao diện API cho lập trình viên với hàm sau: - SetWindowsHookEx để cài đặt thủ tục hook vào chuỗi hook - UnhookWindowsHookEx để gỡ bỏ hook. .. WH_CALLWNDPROCRET Hook b WH_CBT Hook c WH_DEBUG Hook d WH_FOREGROUNDIDLE Hook e WH_GETMESSAGE Hook f WH_JOURNALPLAYBACK Hook g WH_JOURNALRECORD Hook h WH_KEYBOARD_LL Hook i WH_KEYBOARD Hook j WH_MOUSE_LL Hook. .. Hook j WH_MOUSE_LL Hook k WH_MOUSE Hook l WH_MSGFILTER WH_SYSMSGFILTER Hook m WH_SHELL Hook CHƯƠNG 2: CƠ CHẾ, PHẠM VI VÀ CÀI ĐẶT HOOK 2.1: Cơ chế hoạt động Hook Hook procedure loại callback function

Ngày đăng: 26/11/2018, 19:12

Từ khóa liên quan

Mục lục

  • LỜI NÓI ĐẦU

  • CHƯƠNG 1: HOOK LÀ GÌ?

    • 1.1: Hook là gì?

    • 1.2: Các mô hình Hook.

    • 1.3: Thành phần của Hook.

      • 1.3.1: Chuỗi Hook.

      • 1.3.2: Thủ tục Hook.

      • 1.3.3: Kiểu Hook.

      • CHƯƠNG 2: CƠ CHẾ, PHẠM VI VÀ CÀI ĐẶT HOOK

        • 2.1: Cơ chế hoạt động của Hook.

        • 2.2: Phạm vi của Hook.

        • 2.3: Cài đặt Hook.

          • 2.3.1: Cài đặt Hook

          • 2.3.2: Giải phóng Hook.

          • CHƯƠNG 3: KHẢ NĂNG VÀ ỨNG DỤNG CỦA HOOK

            • 3.1: Khả năng của Hook.

            • 3.2: Ứng dụng của Hook.

            • CHƯƠNG 4: KẾT LUẬN

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan