-
17-01-2009, 04:50 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Đang ở
- 89 Tam Trinh - Hoàng Mai - Hà Nội
- Bài viết
- 0
Từng bước sử dụng kỹ thuật Override hàm API
có đọc ở đây
II – Tại sao phải sử dụng kỹ thuật override trên Windows ?
Nếu sử dụng kỹ thuật override thì developer có thể can thiệp vào (tức là có thể chen vào) các tiến trình thực thi (process) các thao tác xử lý của riêng mình bằng cách đón đợi thông báo gọi hàm API tương ứng và chuyển hướng điều khiển tới hàm của riêng developer. Khi không cần thiết thì cơ chế override có thể được gỡ bỏ và các trình ứng dụng có thể trở về thực thi bình thường. Override là hữu dụng trong trường hợp developer muốn bổ xung thêm hoặc sửa đổi một số tính năng hoạt động của tất cả hay chỉ một số ứng dụng (application) đang chạy trong hệ thống (hoặc tôi muốn làm một việc gì đó đen tối !!!???)
VD như bước 1 làm gì,bước 2 làm gì không,thank youView more random threads:
- Hook các ứng dụng không có cửa sổ
- Check class của 1 soft
- Bảo vệ chương trình không bị Entask bởi Entask manage.
- Hook Keyboard
- Hook Nhận biết cửa sổ Active hay không ?
- Tại sao hàm while không sử dụng được trong hàm của file DLL hook?
- Bắt sự kiện save file trong Window
- Liệt kê các dll inject với VC++
- Hàm API Thay đổi Class name cho 1 cửa sổ ???
- Lập trình unload inject DLL trên VC++?
-
19-01-2009, 04:09 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Có 3 loại hook hàm api ( trong usermode ) :
- Hook bảng export ( EAT) : khó thực hiện, khó bị phát hiện, gỡ ko ra. Các dll sẽ export ra các hàm api, ta tìm và đổi lại địa chỉ của các hàm đã được export.
- Hook bảng import ( IAT ) : hơi cực nhưng lại dễ bị qua mặt. Các chương trình dùng bảng IAT để ánh xạ địa chỉ các hàm api trong dll vào, ta tìm và đổi lại địa chỉ của các hàm này.
- Chèn code vào đầu hàm : chèn lệnh nhảy ( jmp, mã lệnh là 0xE9 ) và đều hàm. Các bước thực hiện :
+ Tìm địa chỉ hàm
+ Set lại thuộc tính vùng nhớ cho phép ghi
+ Lưu lại 5 byte nội dung cũ
+ Ghi nội dung lệnh nhảy lên
+ Phục hồi lại thuộc tính cũ cho vùng nhớ.
-
07-08-2010, 05:43 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi gianghoplus
-
07-08-2010, 06:34 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi meoconlongvang
Nếu có 1 hàm bắt đầu bằng 7 byte (liên tiếp) thì cách này không hoạt động và đôi khi (thường) gây crash
-
09-08-2010, 04:39 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cách thứ 3 mà meoconlongvang đưa ra còn gọi là intercept API. Kevin đồng ý với ý kiến của gianghoplus, và việc sử dụng intercept API sẽ dễ gây đến vấn đề xung đội với mội trường multi thread, đó là việc khá chuối.
Một cách đơn giản khác có thể sử dụng là dùng proxy dll, cách này cực kỳ đơn giản.
Em xin hỏi các bác: Nếu như dll sử dụng private export thì ta dùng cách nào?
-
09-08-2010, 04:47 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi quangnh89
Vì đây là một phương pháp khá đơn giản, dễ dùng nên mình cũng muốn khắc phục được nhược điểm này.
-
09-08-2010, 05:40 PM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Cách thứ 3 mà meoconlongvang đưa ra còn gọi là intercept API. Kevin đồng ý với ý kiến của gianghoplus, và việc sử dụng intercept API sẽ dễ gây đến vấn đề xung đội với mội trường multi thread, đó là việc khá chuối.
về lý thuyết có thể hook được bất cứ thứ gì chỉ cần biết địa chỉ và kiểu dữ liệu các tham số,nếu nhìn qua thì KAV Hook các Hàm Undocument của Kernel,để hook các hàm không export người ta dùng cách search binary mã code đặc biệt của hàm cần Hook,mã nhận dạng này có thể thay đổi tùy theo phiên bản của hệ điều hành,nếu ai quan tâm mình có thể share cho 1 vài tài liệu và source code hook Hàm không Export Kernel ( trên windows XP )
-
09-08-2010, 05:49 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi gianghoplus
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...