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

Đề tài: Thư Viện Hỗ Trợ Kill Process Bằng hàm ZwTerminateProcess ở Mức Driver

  1. #1
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Red face Thư Viện Hỗ Trợ Kill Process Bằng hàm ZwTerminateProcess ở Mức Driver

    Việc Kill Process được bảo vệ là rất khó khăn,nếu 1 Process đã được bảo vệ ở mức user thì ta phải sử dụng mức Kernel để kill nó ( hoặc cũng có thể sử dụng đặc quyền debug để kill )
    ở đây mình viết lại hàm TerminateProcess với lời gọi trực tiếp đến hàm ZwterminateProcess vì vậy có thể qua mặt được những ai Hook mức user các hàm ntTerminateProcess,ntopenProcess

    note: Hiện tại nếu sử dụng hàm ZwterminateProcess thì chưa thể kill được icesword do chương trình này Hook hàm ZwopenProcess


    document

    int Coder_Gate_TerminateProcess(DWORD Mypid)
    Thư viện Coder_Gate_TerminateProcess.dll
    Hoặc Coder_Gate_TerminateProcess.lib

    Với tham số Mypid là Pid của Process muốn Kill
    Service name : KernelKill


    Giá trị trả về :
    Giá trị trả về là 0 hàm thực hiện thành công
    Giá trị khác 0 hàm lỗi
    - Nếu giá trị =1 -> không tạo được service KernelKill
    - Nếu giá trị = 2 -> không truyền được Pid xuống File driver
    Attached Files Attached Files
    Đã được chỉnh sửa lần cuối bởi AlexF : 05-05-2009 lúc 07:50 PM.

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

    Mình đã test thử và chương trình chạy tốt.
    Tuy nhiên mình không biết driver bạn viết ra sao vì không có source.
    Vậy phần công việc nằm chính ở driver hay ở thư viện của bạn?
    Mình có 1 thắc mắc là thư viện này có thể dùng cho ngôn ngữ khác ngoài C++ hay không?

  3. #3
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    THư viện có thể chạy ở mọi ngôn ngữ khác
    Tuy nhiên mình không biết driver bạn viết ra sao vì không có source.
    Vậy phần công việc nằm chính ở driver hay ở thư viện của bạn?
    Mình đã viết 1 hàm Kill Process nằm trong File driver trong đó sử dụng hàm ZwopenProcess và hàm ZwterminateProcess( việc này không khó khăn gì,cậu chỉ cần đọc DDK là có thể dò ra cách sử dụng 2 hàm này )
    việc khó khăn là mình phải truyền được Pid của Process muốn kill từ user mode xuống File driver(việc tìm Pid của process mình sẽ tìm trong user mode) mình sử dụng phương pháp truyền dữ liệu từ user mode xuống kernel mode ở đây http://www.codeproject.com/KB/system/driverdev.aspx

    còn trong thư viện DLL thì viết 1 hàm load driver lên và truyền pid của nó xuống kernel,tham số của hàm là pid của Process muốn kill
    Đã được chỉnh sửa lần cuối bởi AlexF : 07-05-2009 lúc 09:23 PM.

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

    Reply rất nhanh đó bạn Coder_gate, ^^

    Cái câu hỏi về thư viện hơi ngơ nhưng cứ hỏi lại bạn cho chắc ăn.
    (Vì mình thấy 1 số thư viện có thể hạn chế, bắt đăng kí do đó được hay không là do chủ nhân có đồng ý theo chủ đích.)

    Driver của bạn và thư viện thì mình có thể đoán biết chức năng.
    Mình đọc trong file Main.cpp không thấy có đoạn load thư viện nên chắc chắn thư viện phải làm việc này.

    Dù khó khăn nhưng mình sẽ cố gắng tìm hiểu thêm trong DDK.
    Còn 1 câu hỏi nữa, mình có thử phương pháp làm ẩn Process theo hướng dẫn ở:
    http://www.rohitab.com/discuss/index...howtopic=23880

    Mình có thắc mắc là bản chất nó đã thâm nhập đến đâu trong mấy cái vòng từ Ring3 -> Ring0?
    Lí do là mình thấy có 2 chương trình (Dĩ nhiên là còn nhiều nữa):
    IS và TaskManager của bạn có thể thấy được chương trình đã ẩn.
    Vậy các chương trình này đã làm thế nào?
    Bạn có thể cho mình ví dụ minh họa để có thể làm được?

    Hơi nhiều câu hỏi ^^

    Note:
    Mình chạy lại cái TaskManager của bạn, NAV của mình vẫn báo có hacktools là file Hideprocs.sys
    Bạn thử chỉnh sửa rồi biên dịch lại cái file .sys xem sao nhé!

  5. #5
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Dù khó khăn nhưng mình sẽ cố gắng tìm hiểu thêm trong DDK.
    cái
    cậu chỉ cần đọc DDK là có thể dò ra cách sử dụng 2 hàm này
    câu này của mình lại là nói nhầm đó ^^!( mình chuyên trị nghĩ 1 đằng viết 1 nẻo ),cậu tham khảo WDK nhé
    Còn 1 câu hỏi nữa, mình có thử phương pháp làm ẩn Process theo hướng dẫn ở:
    http://www.rohitab.com/discuss/index...howtopic=23880

    Mình có thắc mắc là bản chất nó đã thâm nhập đến đâu trong mấy cái vòng từ Ring3 -> Ring0?
    Ring 0 là mức kernel mode đó bạn,ring3 là mức user mode rồi,bài của mình hoạt động ở mức kernel

    Mình chạy lại cái TaskManager của bạn, NAV của mình vẫn báo có hacktools là file Hideprocs.sys
    Bạn thử chỉnh sửa rồi biên dịch lại cái file .sys xem sao nhé!
    dạo này mình hơi lười( vì sắp thi mà) mình đang định thêm phần phát hiện hide driver và sửa phần hide process bằng việc hook hàm ZwQuerySystemInformation
    Đã được chỉnh sửa lần cuối bởi AlexF : 29-10-2009 lúc 04:14 PM.

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

  1. Làm sao để ẩn một process bằng c# mà không phải kill process đó
    Gửi bởi thanhctim trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 17-10-2012, 02:20 PM
  2. Algorithm Cách kill một process trong lập trình C#?
    Gửi bởi mrjone_07 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 14
    Bài viết cuối: 24-05-2012, 08:42 PM
  3. Kill Hide Process in dll
    Gửi bởi tuantep trong diễn đàn Windows API, Hooking, xử lý Windows Message
    Trả lời: 7
    Bài viết cuối: 12-05-2010, 09:34 PM
  4. Kill Process bằng việc Kill toàn bộ thread của Process đó trên VC++ như thế nào?
    Gửi bởi AdminPro trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 1
    Bài viết cuối: 22-05-2009, 05:44 PM
  5. Icesword Kill Process bằng cách nào vậy
    Gửi bởi trần trân trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 2
    Bài viết cuối: 12-04-2009, 05:02 PM

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