Bài giảng Lập trình Windows - Chương 10: Lập trình Hook (2016)
Số trang: 6
Loại file: pdf
Dung lượng: 111.04 KB
Lượt xem: 10
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng "Lập trình Windows - Chương 10: Lập trình Hook" cung cấp cho người học các kiến thức: Cơ chế Hook trong Windows, các bước lập trình Hook, xây dựng DLL cho hàm Hook, đăng ký hook. Mời các bạn cùng tham khảo nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình Windows - Chương 10: Lập trình Hook (2016)Chương 10Lập trìnhHOOK110.1. Cơ chế Hook trong WindowsHook là một kỹ thuật cho phép một hàm có thể nhận và xử lý các sự kiện (thôngđiệp, thao tác chuột, gõ phím) trước khi chúng được chuyển đến các ứng dụng.Mỗi sự kiện có thể được xử lý (Hook) bởi nhiều hàm khác nhau, các hàm này tạonên chuỗi hàm xử lý sự kiện, gọi là hook chain, các hàm này xử lý các sự kiện theothứ tự đã đăng ký.Minh họa cơ chế Hook theo hook chain:Hàm_1Ứng dụng App1Hàm_2Sự kiệnMouseỨng dụng App2Hàm_3Hàm_nỨng dụng App3Hook chain210.1. Cơ chế Hook trong WindowsĐể lập trình hook cơ bản chúng ta phải thực hiện hai bước là viết hàm xửlý sự kiện và đăng ký hook. Có 2 phạm vi đăng ký hook, trong chương trình (local) và toàn bộ hệ thống(global). Đối với phạm vi local thì sự kiện chỉ bị chặn và xử lý liên quan đếnchương trình, còn global sẽ bị chặn và xử lý mọi nơi trong hệ thống. Với phạm vi local chỉ cần lập trình một hàm xử lý sự kiện trong chươngtrình, thực hiện đăng ký cũng trong chương trình này. Đối với global thìhàm xử lý sự phải lập trình trong một môđun thư viện DLL, sau đó dùngmột chương trình khác để đăng ký. Chúng ta sẽ thực hiện dạng global. Có thể khóa một sự kiện bằng cách chặn xử lý sự kiện đó và không gọi tớicác hàm xử lý của hệ thống. Minh họa ở phần cơ chế hook chain.310.2. Các bước lập trình HookHai bước thực hiện lập trình hook như sau:Bước 1: Xây dựng một thư viện DLL, chứa hàm xử lý sự kiện hookBước 2: Lập chương trình đăng ký và hủy bỏ hookChương trình Minh họa như sau:Thư viện DLLHàm xử lýsự kiện hookNạp thư viện DLLvào chương trìnhHàm xử lýsự kiện hookLấy địa chỉ hàmxử lý sự kiện hookĐăng ký hookHủy bỏ đăng ký410.3. Xây dựng DLL cho hàm HookCó thể xây dựng hàm xử lý sự kiện hook cùng trong chương trình đăng ký, tuynhiên nó chỉ có ảnh hưởng tới luồng trong tiến trình của chương trình. Để có ảnhhưởng tới mọi luồng chúng ta phải viết trong thư viện DLL.Mẫu hàm xử lý sự kiện hook:LRESULT CALLBACK HookProc( int nCode, WPARAM wParam, LPARAM lParam );Các sự kiện và ý nghĩa tham số:- Sự kiện Mouse+ nCode : cho biết sự kiện chuột, HC_ACTION nếu người dùng tác động,HC_NOREMOVE nếu thông điệp được gửi bởi hàm PeekMessage.+ wParam : giá trị thông điệp chuột+ lParam : trỏ tới cấu trúc MOUSEHOOKSTRUCT gồm { POINT, HWND,... }- Sự kiện Keyboard+ nCode : cho biết sự kiện bàn phím, HC_ACTION nếu người dùng tác động,HC_NOREMOVE nếu thông điệp được gửi bởi hàm PeekMessage.+ wParam : mã phím ảo của phím được gõ, VK_...+ lParam : một số thông tin liên đến phím gõ.Hàm trả về giá trị 1 nếu muốn khóa sự kiện, ngược lại hãy gọi và trả về giá trị hàmCallNextHookEx( HHOOK, nCode, wParam, lParam);5
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình Windows - Chương 10: Lập trình Hook (2016)Chương 10Lập trìnhHOOK110.1. Cơ chế Hook trong WindowsHook là một kỹ thuật cho phép một hàm có thể nhận và xử lý các sự kiện (thôngđiệp, thao tác chuột, gõ phím) trước khi chúng được chuyển đến các ứng dụng.Mỗi sự kiện có thể được xử lý (Hook) bởi nhiều hàm khác nhau, các hàm này tạonên chuỗi hàm xử lý sự kiện, gọi là hook chain, các hàm này xử lý các sự kiện theothứ tự đã đăng ký.Minh họa cơ chế Hook theo hook chain:Hàm_1Ứng dụng App1Hàm_2Sự kiệnMouseỨng dụng App2Hàm_3Hàm_nỨng dụng App3Hook chain210.1. Cơ chế Hook trong WindowsĐể lập trình hook cơ bản chúng ta phải thực hiện hai bước là viết hàm xửlý sự kiện và đăng ký hook. Có 2 phạm vi đăng ký hook, trong chương trình (local) và toàn bộ hệ thống(global). Đối với phạm vi local thì sự kiện chỉ bị chặn và xử lý liên quan đếnchương trình, còn global sẽ bị chặn và xử lý mọi nơi trong hệ thống. Với phạm vi local chỉ cần lập trình một hàm xử lý sự kiện trong chươngtrình, thực hiện đăng ký cũng trong chương trình này. Đối với global thìhàm xử lý sự phải lập trình trong một môđun thư viện DLL, sau đó dùngmột chương trình khác để đăng ký. Chúng ta sẽ thực hiện dạng global. Có thể khóa một sự kiện bằng cách chặn xử lý sự kiện đó và không gọi tớicác hàm xử lý của hệ thống. Minh họa ở phần cơ chế hook chain.310.2. Các bước lập trình HookHai bước thực hiện lập trình hook như sau:Bước 1: Xây dựng một thư viện DLL, chứa hàm xử lý sự kiện hookBước 2: Lập chương trình đăng ký và hủy bỏ hookChương trình Minh họa như sau:Thư viện DLLHàm xử lýsự kiện hookNạp thư viện DLLvào chương trìnhHàm xử lýsự kiện hookLấy địa chỉ hàmxử lý sự kiện hookĐăng ký hookHủy bỏ đăng ký410.3. Xây dựng DLL cho hàm HookCó thể xây dựng hàm xử lý sự kiện hook cùng trong chương trình đăng ký, tuynhiên nó chỉ có ảnh hưởng tới luồng trong tiến trình của chương trình. Để có ảnhhưởng tới mọi luồng chúng ta phải viết trong thư viện DLL.Mẫu hàm xử lý sự kiện hook:LRESULT CALLBACK HookProc( int nCode, WPARAM wParam, LPARAM lParam );Các sự kiện và ý nghĩa tham số:- Sự kiện Mouse+ nCode : cho biết sự kiện chuột, HC_ACTION nếu người dùng tác động,HC_NOREMOVE nếu thông điệp được gửi bởi hàm PeekMessage.+ wParam : giá trị thông điệp chuột+ lParam : trỏ tới cấu trúc MOUSEHOOKSTRUCT gồm { POINT, HWND,... }- Sự kiện Keyboard+ nCode : cho biết sự kiện bàn phím, HC_ACTION nếu người dùng tác động,HC_NOREMOVE nếu thông điệp được gửi bởi hàm PeekMessage.+ wParam : mã phím ảo của phím được gõ, VK_...+ lParam : một số thông tin liên đến phím gõ.Hàm trả về giá trị 1 nếu muốn khóa sự kiện, ngược lại hãy gọi và trả về giá trị hàmCallNextHookEx( HHOOK, nCode, wParam, lParam);5
Tìm kiếm theo từ khóa liên quan:
Bài giảng Lập trình Windows Lập trình Windows Lập trình Hook Cơ chế Hook trong Windows Các bước lập trình Hook Xây dựng DLL cho hàm Hook Đăng ký hookTài liệu liên quan:
-
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 187 0 0 -
bảo mật mạng các phương thức giả mạo địa chỉ IP fake IP
13 trang 160 0 0 -
information technology outsourcing transactions process strategies and contracts 2nd ed phần 3
65 trang 111 0 0 -
Excel add in development in c and c phần 9
0 trang 110 0 0 -
Giáo trình Lập trình Windows 1 - Trường CĐN Đà Lạt
117 trang 96 0 0 -
Hướng dẫn lập trình OpenGL căn bản
33 trang 53 0 0 -
The CISA Prep Guide Mastering the Certified Information Systems Auditor Exam phần 1
60 trang 43 0 0 -
thủ thuật windows XP hay nhất phần 2
14 trang 42 0 0 -
Bài giảng Lập trình Windows nâng cao: ADO.NET - Bùi Công Danh
57 trang 38 0 0 -
Báo cáo nghiên cứu khoa học: Nghiên cứu phần mềm bãi giữ xe thông minh
37 trang 34 0 0