编程实现清除temp1.exe, temp2.exe木马.(这个木马没查用叫什么名称...-_-!!!, 看到网上好象都是这样叫, 就用上了那个名字)
今天打开本本的时候, 又击驱动器图标的时候, 总是在新窗口中打开, 立马感觉不对头, 查看一下进程, 发现里面多了一个”temp1.exe”的进程, 在网上一查, 原来是中标了……..-_-!!! 本本上面还好,只有3个驱动器, 挨个删除以后也就没来了, 可台式机上分了6个区…..所以就有了下面这个小程序…..因本人机器的木马均已手工清除, 未能再测试程序了. 下面代码仅仅是参考用, 希望对中标的兄弟们有帮助….
今天(8/9/2006)不小心又中上了, U盘带来的(我不用杀毒软件的). 这次对代码进行了编译我运行, 程序有问题, 因为copy.exe, host.exe的文件属性问题, 添加下面红色部分的代码后, 可以杀毒了. 不过杀完后, 好象注册表仍不干净, 重启会提示无法找到"c:\windows\svchost.exe", 手动在注册表中找到这个删除后就没问题了.
.Net Framework 2.0 : http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en
经过编译的程序:/Files/XiaoHui/killvirus.rar
PS:见到有人提出运行不了的疑问,特将经过编译的程序放上来。程序需要在.Net Framework 2.0下面运行。当然你完全可以自己复制代码,然后自己编译。
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Source Code
1
using System;
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
using System.Diagnostics;
4![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5
using System.IO;
6![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
7
using System.Management;
8![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
9
using System.Collections;
10![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
11
using Microsoft.Win32;
12![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
13
using System.Security.Permissions;
14![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
15
16![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
17
[assembly:RegistryPermissionAttribute(SecurityAction.RequestMinimum,
18![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
19
ViewAndModify="HKEY_CURRENT_USER")]
20![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
21
class Program
22![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
23![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
24![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
static readonly string XCopy = "xcopy.exe";
26![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
static readonly string SVCHost = "svchost.exe";
28![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
static readonly string Temp1 = "temp1.exe";
30![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
static readonly string Temp2 = "temp2.exe";
32![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
static readonly string Copy = "copy.exe";
34![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
static readonly string Host = "host.exe";
36![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37
static readonly string AutoRun = "autorun.inf";
38![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
static readonly string RegKey = "Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows";
40![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
static readonly string LoadKey = "load";
42![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
44![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45
static void Main()
46![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
48![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49
bool foundVirus = QueryProcess(true);
50![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
bool isRegistryExists = IsRegistryExists();
52![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
Console.WriteLine(isRegistryExists.ToString());
54![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
if (!foundVirus)
56![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
58![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
Console.WriteLine("Not found virus.");
60![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61
return;
62![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
}
64![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65
66![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
Console.WriteLine("Starting kill the virus.");
68![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
Console.WriteLine("Delete the xcopy.exe");
70![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
string xcopyPath = string.Concat(GetWindowPath(), Path.DirectorySeparatorChar, XCopy);
72![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
KillVirus(xcopyPath);
74![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75
76![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
Console.WriteLine("Delete the svchost.exe");
78![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79
string svchostPath = string.Concat(GetWindowPath(), Path.DirectorySeparatorChar, SVCHost);
80![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
KillVirus(svchostPath);
82![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
84![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
85
Console.WriteLine("Delete the temp1.exe");
86![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
string temp1Path = string.Concat(GetSystemPath(), Path.DirectorySeparatorChar, Temp1);
88![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89
KillVirus(temp1Path);
90![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
92![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
Console.WriteLine("Delete the temp2.exe");
94![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
string temp2Path = string.Concat(GetSystemPath(), Path.DirectorySeparatorChar, Temp2);
96![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
97
KillVirus(temp2Path);
98![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
99
100![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101
Console.WriteLine("Starting kill virus in each drive");
102![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
103
ArrayList drives = GetAllLogicalDrives();
104![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
string drive = string.Empty;
106![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107
for(int i = 0; i < drives.Count; i++)
108![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
110![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
string copyPath = string.Concat(drives[i], Path.DirectorySeparatorChar, Copy);
112![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
string hostPath = string.Concat(drives[i], Path.DirectorySeparatorChar, Host);
114![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
string autorunPath = string.Concat(drives[i], Path.DirectorySeparatorChar, AutoRun);
116![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
KillVirus(copyPath);
118
// 上次下面的代码忘记写了, 导致只删除了copy.exe, host.exe和autorun.inf没删除 -_-!!!
119
KillVirus(hostPath);
120
KillVirus(autorunPath);
121![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
122
}
123![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
124
Console.ReadLine();
125![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
126
}
127![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
128
129![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
130
static ArrayList GetAllLogicalDrives()
131![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
132![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
133![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
134
ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * FROM Win32_LogicalDisk");
135![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
136
ManagementObjectCollection queryCollection = query.Get();
137![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
138
ArrayList drives = new ArrayList(30);
139![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
140
foreach(ManagementObject mo in queryCollection)
141![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
142![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
143![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
144
Console.WriteLine("Drive: " + mo["Name"].ToString());
145![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
146
drives.Add(mo["Name"].ToString());
147![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
148
}
149![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
150
151![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
152
return drives;
153![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
154
}
155![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
156
157![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
158
static bool QueryProcess(bool killProcess)
159![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
160![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
161![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
162
Process currentProcess = Process.GetCurrentProcess();
163![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
164
Process[] localByName;
165![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
166
167![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
168
localByName = Process.GetProcessesByName("temp1");
169![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
170
if (localByName.Length > 0)
171![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
172![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
173![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
174
if (killProcess)
175![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
176![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
177![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
178
KillProcess(localByName);
179![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
180
}
181![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
182
return true;
183![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
184
}
185![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
186
187![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
188
localByName = Process.GetProcessesByName("temp2");
189![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
190
if (localByName.Length > 0)
191![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
192![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
193![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
194
if (killProcess)
195![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
196![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
197![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
198
KillProcess(localByName);
199![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
200
}
201![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
202
return true;
203![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
204
}
205![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
206
207![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
208
return false;
209![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
210
}
211![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
212
213![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
214
static void KillProcess(Process[] processes)
215![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
216![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
217![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
218
foreach(Process p in processes)
219![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
220![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
221![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
222
p.Kill();
223![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
224
}
225![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
226
}
227![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
228
229![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
230
static void KillVirus(string filePath)
231![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
232![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
233![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
234
if (File.Exists(filePath))
235![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
236![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
237![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
238
Console.WriteLine("Are your sure want to delete: {0} [y/n]", filePath);
239![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
240
string answer = Console.ReadLine();
241![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
242
243![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
244
if (answer.ToUpper().Equals("Y"))
245![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
246![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
247
// 加上文件的只读属性判断. 如果文件带只读属性, 就去除
248![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if ((File.GetAttributes(filePath) & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
249
File.SetAttributes(filePath, FileAttributes.Archive);
250
}
251
File.Delete(filePath);
252![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
253
}
254![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
255
}
256![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
257
}
258![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
259
260![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
261
static void DeleteRegisterKey()
262![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
263![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
264![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
265
bool isRegistryExists = IsRegistryExists();
266![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
267
268![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
269
if (!isRegistryExists)
270![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
271![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
272![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
273
Console.WriteLine("Not found Registry Key / Value");
274![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
275
return;
276![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
277
}
278![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
279
280![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
281
RegistryKey hkcu = Registry.CurrentUser;
282![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
283
RegistryKey loadKey = hkcu.OpenSubKey(RegKey);
284![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
285
loadKey.DeleteSubKey(LoadKey);
286![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
287
return;
288![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
289
}
290![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
291
292![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
293
static bool IsRegistryExists()
294![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
295![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
296![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
297
bool isExists = false;
298![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
299
RegistryKey hkcu = Registry.CurrentUser;
300![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
301
RegistryKey loadKey = hkcu.OpenSubKey(RegKey);
302![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
303
string[] valueNames = loadKey.GetValueNames();
304![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
305
foreach(string s in valueNames)
306![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
307
if (s.ToLower().Equals(LoadKey))
308![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
309
string loadValue = loadKey.GetValue(s) as string;
310
if (!(string.IsNullOrEmpty(loadValue)))
311![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
312
isExists = true;
313![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
314
break;
315
}
316
}
317
}
318![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
319
return isExists;
320
}
321![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
322
static string GetWindowPath()
323![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
324
string systemPath = GetSystemPath();
325
return systemPath.Substring(0, systemPath.LastIndexOf("\\"));
326
}
327![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
328
static string GetSystemPath()
329![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
330
return Environment.GetFolderPath(Environment.SpecialFolder.System);
331
}
332
}