中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-06 19:50
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 麻烦宝马BOY来看看这VBS!~ 查看 754 回复 6
楼 主 麻烦宝马BOY来看看这VBS!~ 发表于 2007-12-08 17:33 ·  中国 江苏 无锡 宜兴市 电信
中级用户
★★
积分 487
发帖 212
注册 2007-04-01 08:22
19年会员
UID 83597
性别 男
状态 离线
以下这段代码是用来监视系统IE进程,防止病毒假冒,用路径的方式来判断,但我需要把以下系统进程都按路径来判断,如何写成完整的?麻烦帮忙写出来,谢谢!~

Dim strComputer, strPath, strExePath
Dim objWMI, objFSO
Dim colProcesses
Dim objProcess, objFile
Set objFSO = CreateObject( "Scripting.FileSystemObject" )
strComputer = "."
nCount = 0
strPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings _
( "%ProgramFiles%\Internet Explorer\iexplore.exe" )
Set objFile = objFSO.GetFile( strPath )
strPath = objFile.ShortPath
Set objFile = Nothing
Set objWMI = GetObject( "winmgmts:{impersonationLevel=impersonate}\\" & _
strComputer & "\root\cimv2" )
Set colProcesses = objWMI.ExecQuery( "SELECT * FROM Win32_Process" & _
" WHERE Name=''iexplore.exe''" )
For Each objProcess In colProcesses
Set objFile = objFSO.GetFile( objProcess.ExecutablePath )
strExePath = objFile.ShortPath
Set objFile = Nothing
If StrComp(strExePath, strPath, 1) Then
objProcess.Terminate
Else
End If
Next

C:\WINDOWS\System32\smss.exe
C:\WINDOWS\system32\csrss.exe
C:\WINDOWS\system32\winlogon.exe
C:\WINDOWS\system32\services.exe
C:\WINDOWS\system32\lsass.exe
C:\WINDOWS\system32\svchost.exe
C:\WINDOWS\Explorer.EXE
C:\WINDOWS\System32\alg.exe
C:\WINDOWS\System32\ctfmon.exe
这是需要监视的进程

另外需要写个VBS专门杀掉除以上判断为路径正确的进程,以外的所有进程,希望有人帮忙写出来!~谢谢了先!~
2 发表于 2007-12-08 20:50 ·  中国 宁夏 固原 原州区 电信
银牌会员
★★★
积分 1,513
发帖 554
注册 2005-12-30 00:50
20年会员
UID 48180
性别 男
状态 离线

Dim WshSHell,FSO
Set WshSHell = WScript.CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
ExePath="C:\WINDOWS\System32\smss.exe/C:\WINDOWS\system32\csrss.exe/C:\WINDOWS\system32\winlogon.exe/C:\WINDOWS\system32\services.exe/e:\test.EXE"
ExePathArr=split(ExePath,"/")
FOR each ps in getobject("winmgmts:\\.\root\cimv2:win32_process").instances_
For i=1 To UBound(ExePathArr)
ExeNameArr=split(ExePathArr(i),"\")
if LCase(ps.name)=LCase(ExeNameArr(UBound(ExeNameArr))) and LCase(ps.executablepath)<>LCase(ExePathArr(i)) then
WshSHell.Run ("ntsd -c q -p "&ps.handle),vbHide
WScript.Sleep 1000
FSO.DeleteFile ps.executablepath
end if
Next
NEXT
Set WshSHell = Nothing
Set FSO = Nothing
WScript.Quit(0)


在ExePath中添加需要监视的进程全路径,用"/"符号分隔。

另外没看明白你是想只删除假冒的名称(同名不同路径的),还是要杀除指定安全进程(ExePath)之外的所有进程,如果是后者自己改一下条件语句。

在网吧呢,限制了权限而没能测试.......至少可以当个思路

[ Last edited by baomaboy on 2007-12-9 at 01:06 AM ]
3 发表于 2007-12-09 17:17 ·  中国 江苏 无锡 宜兴市 电信
中级用户
★★
积分 487
发帖 212
注册 2007-04-01 08:22
19年会员
UID 83597
性别 男
状态 离线
谢谢宝马兄了!~
4 发表于 2007-12-10 19:36 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线
用 wmic ping ntsd 来写个p也可以做到的
5 发表于 2007-12-10 19:41 ·  中国 江苏 无锡 宜兴市 电信
中级用户
★★
积分 487
发帖 212
注册 2007-04-01 08:22
19年会员
UID 83597
性别 男
状态 离线
那么,麻烦楼上的朋友,帮忙写出来吧!~本人水平有限,VBS不是很懂,P处理当然最好了.
6 发表于 2007-12-10 21:05 ·  中国 甘肃 张掖 电信
金牌会员
★★★★
积分 4,103
发帖 1,744
注册 2006-01-20 13:00
20年会员
UID 49241
性别 男
来自 甘肃.临泽
状态 离线

::监视系统进程,防止病毒假冒,用路径的方式来判断
@echo off&endlocal&setlocal ENABLEDELAYEDEXPANSION
:loop
set "exePath=C:\WINDOWS\System32\smss.exe;C:\WINDOWS\system32\csrss.exe;C:\WINDOWS\system32\winlogon.exe;C:\WINDOWS\system32\services.exe;e:\test.exe"
for %%? in (%exepath%) do (
set "str=%%?"
wmic process where "name='%%~nx?' and ExecutablePath<>'!str:\=\\!'" CALL Terminate
)
ping -n 20 127.1 >nul 2>nul
goto :loop


[ Last edited by vkill on 2007-12-10 at 09:20 PM ]
7 发表于 2007-12-11 18:52 ·  中国 江苏 无锡 宜兴市 电信
中级用户
★★
积分 487
发帖 212
注册 2007-04-01 08:22
19年会员
UID 83597
性别 男
状态 离线
感谢了,楼上的朋友,有啥好的P教程可否介绍点?
我是看不大懂你写的代码啊....
我只会写简单的一点东西,最好能互相交流下,我QQ:422547345,希望能不吝啬赐教!~
论坛跳转: