Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: FreeLibrary với dll Hook bằng Set WindowsHookEx

  1. #1
    Ngày gia nhập
    04 2011
    Bài viết
    61

    Mặc định FreeLibrary với dll Hook bằng Set WindowsHookEx

    Mọi người cho mình hỏi tại sao Dll được Inject vào các process khác bằng SetWindowsHookEx thì khi một process nào đó gọi FreeLibrary dll này thì dll nó tự unload khỏi tất cả các process khác được Inject vậy

  2. #2
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Có phải ở một chỗ khác bạn gọi GetModuleHandle, sau đó gọi Freelibrary không?

    Sau đây là nguyên nhân giải thích cho vấn đề của bạn:

    Trích dẫn Nguyên bản được gửi bởi MSDN
    The GetModuleHandle function returns a handle to a mapped module without incrementing its reference count. However, if this handle is passed to the FreeLibrary function, the reference count of the mapped module will be decremented. Therefore, do not pass a handle returned by GetModuleHandle to the FreeLibrary function. Doing so can cause a DLL module to be unmapped prematurely.

    This function must be used carefully in a multithreaded application. There is no guarantee that the module handle remains valid between the time this function returns the handle and the time it is used. For example, suppose that a thread retrieves a module handle, but before it uses the handle, a second thread frees the module. If the system loads another module, it could reuse the module handle that was recently freed. Therefore, the first thread would have a handle to a different module than the one intended.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  3. #3
    Ngày gia nhập
    04 2011
    Bài viết
    61

    Cám ơn bạn.

    Nhưng nếu như Inject bằng CreateRemoteThread cho toàn bộ process. Sau đó gọi FreeLibrary cho 1 process nào đó thì chỉ có process đó bị unload thôi, Còn SetWindowsHookEx thì nó unload hết

    Mình đều sử dụng GetModuleHandle + FreeLibrary để thử 2 phương pháp Inject trên. Nếu như trong đó nói gọi FreeLibrary sẽ giảm reference count thì tại sao 1 cái có tác dụng trên 1 process và 1 cái thì toàn bộ.

  4. #4
    Ngày gia nhập
    10 2010
    Nơi ở
    Unallocated Memory
    Bài viết
    47

    Xin mạn phép trả lời câu hỏi của bạn theo cách hiểu của mình.
    Theo bạn nói thì mình khẳng định là bạn dùng SetWindowsHookEx với tham số cuối cùng để NULL nên nó hook global.

    1. Inject bằng CreateRemoteThread
    App1-----|---------|-----DllInject ==>App1
    App2 ==> |Windows |==> DllInject ==>App2
    Appn-----|---------|-----DllInject ==>Appn

    2. Inject bằng SetWindowsHookEx (Global hook)
    App1-----|---------|-----|--------------|==>App1
    App2 ==> |Windows | ==>| Dll Hook Filter |==>App2
    Appn-----|---------|-----|--------------|==>Appn

    Đó chính là lý do vì sao bạn unload khi CreateRemoteThread thì chỉ có process inject đó bị unload.
    Còn khi SetWindowsHookEx thì bị mất tất cả.
    Nghìn dặm phong ba cách tiếng lòng
    Vạn sầu thương nhớ nỗi hư không
    Nhìn phương xa ấy, mình ta ngóng
    Cố với tay theo một bóng hồng

Các đề tài tương tự

  1. Mouse hook system-wide lại chạy như local hook ???
    Gửi bởi nguoixanh trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 12-11-2013, 04:02 PM
  2. Mouse hook system-wide lại chạy như local hook ???
    Gửi bởi nguoixanh trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 1
    Bài viết cuối: 12-11-2013, 03:01 PM
  3. Hook FreeLibrary bị crash
    Gửi bởi zeroplus trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 0
    Bài viết cuối: 02-10-2011, 08:38 PM
  4. Unload dll bằng FreeLibrary + CreateRemoteThread
    Gửi bởi zeroplus trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 0
    Bài viết cuối: 28-09-2011, 09:18 PM
  5. [Kernel Driver] ShaDow SSDT Hook Có Phải là Hook đồ Họa
    Gửi bởi chàng trai dễ thương trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 0
    Bài viết cuối: 11-10-2009, 07:48 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn