Cuộc chạy đua giữa chương trình và người dùng
Có một cuộc tranh luận không ngừng nghỉ giữa những người viết chương trình phần mềm và những người dùng thực sự sử dụng chúng. Chẳng...
Có một cuộc tranh luận không ngừng nghỉ giữa những người viết chương trình phần mềm và những người dùng thực sự sử dụng chúng. Chẳng hạn, bạn thường thấy những câu hỏi như: "Làm thế nào để tôi tạo một chương trình mà người dùng không thể kill nó?"
Bây giờ, hãy tưởng tượng nếu có thể làm điều này. Hãy tự hỏi: "Thế giới sẽ ra sao nếu điều này có thể xảy ra?"
Sẽ có một vài chương trình, ví dụ như, xyz.exe, không thể bị kill được. Bây giờ giả sử bạn là người dùng, bạn đang có một chương trình xyz.exe và bạn muốn kết thúc nó. Tuy nhiên, chương trình này không cho phép bạn kill chính nó. Bạn cố gắng tiêu diệt nhưng vẫn không thể được.
Đây chỉ là một trong những cuộc chạy đua mà bạn có thể tưởng tượng ra:
- “Tôi không muốn bất kì ai kết thúc tiến trình của tôi.” vs. “Làm sao để tôi có thể kết thúc tiến trình khó ưa?”
- “Tôi muốn đẩy hộp thoại quan trọng này vào tương tác người dùng” vs. “Làm thế nào để tôi ngăn chặn các chương trình lấy cắp tập trung (stealing focus)?”
- “Tôi không muốn bất kì ai xóa tập tin này.” vs. “Làm cách nào để xóa tệp tin mà từ chối xóa?”
- “Làm cách nào để ngăn chương trình này hiển thị trong Task Manager?” vs. “Làm cách nào tôi có thể xem tất cả các chương trình đang chạy trên máy tính của mình?”
Cuối cùng, bạn phải quyết định bên nào thắng, và Windows đã quyết định để cho người dùng kiểm soát các chương trình và dữ liệu của riêng họ và để quản trị viên kiểm soát máy tính mà họ sở hữu. Vì vậy, người dùng có thể kill bất kỳ tiến trình nào họ muốn (nếu được cung cấp đủ đặc quyền), họ có thể ngăn bất kỳ chương trình stealing focus nào và họ có thể xóa bất kỳ tệp nào họ muốn (một lần nữa, nếu được cung cấp đủ đặc quyền).
Các chương trình có thể cố gắng làm cho bản thân nó khó bị kill hơn (từ chối quyền truy cập PROCESS_TERMINATE, từ chối quyền truy cập PROCESS_CREATE_THREAD để không thể gọi CreateRemoteThread(EndProcess), từ chối PROCESS_VM_WRITE để không thể ghi vào ngăn xếp của bạn và khiến bạn doublefault, từ chối PROCESS_SUSPEND_RESUME để không thể bị ngừng lại), nhưng cuối cùng bạn cũng có thể ngăn chặn chúng, như là, nâng lên đặc quyền Debug, debug tiến trình đó và di chuyển EIP đến “ExitProcess”. Bạn cũng có thể kill CSRSS.EXE và WINLOGON.EXE nếu bạn muốn, tuy nhiên, nên thử máy ảo nhé ;).
Một câu hỏi hữu ích khác để bạn có thể tự hỏi: Bạn có thể ngăn chặn virus làm điều tương tự không? Rõ ràng là bạn không muốn điều đó, phải không?
Dịch từ devblogs.microsoft.com
Khoa học - Công nghệ
/khoa-hoc-cong-nghe
Bài viết nổi bật khác
- Hot nhất
- Mới nhất