批处理监控进程,发现可疑进程文件服务及时查杀
1、打开记事本软件,将以下代码复制粘贴进去,保存为“MoniProcesses.bat”。
rem ---------------代码开始---------------
@echo off
rem 启动延缓环境变量扩展
setlocal EnableDelayedExpansion
rem 获取可疑进程配置文件路径
set mproc=%~dp0%MoniProcessesList.ini
rem 定义检测配置文件是否为空标志
set IsNul=yes
rem 如果配置文件不存成则生成
if not exist %mproc% echo. >%mproc%
cls
title 可疑进程监控
echo 开始进程监控……
echo.
rem 定义循环体
:strartMoni
rem 用ping命令来实现延时运行
for /l %%i in (1,1,5) do ping -n 1 -w 1000 168.20.0.1>nul
rem 上面语句也可写成 ping -n 5 -w 1000 168.20.0.1>nul
for /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 strartMoni
echo on
rem ---------------代码结束---------------

2、双击MoniProcesses.bat运行脚本,运行效果如下:

1、setlocal EnableDelayedExpansion: 启用延迟环境变量扩展名
该功能启用后,并且将变量由“%i%”改成"!i!"形式,可以确保脚本循环体中变量的值能够改变,否则循环体中的变量值无法改变。

2、%~dp0:获取脚本所有目录的完整路径。
%~0 获取脚本文件名
%~d0 获取脚本文件所在盘符
%~p0 获取脚本文件所在目录除盘符外的路径

3、if not exist filename echo. >filename 如果文件不存在就创建该文件
主要是if 的用法,比较简单。echo+. 中间无空格,常用于生成新文件。

4、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地址来实现非精确延时。

5、for /f %i in (文件集)逐一遍历文件集中每个文件的每一行,对每行的内容进行操作;代码中,是对配置文件每行进行读取,以默认空格和tab键做为分隔符,提取第一个字段进行操作。

6、taskkill /F /IM %%i 强制结束进程 可能某些进程无法正常结束,如果是XP系统可借助ntsd 命令来杀进程,它能够结束除System、smss.exe、csrss.exe、lsass.exe及各种rootkit程序外所有的程序。其它系统可另行下载ntsd.exe

1、上面只是提到了进程检测,其实检测Dll文件和系统服务也大同小异,这里只讲解核心代码:
如要检测wmi.dll文件是否正在被使用,被哪个进程使用,可以使用以下命令:
tasklist /m wmi.dll

2、而要检测某个系统服务是否正在运行,运行的进程是哪个,以Spooler服务为例则可以:
tasklist /fi "services eq spooler"

