打开记事本软件,将以下代码复制粘贴进去,保存为“MoniProcesses.bat”。rem ---------------代码开始---------------@echo off rem 启动延缓环境变量扩展setlocal EnableDelayedExpansionrem 获取可疑进程配置文件路径set mproc=%~dp0%MoniProcessesList.inirem 定义检测配置文件是否为空标志set IsNul=yesrem 如果配置文件不存成则生成if not exist %mproc% echo. >%mproc%clstitle 可疑进程监控echo 开始进程监控……echo.rem 定义循环体:strartMonirem 用ping命令来实现延时运行for /l %%i in (1,1,5) do ping -n 1 -w 1000 168.20.0.1>nulrem 上面语句也可写成 ping -n 5 -w 1000 168.20.0.1>nulfor /f %%i in (%mproc%) do ( set IsNul=no echo 开始检测'%%i'进程…… qprocess %%i >nul 2>&1 if !errorlevel!==0 ( echo %date:~0,10% %time:~0,8% 发现可疑进程'%%i' & taskkill /F /IM %%i )else ( echo 没有发现可疑进程'%%i' ))if %IsNul%==yes echo 未配置可疑进程,请到配置文件MoniProcessesList.ini中配置!&& pause && notepad %mproc% goto strartMoniecho on rem ---------------代码结束---------------
双击MoniProcesses.bat运行脚本,运行效果如下:
setlocal EnableDelayedExpansion: 启用延迟环境变量扩展名该功能启用后,并且将变量由“%i%”改成'!i!'形式,可以确保脚本循环体中变量的值能够改变,否则循环体中的变量值无法改变。
%~dp0:获取脚本所有目录的完整路径。%~0 获取脚本文件名%~d0 获取脚本文件所在盘符%~p0 获取脚本文件所在目录除盘符外的路径
if not exist filename echo. >filename 如果文件不存在就创建该文件主要是if 的用法,比较简单。echo+. 中间无空格,常用于生成新文件。
for /l %%i in (1,1,5) do ping -n 1 -w 1000 168.20.0.1 也可写成 ping -n 5 -w 1000 168.20.0.1>nul 通过ping +不可能ping通的IP地址来实现非精确延时。
for /f %i in (文件集)逐一遍历文件集中每个文件的每一行,对每行的内容进行操作;代码中,是对配置文件每行进行读取,以默认空格和tab键做为分隔符,提取第一个字段进行操作。
taskkill /F /IM %%i 强制结束进程 可能某些进程无法正常结束,如果是XP系统可借助ntsd 命令来杀进程,它能够结束除System、smss.exe、csrss.exe、lsass.exe及各种rootkit程序外所有的程序。其它系统可另行下载ntsd.exe
上面只是提到了进程检测,其实检测Dll文件和系统服务也大同小异,这里只讲解核心代码:如要检测wmi.dll文件是否正在被使用,被哪个进程使用,可以使用以下命令:tasklist /m wmi.dll
而要检测某个系统服务是否正在运行,运行的进程是哪个,以Spooler服务为例则可以:tasklist /fi 'services eq spooler'