Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 8 của 8
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    virus inject DLL nghĩa là gì? Tại sao chỉ cần kill Explorer là có thể unhook được???

    Mình không hiểu thuật ngữ inject DLL nghĩa là làm gì,có phải là nó hook 1 hàm trong DLL nào đó,mỗi khi hàm đó được sử dụng thì sẽ thực hiện 1 tác vụ mà người lập trình đã override hàm API đó ( chèn code vào hàm đó trên bộ nhớ )
    tại sao chỉ cần kill Explorer là có thể unhook được bọn inject DLL ???

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Inject dll tức là bắt một process nào đó phải nạp thư viện của mình vào bất kể là process đó có cần dùng thư viện này hay không. Sau khi inject xong thì dll chạy trong ngữ cảnh của process bị hại, tức là ta phá từ trong ra, thích làm cái gì thì tùy hỉ.

    Trong một số trường hợp khi kill explorer tức là dll đã chết chung với explorer, explorer mới chạy lại sẽ không có dll inject. Tuy nhiên vẫn có trường hợp explorer mới là bị inject dll trở lại tùy vào chương trình dùng để inject dll.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    cảm ơn bạn mèoconlong vang nhé,cho mình hỏi thêm là trong DLL người ta sẽ viết cái gì ,viết giống như 1 File exe ah bạn,cũng có hàm DLL main,trong hàm DLL main thì ta viết hàm của virus ah( tại mình cứ tưởng phải Hook API mới là inject DLL )

  4. #4
    Inject tức là chèn mã khác vào làm thay đổi quá trình xử lý của tiến trình bằng các API định nghĩa trong DLL của mã Inject
    Hook là quá trình nằm chờ bắt sự kiện của một API nào đó được gọi để từ đó đưa ra phương pháp xử lý.

    mình hiểu là thế [IMG]images/smilies/biggrin.png[/IMG]

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    người ta Hook hàm API tức là override hàm đó,cũng chính là chèn mã vào hàm API đó mà

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Có 2 khái niệm coi chừng bị lộn :
    - Hook cửa sổ : dùng hàm api SetWindowsHookEx, thường dùng đề inject dll
    - Hook hàm api : hay còn gọi là override hàm api, tức là dùng nhiều cách khác nhau như đổi địa chỉ, sửa code ... Mục đích cuối cùng là để khi gọi hàm api bị hook thì hàm "dỏm" của ta sẽ chạy. Thông thường, để hook được hàm api thì phải inject dll vào process.

    - Hàm DllMain khác với WinMain ở chỗ nó phải trả về càng sớm càng tốt, trong khi winmain chỉ trả về khi kết thúc chương trình. Muốn dll chạy như app thì cần phải tạo thread trong dllmain và coi như thread đó là hàm main. Việc này hơi mạo hiểm vì nếu làm không khéo thì có thể bị loop vô tận khi tạo thread trong dllmain.

  7. #7
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    DllMain phải trả về ngay nhưng đâu có nghĩa là dll bị unload ra khỏi process. Sau khi dllmain trả về, dll vẫn nằm trong process mà. Bạn kiểm tra giá trị của tham số thứ 2 của dllmain, nếu nó là DLL_PROCESS_ATTACH thì gọi hàm CreateThread và cứ sử dụng thread vừa tạo như là hàm main.

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    - Hàm DllMain khác với WinMain ở chỗ nó phải trả về càng sớm càng tốt, trong khi winmain chỉ trả về khi kết thúc chương trình. Muốn dll chạy như app thì cần phải tạo thread trong dllmain và coi như thread đó là hàm main. Việc này hơi mạo hiểm vì nếu làm không khéo thì có thể bị loop vô tận khi tạo thread trong dllmain.
    em làm được cái đoạn inject cái dll vào process rồi,nhưng không rõ trong cái dll ta phải viết cái gì,vì nếu như bạn nói phải kết thúc nhanh dll thì làm sao mà các thread trong nó còn tồn tại dược,thêm nữa nếu ta inject dll vào process là nó sẽ hoạt động ah,hay là ta phải kích hoạt dll đó

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •