BẢO MẬT MÁY TÍNH BẰNG VISUAL BASIC  
 

Trên e-CHÍP số 149, tác giả Lê Văn Nhu có trình bày chương trình bảo mật máy tính bằng Visual Basic. Nhưng đúng như lời bàn của anh Chương Can Chíp, việc vô hiệu hóa tổ hợp phím Ctrl+Alt+Del không “ép-phê” đối với các hệ điều hành thuộc họ Windows NT (NT/2000/XP/2003). Khi người dùng nhấn Ctrl+Alt+Del, các hệ điều hành thuộc họ Windows NT gọi trình Windows Task Manager (system32\taskmgr.exe), cho phép end bất cứ chương trình nào mà người dùng muốn thông qua nút End Task (thẻ Applications) và nút End Process (thẻ Processes). Đặc biệt là tác vụ End Process cho phép người dùng đóng những chương trình mà ngay cả thẻ Applications không "thấy".

Do vậy, việc ta phải làm là đóng Windows Task Manager khi nó vừa được gọi nhằm bảo vệ an toàn cho chương trình bảo mật. Có hai cách thực hiện:
1. Tìm xem có chương trình nào đang chạy với tên tập tin là taskmgr.exe thì đóng nó lại.
2. Nếu thấy có chương trình đang chạy với tiêu đề Windows Task Manager thì đóng nó lại.
Tuy nhiên, cách thứ nhất không an toàn so với cách thứ hai vì người dùng có thể lén đổi tên tập tin taskmgr.exe. Ta nên chọn cách thứ hai. Muốn vậy, ta dùng hai hàm API:
1. Hàm FindWindow() dùng để kiểm tra xem Windows Task Manager có đang chạy hay không,
2. Hàm PostMessage() dùng để gởi thông điệp đến Windows Task Manager, ra lệnh cho nó tự động đóng lại.
Như vậy, Windows Task Manager không thể chạy được một khi chương trình bảo mật còn hoạt động. Bạn khai báo hai hàm API nêu trên như đoạn mã 1.
Đoạn mã 1
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Bạn cần thêm một Timer vào biểu mẫu chính trong chương trình bảo mật, đặt thuộc tính Name là tmrkiemtra và thuộc tính Interval bằng 1 (liên tục kiểm tra sự hiện diện diện của Windows Task Manager). Sau đó, bạn đưa đoạn mã 2 vào Timer.
Đoạn mã 2
Private Sub tmrkiemtra_Timer()
'Thực hiện lệnh đóng nếu phát hiện Windows Task Manager đang chạy
Do While FindWindow(vbNullString, "Windows Task Manager") <> 0
'Gởi thông điệp đến Windows Task Manager để đóng nó lại
PostMessage FindWindow(vbNullString, "Windows Task Manager"), &H10, 0&, 0&
'Bạn có thể khai báo ở đầu chương trình: Const WM_CLOSE = &H10 và thay bằng
'PostMessage FindWindow(vbNullString, "Windows Task Manager"), WM_CLOSE, 0&, 0&
Loop
End Sub
Thế là xong, người dùng không thể gọi Windows Task Manager được nữa vì khi gọi, chương trình của bạn đóng Windows Task Manager ngay lập tức. Với hai hàm API trên, bạn cũng có thể hạn chế người dùng, không cho mở các chương trình "nhạy cảm" như Registry Editor hay Command Prompt chẳng hạn. Chúc bạn thành công.
Constance (tinthongminh@yahoo.com)
(Theo Echip)

 
 

 
     
 
Công nghệ khác:


WGA của Microsoft bị hacker qua mặtSử dụng Regular Expression - kiểm tra tính hợp lệ của e-mail với PHP
Asp2php Tool
  Xem tiếp    
 
Lịch khai giảng của hệ thống
 
Ngày
Giờ
T.Tâm
TP Hồ Chí Minh
Hà Nội
 
   
New ADSE - Nhấn vào để xem chi tiết
Mừng Sinh Nhật Lần Thứ 20 FPT-APTECH
Nhấn vào để xem chi tiết
Bảng Vàng Thành Tích Sinh Viên FPT APTECH - Nhấn vào để xem chi tiết
Cập nhật công nghệ miễn phí cho tất cả cựu sinh viên APTECH toàn quốc
Tiết Thực Vì Cộng Đồng
Hội Thảo CNTT
Những khoảnh khắc không phai của Thầy Trò FPT-APTECH Ngày 20-11