itprofes
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Cơ chế Hook và ứng dụng to lớn của nó (Phần 1)

Go down

Cơ chế Hook và ứng dụng to lớn của nó (Phần 1) Empty Cơ chế Hook và ứng dụng to lớn của nó (Phần 1)

Bài gửi  admin 7/5/2010, 10:10 am

Bài viết liên quan: Cơ chế Hook và ứng dụng to lớn của nó (Phần 2)



hnay đang kiếm guide để làm autoPlay cho vltk thì đc biết đến cái này, ngồi 1 lúc ngẫm ra mấy thứ lên đây chia sẻ cùng a e.

chắc mọi người đã nghe qua nhiều về nó, ví dụ làm Vietkey hay Unikey đều phải sử dụng cơ chế này

ngoài ra cơ chế này còn sử dụng để làm keylogger, autoPlay của các game oline...

đầu tiên, em xin nói qua về cơ chế thông điệp của Windows
- khi 1 sự kiện xảy ra tại cửa sổ con (click chuột, gõ 1 phím...), HDH sẽ phát ra 1 thông điệp tới cửa sổ cha, ở đây thông điệp sẽ đc hàm xử lý của cửa sổ cha xử lý. Tùy theo thông điệp đc gửi đến là gì và mục đích của người lập trình mà cách thức xử lý sẽ khác nhau.

- hàm xử lý là hàm dùng để xử lý các thông điệp đã đc chặn, bắt

- có thể tác động đến 1 cửa sổ bất kỳ bằng cách gửi thông điệp đến chính cửa sổ đó. Khi đó nó sẽ tiếp nhận thông điệp này và thực hiện các yêu cầu của thông điệp.
khi học các hàm API mọi người sẽ nghĩ ngay đến hàm SendMessage( )
- 1 cửa sổ có thể là 1 button, 1 edit text, 1 hộp thoại,...

tiếp theo, em xin nói về bản chất của Hook (đây là theo "ngu ý" của em thôi): Hook thực chất là bẫy & sửa các thông điệp của 1 cửa sổ bất kỳ trước khi các thông điệp này đc hàm xử lý của cửa sổ đó xử lý.
nói cách khác, khi HDH gửi 1 thông điệp đến cửa sổ cha, Hook sẽ chặn các thông điệp này, thay đổi chúng...tùy theo mục đích của người lập trình.

ví dụ khi 1 ứng dụng đc khởi động (ví dụ Yahoo chẳng hạn), thông điệp WM_CREATE sẽ đc phát ra, khi đó nếu ta dùng Hook để bắt lấy thông điệp này và thay nó bằng thông điệp WM_DESTROY thì ứng dụng đó hiển nhiên sẽ tự động exit! (giống kavo đó)

vậy tại sao dùng cơ chế chặn bắt thông thường kô đc???:Smlie (105):
sẽ có ý kiến cho rằng có thể dùng hàm SendMessage( ) để gửi thông điệp WM_DESTROY tới 1 ứng dụng nào đó để làm cho ứng dụng đó tự exit! Hoặc gửi thông điệp WM_GETTEXT tới 1 edit text để lấy đc nội dung của edit text đó! Như vậy thì làm keylogger hay virus sẽ đơn giản hơn bao nhiêu Very Happy
nếu ai đã biết về hàm này thì sẽ biết là hàm này yêu cầu HANDLE của cửa sổ tiếp nhận thông điệp, hiểu nôm na thế này: thông điệp là 1 gói bưu kiện, HDH là ngưởi gửi bưu kiện, cửa sổ đang đc nói đến là người nhận bưu kiện, HANDLE của cửa sổ là dịa chỉ của ngươi nhận, còn hàm SendMessage( ) là công ty chuyển phát.
tuy nhiên có những lúc ta kô chỉ cần hàm sendmessage này, bởi hàm này chỉ có tác dụng gửi thông điệp đi chứ kô có tác dụng "nghe" thông điệp được gửi đến cho chương trình.

do đó, sử dụng cơ chế chặn bắt thông thường thì hầu như là vô tác dụng! => phải dùng Hook thôi Smile

cách cài đặt Hook thì em kô nói ở đây vì kiếm trên google chắc không thiếu Very Happy

bài sau em xin nói về 1 ứng dụng quan trọng khác của Hook đó là "lây" code (inject code) vào 1 ứng dụng bên ngoài.
admin
admin
Thiếu Úy III
Thiếu Úy III

Tổng số bài gửi : 627
Diem : 6517
Thank : 4
Join date : 24/03/2010
Đến từ : Bỉm Sơn - Thanh hóa

https://itprofes.forumvi.com

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết