多语言展示
当前在线:1644今日阅读:27今日分享:41

批处理监控进程,发现可疑进程文件服务及时查杀

没有专业工具,却需要对特定进程、DLL动态链接库文件、系统服务进行监控,并及时查杀?如木马进程、防止小孩沉迷电脑游戏,监控游戏进程、FTP服务等。其实,使用批处理就可以轻松实现。
一、原代码:这里只以监控进程为例
1

打开记事本软件,将以下代码复制粘贴进去,保存为“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 ---------------代码结束---------------

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

三、如何检测Dll文件和系统服务
1

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

2

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

推荐信息