Tôi đang sử dụng trình chống vi-rút ESet và gần đây là giao diện người dùng GUIuiui.exe đã kết thúc và đang chiếm 50% CPU (tức là 100% của một lõi). Thật ngạc nhiên, tôi thấy rằng tôi không thể giết nó, ngay cả với đặc quyền gỡ lỗi được kích hoạt.Chấm dứt quy trình diệt vi-rút được bảo vệ
Bây giờ tôi tò mò: làm thế nào để họ thực hiện việc bảo vệ như vậy, và có cách nào để giết nó ngắn bằng cách viết một trình điều khiển hạt nhân?
Quy trình egui.exe chạy dưới người dùng thông thường (không phải quản trị viên) và tôi cố gắng tiêu diệt theo nhiều cách khác nhau bằng tài khoản quản trị. Đây là những gì tôi đã thử.
- bạn không thể giết nó từ task manager
- bạn không thể giết nó bằng cách sử pskill
- bạn không thể giết nó sử dụng quy trình thám hiểm, cũng không phải bạn có thể đính kèm một debugger để nó
Sau đó, tôi bắt đầu một số chương trình và thấy rằng:
dưới người dùng không có đặc quyền, bạn có thể mở nó bằng PROSESS_TERMINA Quyền truy cập TE, nhưng cuộc gọi thực sự tới TerminateProcess() không thành công với lỗi 5.
dưới tài khoản quản trị, bạn có thể mở nó bằng bất kỳ quyền truy cập nào (sau khi bật đặc quyền gỡ lỗi), nhưng sau đó gọi đến TerminateProcess(), GetKernelObjectSecurity(), SetKernelObjectSecurity() tất cả các thất bại với lỗi 5.
này chắc chắn chỉ ra một số loại không quan trọng vượt ra ngoài chỉ thiết lập các quy trình DACL, vì nếu Chấm dứt không có tên trong DACL, bạn sẽ không thể mở quy trình với PROCESS_TERMINATE ngay từ đầu. Họ có thực sự chặn các cuộc gọi API Win32 không? Nếu có, thì làm thế nào? Nó đã được một thời gian kể từ khi tôi đã lập trình hệ thống cấp thấp, do đó tha thứ cho sự thiếu hiểu biết của tôi.
Tại sao bạn muốn biết điều đó? :) –
AV thường có các thành phần chế độ lõi. Nếu bạn có thể giết nó chỉ bằng cách cho chính mình những đặc quyền cao nhất, nó sẽ là sự bảo vệ tệ hại. –
Bạn có thể giết nó khi nó chạy bình thường, hoặc là nó chỉ khi nó treo mà bạn không thể giết nó? – nos