XácđịnhServicenàođangchạydướimộtSVCHOST.EXEprocess
Có khá nhiều câu hỏi liên quan đến svchost.exe. Ví dụ như tại
sao svchost.exe lại chiếm 100% CPU? Có thể kill svchost.exe đi
được không? Tất cả các câu hỏi này đều liên quan đến hiểu biết
về svchost.exe. Khi có được những thông tin về svchost.exe
trong bài viết dưới đây, bạn dễ dàng xử lý được các tình huống
trên.
Service là những chương trình Windows mà bắt đầu khi nạp Windows
và tiếp tục chạy ở mức nền (background) của hệ điều hành và không có sự tương tác từ phía người
dùng. Với những người quen *nix, service trên Windows tương tự như daemon trên *.nix.
Phần lớn các service trên Windows là dạng exe, tuy nhiên cũng có một vài servicedạng dll. Windows
không có cách thực hiện file dll trực tiếp, mà thông qua một chương trình đóng vai trò launch các dll này.
Cụ thể, Windows sử dụng SVCHOST.EXE để launch các service dll, nó còn được gọi là Generic Host
Process for Win32 Services. Mỗi SVCHOST process có thể quản lý một hoặc nhiều Service DLL khác
nhau.
Dưới đây là 02 phương pháp để xem mộtsvchost.exeprocess kiểm soát máy tính của bạn
1. Xácđịnhservicenàochạydướisvchost.exeprocess bằng Process Explorer
Process Explorer là một chương trình quản lý process, cho phép thấy được những processđangchạy
trên Windows và đưa ra thông tin cho mỗi process. Một tính năng của Process Explorer là cho phép đưa
ra các service và svchost.exe điều khiển.
Process Explorer là một công cụ miễn phí nằm trong gói công cụ của hãng Sysinternal. Hiện gói các
công cụ này được MS mua lại. Tham khảo về Process Explorer và download theo link dưới:
http://www.microsoft.com/technet/sysinternals/Utilities/ProcessExplorer.mspx
Sau khi download Process Explorer, chạy, giao diện như Hình 1
Giao diện Process Explorer
Trên Hình 1, cuộn danh sách các process để tìm các svchost.exe process. Để xem những servicenào
đang chạy trong svchost.exe nào, nhắp đúp vào svchost.exe đó. Trong ví dụ ở hình 1, svchost.exe có
PID = 656 có 2 service là rapimgr.exe và Dot1XCfg.exe (Chú ý rằng các svchost.exe sẽ được phân biệt
bằng PID).
Để chi tiết về một svchost.exe, nhắp đúp vào svchost.exe đó, sẽ xuất hiện hộp thoại svchost.exe
Properties như Hình 2.
svchost.exe properties - tab Services
Trên svchost.exe Properties, chọn tab Services. Sẽ xuất hiện danh sách các servicechạy bên dưới
svchost.exe. Có thể kiểm tra chi tiết về các file này. Như vậy với phương pháp trên sẽ xácđịnh được
service nàođangchạy trong svchost.exe nào.
2. Xácđịnhservicechạydướisvchost.exeprocess bằng lệnh tasklist
Trên Windows XP Pro và Windows 2003 có công cụ là tasklist.exe. Công cụ này cho phép liệt kê những
process, serviceđangchạy trên Windows.
Để chạy tasklist.exe, chạy cửa sổ Terminal, sau đó gõ lệnh. Ví dụ thực hiện lệnh sau:
tasklist /svc /fi "imagename eq svchost.exe" (1)
TaskList
Trên Hình 3 là việc thực hiện câu lệnh (1). Nhận thấy rằng svchost.exe có PID = 656, đangchạy 02
Service là DcomLaunch và TermService.
3. Thông tin nâng cao về svchost.exe
Bây giờ chúng ta đã biết mộtsvchost.exeprocess có thể nạp và quản lý nhiều service. Tuy nhiên những
service nào lại được ghép thành một nhóm để cùng chạydướimột svchost.exe? Những nhóm này được
định nghĩa bởi việc thiết lập trong Windows Registry key sau:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SVCHOST
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SVCHOST
Trên Hình 4 là Registry, mục svchost. ở cột bên phải, chú ý rằng với mỗi nhóm có giá trị REG_MULTI_SZ
là danh sách các tên Service.
DcomLaunch
Bảng dưới đây sẽ mô tả chi tiết các Group Name và các Service trong từng Group đó.
Services in the group
Mỗi Service Name trong Group tương ứng với một mục trong Windows Registry:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es
Dưới mỗi mục của từng service trong Windows Registry trên có subkey là Parameters có chứa một
ServiceDLL có giá trị trỏ đến file dll tương ứng của service đó (xem hình 7).
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es
Khi Windows nạp, nó start các service mà đã enable. Một số service được start bằng cách sử dụng lệnh
svchost.exe. Khi Windows launch các service kiểu này, sẽ kiểm tra xem có svchost.exenàođang quản lý
service trong nhóm không, nếu không có, Windows sẽ chạymộtsvchost.exe mới. Tham khảo một lệnh
sau:
C:\WINDOWS\system32\svchost.exe -k DcomLaunch
Với lệnh trên, svchost.exe sẽ xem ServiceDLL liên quan đến Service Name từ nhóm DcomLaunch và nạp
nó.
. với phương pháp trên sẽ xác định được
service nào đang chạy trong svchost. exe nào.
2. Xác định service chạy dưới svchost. exe process bằng lệnh tasklist. Xác định Service nào đang chạy dưới một SVCHOST. EXE process
Có khá nhiều câu hỏi liên quan đến svchost. exe. Ví dụ như tại
sao svchost. exe lại