本帖最后由 hez2010 于 2016-2-21 19:54 编辑
看见了http://bbs.kafan.cn/thread-1935417-1-1.html这个帖子,发现这里面的程序检测U盘病毒太局限,而且不一定所有人的U盘都是从h盘开始,于是写了一个比较完善的U盘病毒检测批处理,源码完全开放。欢迎拍砖。
更新日志:
【2016/2/21】2.0
1、优化对Autorun.inf的处理方式,重构Autorun.inf,不影响正常使用
2、细节调整
3、优化文件属性检查的方式
【2016/2/20】1.0
1、创建程序
- @echo off
- setlocal enabledelayedexpansion
- title U 盘病毒检测及清理工具 2.0 by hez2010
- color 3f
- cd /d %~dp0
- pushd %~dp0
- set /a No.=0
- :main
- for /f %%a in ('wmic logicaldisk where "drivetype='2'" get DeviceID ^|findstr :') do (
- cls
- echo.
- echo 已检测到 U 盘, 正在处理 %%a ...
- call :scan %%a
- )
- cls
- echo.
- echo 已完成, 共发现 !No.! 异常项目
- echo.
- echo 任意键退出
- pause>nul
- exit
- :scan
- set Drive=%~1
- if /i "!Drive!" == "" goto :eof
- if not exist "!Drive!" goto :eof
- cd /d "!Drive!">nul
- attrib -h -s -r "!Drive!\autorun.inf" >nul 2>nul
- echo.
- echo 检查 autorun.inf
- echo -----------------------------
- if exist "!Drive!\autorun.inf" (
- del /f /q "%temp%\autorun_new.inf">nul 2>nul
- for /f "tokens=*" %%m in ('"type !Drive!\autorun.inf 2>nul"') do (
- set /a allow=1
- for /f "tokens=1,2,3 delims==" %%i in ("%%m") do (
- if /i "%%i" == "Shellexecute" (
- if exist "%%j" (
- set /a No.+=1&set /a allow=0
- del /a /f /q %%j >nul 2>nul
- echo 发现可疑文件: %%j, 已解除威胁
- )
- if /i not "%%k"=="" if exist "%%k" (
- set /a No.+=1&set /a allow=0
- del /a /f /q %%k >nul 2>nul
- echo 发现可疑文件: %%k, 已解除威胁
- )
- )
- if /i "%%i" == "Open" (
- if exist "%%j" (
- set /a No.+=1&set /a allow=0
- del /a /f /q %%j >nul 2>nul
- echo 发现可疑文件: %%j, 已解除威胁
- )
- if /i not "%%k"=="" if exist "%%k" (
- set /a No.+=1&set /a allow=0
- del /a /f /q %%k >nul 2>nul
- echo 发现可疑文件: %%k, 已解除威胁
- )
- )
- )
- if !allow!==1 echo %%m>>"%temp%\autorun_new.inf"
- )
- move /y "%temp%\autorun_new.inf" "!Drive!\autorun.inf">nul
- )
- echo.
- echo 检查 AutoIt 病毒
- echo -----------------------------
- if exist "!Drive!\skypee" (
- set /a No.+=1
- rd /s /q "!Drive!\skypee" >nul 2>nul
- echo 发现 AutoIt: "!Drive!\skypee", 已解除威胁
- )
- echo.
- echo 检查伪装快捷方式
- echo -----------------------------
- for /f "delims=" %%i in ('"dir /a /s /b !Drive! 2>nul"') do (
- if exist "%%i.lnk" (
- set /a No.+=1
- del /a /f /q "%%i.lnk" >nul 2>nul
- echo 发现可疑文件: "%%i.lnk", 已解除威胁
- )
- if exist "%%i.exe" (
- set /a No.+ =1
- del /a /f /q "%%i.exe" >nul 2>nul
- echo 发现可疑文件: "%%i.exe", 已解除威胁
- )
- )
- echo.
- echo 检查隐藏文件
- echo -----------------------------
- for /f "tokens=* delims=" %%i in ('"dir /a /s /b !Drive! 2>nul"') do (
- for /f "tokens=1* delims= " %%q in ('attrib "%%a"') do (
- echo %%q|findstr "h" >nul
- if /i !errorlevel! equ 0 (
- set /a No.+=1
- attrib -h -s -r "%%i" >nul 2>nul
- echo 发现隐藏文件: "%%i", 已恢复正常
- )
- )
- )
- echo.
- echo 此 U 盘检查完毕, 任意键继续检查下一个 U 盘
- pause>nul
- goto :eof
复制代码 |