现在的许多病毒往往产生多个进程,当我们结束其中的一个病毒进程,其它的病毒进程马上会再次调用它,从而达到杀而不死,死而不僵的目的。这些病毒进程存在互生关系,故此本人称它们为“双子病毒”。
在前些日子,老是碰到这些病毒,如:global、acer等,很是麻烦,杀不死,杀不尽,让人头疼不已。后来被逼没办法,想了个“偏门”,在结束病毒进程的同时删除病毒体,不曾想,还真的凑效了,于是,后来就专门写了这个辅助工具,专门在结束进程的同时删除相关进程文件体。
注意:千万不要拿正常进程来测试!否则,后果自负!
程序代码:- @echo off
- setlocal enabledelayedexpansion
- ::'/*code by youxi01@bbs.bathome.net 2009-2-3
- ::作用:结束进程的同时删除相关文件体,主要针对进程相互检测病毒程序;支持处理多个进程。
- set "CMD_Line=wmic process where "name"
- set "Space= "
- tasklist /FO TABLE>ProcList.txt
- :Start
- cls
- echo 已将当前进程保存到当前目录ProcList.txt中,请查看。&echo.
- echo 请输入你要处理的进程名称,多个进程请用空格分隔开
- echo ------------------------------------------------------
- set "EProc=" %'/*保存有效进程变量%
- set "EN="
- set /p EN=进程名:
- echo.&echo 进程名 路径
- echo ───────────────────────────
- for %%i in (%EN%) do call :GetOBJPath "%%i"
- echo ───────────────────────────
- if not "%EProc%"=="" (
- echo 确认后,将会结束进程并删除文件体
- echo.&set /p CF=确认删除[Y/N]?
- if /i not "!CF!"=="Y" (echo.&echo 您选择了退出!&pause>nul&goto :Start) else (
- ::'*/结束相关进程、删除病毒文件;
- for %%i in (%EProc%) do (
- echo taskkill /f /im %%i>nul 2>nul
- echo attrib -s -h -a -r "!%%i!"
- echo del /f /q "!%%i!"
- )
- )
- ) else echo 进程输入错误!
- pause>nul
- goto :Start
- :GetOBJPath 目标进程 '/*获取目标进程的路径
- set "EXEPath="
- set "var=%~1:%Space%"
- set var=!var:~0,20!
- for /f "skip=1 delims=" %%i in ('%CMD_Line%='%~1'" get executablepath 2^>nul') do set EXEPath=%%i
- if defined EXEPath (
- set "EProc=!EProc! %~1"
- set "%~1=!EXEPath!"
- echo !var!!EXEPath!
- ) else echo !var! 没发现相关进程!
- goto :EOF
复制代码
|