- Lập trình C trên Windows. - Kỹ thuật lập trình Hook (phụ lục). - Khoa CNTT – ĐH.KHTN.Tp.HCM Email: nttuan@ fit.hcmuns.edu.vn. - Lập trình sự kiện. - Giới thiệu kỹ thuật Hook. - Minh họa cách lập trình Hook. - C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM 3. - Các loại Hook. - Thủ tục Hook (Hook procedure). - Chuỗi Hook (Hook chain). - C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM 5. - Giới thiệu kỹ thuật Hook – Hook là gì. - Hook là một cơ chế trong lập trình sự kiện,…. - …cho phép ứng dụng có thể cài đặt một hàm giám sát vào quá trình lưu chuyển các thông điệp. - Æ ứng dụng có thể chặn và xử lý các thông điệp trước khi nó đến được cửa sổ/ứng dụng đích. - C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM 7. - Có 2 cách cài đặt Hook:. - Cài đặt cục bộ (Thread Hook): hàm giám sát được cài vào sau Thread message Queue Æ có tác dụng giám sát tất cả các thông điệp trong một tiểu trình hay một ứng dụng cụ thể. - Cài đặt toàn cục (Global Hook): hàm giám sát được cài vào sau Systemd message Queue Æ có tác dụng giám sát tất cả các thông điệp trong toàn hệ thống. - Với Global Hook, hàm cài đặt phải được lưu trong một DLL. - Giới thiệu kỹ thuật Hook – Mục tiêu của Hook. - Giám sát bàn phím: các ứng dụng gõ tiếng Việt, điều khiển thiết bị bằng bàn phím,…. - Giám sát mouse: Click’n See. - C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM 9. - Giới thiệu kỹ thuật Hook – Các loại Hook. - WH_KEYBOARD: Hook giám sát thông điệp từ bàn phím: WM_KEYDOWN, WM_KEYUP. - WH_MOUSE: Hook giám sát thông điệp từ chuột. - WH_GETMESSAGE: Hook giám sát thông điệp chung (keyboard, mouse, hay các message khác). - Giới thiệu kỹ thuật Hook – Các loại Hook ?...(tt). - WH_JOURNALRECORD: giám sát và ghi nhận lại (record) các thông điệp từ chuột và bàn phím. - C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM 11. - Giới thiệu kỹ thuật Hook – Thủ tục Hook (Hook procedure). - Thủ tục Hook: là hàm dùng để giám sát các thông điệp mà ứng dụng cài vào hệ thống. - Giới thiệu kỹ thuật Hook – Thủ tục Hook…(tt). - Có thể cài đặt nhiều Hook Procedure bằng cách dùng hàm SetWindowsHook hay SetWindowsHookEx. - Hook Procedure cài sau sẽ luôn nằm ở vị trí đầu tiên trong dãy thủ tục Hook. - C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM 13. - Giới thiệu kỹ thuật Hook – Chuỗi Hook (Hook chain). - Chuỗi Hook: là một dãy các thủ tục Hook được liên kết theo thứ tự độ ưu tiên thực hiện giảm dần. - HĐH Windows quản lý các chuỗi Hook riêng biệt cho từng loại Hook. - Khi có 1 message xảy ra, Windows sẽ gởi message đó đến thủ tục Hook đầu tiên trong chuỗi Hook có loại tương ứng…. - …message sẽ được chuyển lần lượt đến các thủ tục Hook kế tiếp sau đó. - Giới thiệu kỹ thuật Hook – Chuỗi Hook…(tt). - C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM 15. - Cài đặt thủ tục Hook. - Ví dụ thủ tục Hook. - Chuyển message cho thủ tục Hook kế tiếp. - Hủy bỏ cài đặt Hook. - Minh họa cách lập trình Hook - Các hàm thao tác với Hook. - C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM 17. - Minh họa cách lập trình Hook - Cài đặt thủ tục Hook. - Một ứng dụng cần phải thực hiện việc Cài đặt thủ tục Hook khi muốn giám sát message. - Hàm SetWindowsHookEx sẽ cài đặt thủ tục Hook vào điểm bắt đầu của chuỗi Hook. - hookProc: con trỏ đến thủ tục Hook. - Trường hợp Global Hook, thủ tục Hook phải lưu trong DLL. - với Thread Hook, thủ tục Hook có thể chứa trong chính thread tương ứng. - hIns: handle của module chứa thủ tục Hook. - Minh họa cách lập trình Hook - Cài đặt thủ tục Hook…(tt). - Ví dụ 1: cài đặt Keyboard Hook toàn cục (load-time) SetWindowsHookEx(WH_KEYBOARD,. - Ví dụ 2: cài đặt Keyboard Hook toàn cục (run-time) HOOKPROC fnKeyboardProc;. - Ví dụ 3: cài đặt Keyboard Hook cục bộ. - C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM 19. - Minh họa cách lập trình Hook - Ví dụ thủ tục Hook Ví dụ 4: Thủ tục hook cho Keyboard. - Lập trình Hook - Chuyển message cho thủ tục Hook kế tiếp. - Sau khi thực hiện xong, thủ tục Hook sẽ gọi hàm CallNextHookEx để chuyển message đến thủ tục Hook kế tiếp trong chuỗi Hook. - code, wParam, lParam: các giá trị của thủ tục Hook hiện tại truyền cho thủ tục Hook kế tiếp trong chuỗi Hook. - C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM 21. - Lập trình Hook - Chuyển message cho thủ tục Hook kế tiếp…. - Thủ tục Hook có thể không chuyển thông điệp đến thủ tục Hook kế tiếp trong chuỗi Hook. - Lập trình Hook - Hủy bỏ cài đặt Hook. - Sử dụng kỹ thuật Hook sẽ làm giảm khả năng thực thi của hệ thống. - C4W - Hook - Nguyen Tri Tuan - DH.KHTN Tp.HCM 23
Xem thử không khả dụng, vui lòng xem tại trang nguồn hoặc xem
Tóm tắt