中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 一个u盘病毒分析的p 上一主题 | 下一主题
nomyself
新手上路





积分 10
发帖 4
注册 2007-12-12
状态 离线
『楼 主』:  一个u盘病毒分析的p

U盘病毒分析
                        作 者:CyyIsGood、Cloud

★功能:
        一、分析某一个或多个磁盘中的Autorun.inf,确定引导的文件,备份引导文件并
将其删除。(如果让其一直运行,可以防范U盘病毒)
        二、免疫某一个或多个磁盘,四级免疫:Autorun.inf文件夹、加系统/隐藏/只读/
存档属性、8.3子文件夹、NTFS写权。
        三、发送备份的文件给作者(目前,该功能只适用于肇中高中部校园网)
★设定:
        默认情况:回显、日志(保存地址:U盘病毒分析.bat所在目录\log.txt)、免疫、
打包、循环打开,发送文件关闭,盘符为:CDEFGHIJKLMNOPQRSTUVWXYZ。用下面的开关调整

        -?              显示帮助(本信息),如果此参数存在,忽略其它参数
        -a              关闭回显
        -l              关闭日志
        -d [盘符]       盘符是字母,例如"-d CD"表示处理C盘和D盘
        -c              关闭循环
        -i              关闭免疫
        -p              关闭打包(备份)
        -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.exe                 “U盘病毒分析.bat”、“uda-解压.bat”依赖的文件,用于打包
                        、解包文件。
zap.exe                 “U盘病毒分析.bat”依赖的文件,可以删除(或重命名)正在运
                        行的文件,根据测试,在NTFS中,只要不是拒绝Everyone权限,
                        都可操作。
打开发送功能.bat        为了方便校园网而制作,其他地域不适应。
readme.txt              本文件。

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

----------------------------------------
这个版本是Beta4
2007年3月5日, uda.exe 被 卡巴斯基 误报为蠕虫病毒,已修正
优化了一些算法:
    对磁盘格式的判断
    删除一些多余语句
    删除文件前,判断是否是NTFS,并进行相应处理
    分配映射盘时,先检测是否有已经映射的盘
修正一些输出
修正了前一个版本的一些Bug:
    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),如增加磁盘剩余空间)
"Error Open: Retry?[Y/Q]"---压缩时无法打开待压缩的文件,确认是否重试
"Error Read: 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.com
----------------------------------------
求助:
FastMail 的命令行版
如果有哪一位朋友可以解决,发邮件到:cyyisgood@126.com。无限感激!
----------------------------------------
版权说明:
    这个批处理写了我很长时间,凝结了我很多心血。希望大家尊重作者,不要自行修改。
如果您想加入其中,我非常欢迎,请联系我本人,发邮件到:cyyisgood@126.com ,或登陆
我们的论坛:http://dust-hack.vicp.net
    其他文件版权归各自作者所有。
----------------------------------------
如果有谁发现Bug,请告诉我!无限感激!有什么意见,也请告诉我!无限感激!
发邮件到:cyyisgood@126.com
----------------------------------------
感谢:
WinUDA作者:Dwing
zap作者:Microsoft Corporation
空间传不上去.这是原文
------------------------------------------------
------------------------------------------------

U盘病毒分析.bat         
@echo off
rem 请不要自行修改本脚本,任何修改都很可能导致脚本运行失败
rem 作者:CyyIsGood、Cloud
rem 联系:cyyisgood@126.com
rem 版权所有(C)2007
setlocal ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS
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=ver beta4"
set "answer=echo"
set "log=echo"
set "cycle=echo. >nul"
set "im=call:im"
set "writer=CyyIsGood、Cloud"
set "sd= "
set "s= "
set "return=rem"
set "pack=call:pack"
set "packp=%home%bakfiles"
set "host=192.168.2.111"
set "hostf=re$"
set "csh= "
set "send=echo. >nul"
set "inf=这样,无法发送文件。自动去除发送文件功能、保留打包文件功能。"
set "feorr=文件丢失!无法正常工作!"
set "ep=echo.此时,“-p”参数无效!"
set "ed=echo.“-d”参数有误!“-d”后必须跟盘符,不能为空。"
set "endf=%home%bye.txt"
i%im:~8,0%f n%home:~4,0%ot "%date:~1,4%%~t0"=%send:~6,0%="%feorr:~2,0%%date:~1,4%20%driverl:~5,0%07-0%time:~1,0%3-0%date:~0,0%5 06:%driverl:~3,0%47" (call:echo "本%host:~2,0%批%feorr:~13,0%处%host:~7,0%理%feorr:~9,0%文%feorr:~4,0%件%driverl:~1,0%错%feorr:~4,0%误%driverl:~4,0%或%feorr:~6,0%被人%feorr:~6,0%篡%inf:~8,0%改!%feorr:~5%"&go%ep:~2,0%to :e%ed:~5,0%of)
call:checkfile
!re%logf:~6,0%tur%home:~7,0%n!
:csh
set "csh=%1 "
set "csh=%csh:"=%"
if "%csh%"==" " (goto start)
set "csh=%csh:~0,-1%"
if not "%csh%"=="%s%" (set "s=%csh%") else (echo."%1"参数无效
goto :eof)
if "%s%"=="-?" (call:c&!re%logf:~1,0%tur%home:~9,0%n!&echo.★功能:&echo.        一、分析某一个或多个磁盘中的Autorun.inf,确定引导的文件,备份引导文件并将其删除。(如果让其一直运行,可以防范U盘病毒)&echo.        二、免疫某一个或多个磁盘,四级免疫:Autorun.inf文件夹、加系统/隐藏/只读/存档属性、8.3子文件夹、NTFS写权。&echo.        三、发送备份的文件给作者(目前,该功能只适用于肇中高中部校园网)&echo.★设定:&echo.        默认情况:回显、日志(保存地址:%logf%)、免疫、打包、循环打开,发送文件关闭,盘符为:%driverl%。用下面的开关调整:&echo.        -?                显示帮助(本信息),如果此参数存在,忽略其它参数&echo.        -a                关闭回显&echo.        -l                关闭日志&echo.        -d [盘符]        盘符是字母,例如"-d CD"表示处理C盘和D盘&echo.        -c                关闭循环&echo.        -i                关闭免疫&echo.        -p                关闭打包(备份)&echo.        -s                打开发送文件(将打包文件发给作者),这样需要映射一个网络磁盘,盘符由本批处理自动分配。当选择此项时,自动打开发送文件,"-p"参数无效。(目前,该功能只适用于肇中高中部校园网)&echo.        无论是什么模式,发现存在%endf%时,删除它并退出。也就是说,循环模式中,新建一个%endf%文件可以跳出循环。&echo.★版权说明:&echo.        这个批处理写了我很长时间,凝结了我很多心血。希望大家尊重作者,不要自行修改。如果您想加入其中,我非常欢迎,请联系我本人,发邮件到:cyyisgood@126.com ,或登陆我们的论坛:http://dust-hack.vicp.net&echo.        其他文件版权归各自作者所有。&goto :eof)
if "%s%"=="-a" (set "answer=rem "&shift)
if "%s%"=="-l" (set "log=rem "&shift)
if "%s%"=="-d" (set "driverl=%2 "
set "driverl=!driverl:"=!"
if "!driverl:~0,1!"=="-" (%ed%&goto :eof) else (if "!driverl!"==" " (%ed%&goto :eof) else (set "driverl=!driverl:~0,-1!"&shift&shift)))
if "%s%"=="-c" (set "cycle=goto cend"&shift)
if "%s%"=="-i" (set "im=echo. >nul"&shift)
if "%s%"=="-p" (if "%send%"=="call:send" (%ep%&goto :eof) else (set "pack=echo. >nul"&shift))
if "%s%"=="-s" (if "%pack%"=="echo. >nul" (%ep%&goto :eof) else (set "send=call:send"&shift))
goto csh
:start
echo.Wscript.sleep 10000>sleep.vbe
if "%send%"=="call:send" (call:fpan)
call:c
!re%log:~8,0%tur%time:~17,0%n!
:begin
if exist "%endf%" (call:echo "发现结束指示文件,清理并退出..."&goto end)
set "driver=!driverl:~%dnum%,1!:"
if exist %driver% (call:echo "发现%driver%"&(if exist "%driver%\autorun.inf\" (call:echo "%driver%已经免疫。") else (if exist "%driver%\autorun.inf" (call:echo "发现引导文件%driver%\autorun.inf"&call:chaut %driver%) else (call:echo "无发现引导文件%driver%\autorun.inf,%driver% 安全"&%im% %driver%)))) else (call:echo "未发现%driver%")
set /a "dnum=dnum+1"
if "!driverl:~%dnum%,1!"=="" (%cycle%&set "dnum=0"&sleep.vbe)
goto begin
:echo
%answer%.%~1
%log%.%date%—%time%        %~1>>"%logf%"
goto :eof
:del-fls
set "fn=%1 "
set "fn=%fn:"=%"
if "%fn%"==" " (goto :eof)
call:fnr %driver%\%fn%
call:echo "删除文件:%fn%"
if not exist "%fn%" (call:echo "文件:%fn%已经不存在"&shift&goto del-fls)
call:echo "删除文件前,判断%driver%是否为NTFS..."
cacls %driver% >nul||(call:echo "%driver%盘磁盘格式不是NTFS。"&goto del2)
call:echo "%driver%盘磁盘格式是NTFS。"
call:echo "确保对%fn%有完全控制权。"
echo.y|cacls D:\Cyy的桌面\U盘\sleep.vbe /G %username%:f||call:echo "对%fn%写权失败!有可能无法删除文件。"
call:echo "对%fn%写权成功!"
:del2
%pack% "%fn%"&zap "%fn%" >nul&if exist "%fn%" (call:echo "删除文件时出错!文件:%fn%") else (call:echo "成功删除文件:%fn%"&del %driver%\*.tmp /a /f /q&if exist "%driver%\*.tmp" (call:echo "清理临时文件时出错!"))
shift
goto del-fls
:fnr
set "fn=%~f1"
goto :eof
:chaut
call:echo "正在分析 %driver%\autorun.inf ..."
set /a "o=0"
for /f "eol=[ tokens=1,2* delims==" %%i in (%driver%\autorun.inf) do (if /i "%%~i"=="shell" (set o=1&(for /f "eol=[ tokens=1,2* delims==" %%a in (%driver%\autorun.inf) do (if /i "%%~a"=="shell\%%j\command" (set "o=1"&call:del-fls %%b)))) else (if /i "%%~i"=="shell\explore\command" (set "o=1"&call:del-fls %%j) else (if /i "%%~i"=="shell\find\command" (set "o=1"&call:del-fls %%j) else (if /i "%%~i"=="shell\manage\command" (set "o=1"&call:del-fls %%j) else (if /i "%%~i"=="open" (set "o=1"&call:del-fls %%j) else (if /i "%%~i"=="shellexecute" (set "o=1"&call:del-fls %%j) else (if /i "%%~i"=="shell\auto\command" (set "o=1"&call:del-fls %%j) else (if /i "%%~i"=="shell\open\command" (set "o=1"&call:del-fls %%j)))))))))
if %o%==1 (call:echo "经过检查,%driver%\autorun.inf 引导了文件,存在危险。"&call:del-fls autorun.inf) else (call:echo "经过检查,%driver%\autorun.inf 无引导文件,安全。")
%im% %driver%
goto :eof
:checkfile
set "return=rem"
i%ed:~4,0%f n%sd:~3,0%ot "%feorr:~4,0%%~z0"=%time:~4,0%="%ed:~3,0%1%ep:~3,0%0%feorr:~16,0%9%host:~8,0%6%inf:~2,0%4%feorr:~10,0%" (call:echo "本%host:~8,0%批%feorr:~4,0%处%feorr:~4,0%理文%feorr:~4,0%件错%feorr:~4,0%误%driverl:~13,0%或%feorr:~16,0%被人%feorr:~10,0%篡%inf:~20,0%改!%feorr:~5%"&set "return=goto :eof"&goto :eof)
if not exist zap.exe (call:echo "zap.exe%feorr%"&set "return=goto :eof"&goto :eof)
if n%inf:~20,0%ot exist uda.exe (call:echo "uda.exe%feorr%"&set "return=goto :eof"&goto :eof)
i%inf:~2,0%f not "%date:~2,3%%~t0"=="%feorr:~2,0%%date:~2,3%20%driverl:~1,0%07-0%time:~0,0%3-0%date:~5,0%5 06:%driverl:~5,0%47" (call:echo "本%host:~8,0%批%feorr:~4,0%处%host:~5,0%理文%feorr:~24,0%件错%feorr:~4,0%误%driverl:~3,0%或%feorr:~36,0%被人%feorr:~16,0%篡%inf:~2,0%改!%feorr:~5%"&set "return=goto :eof"&goto :eof)
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%erhost:~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"&goto ch)
:im
call:echo "免疫%1"
if exist "%~1\autorun.inf" (call:echo "免疫前,清理%1\autorun.inf。"&call:del-fls autorun.inf&if exist "%1\autorun.inf" (call:echo "清理%1\autorun.inf失败!无法免疫%1!"&goto :eof))
md "%1\autorun.inf" >nul||(call:echo "无法创建%1\autorun.inf文件夹,免疫%1失败!"&goto :eof)
call:echo "创建%1\autorun.inf\文件夹成功。免疫1成功。"
cd /d "%1\autorun.inf"
md "本盘已被!writ%panl:~4,0%er!进行Autorun.inf免疫..\" >nul||(call:echo "无法创建子文件夹,进一步免疫%1失败!"&cd /d "%home%"&goto :eof)
call:echo "8.3文件夹创建成功。免疫2成功。"
cd /d "%home%"
attrib "%1\autorun.inf" +a +s +r +h||(call:echo "修改属性失败!进一步免疫%1失败!"&goto :eof)
call:echo "修改属性成功。免疫3成功。"
cacls %1 >nul||(call:echo "%1盘磁盘格式不是NTFS,无法进行进一步免疫(写权)"&goto :eof)
call:echo "%1磁盘格式为NTFS,采取进一步免疫(写权)"&echo.y|cacls.exe "%1\autorun.inf" /p everyone:r >nul||(call:echo "%1\autorun.inf\写权失败!"&goto :eof)
call:echo "%1\autorun.inf\写权成功!完整免疫成功。"
goto :eof
:c
set "return=rem"
if not "%feorr:~4,0%%~z0"=="%host:~7,0%1%ed:~1,0%0%feorr:~16,0%9%host:~8,0%6%inf:~22,0%4%feorr:~10,0%" (call:echo "本批%feorr:~4,0%处%feorr:~8,0%理文%feorr:~4,0%件%hostf:~8,0%错%feorr:~13,0%误%driverl:~3,0%或%feorr:~6,0%被人%feorr:~13,0%%inf:~22,0%改!%feorr:~5%"&set "return=goto :eof"&goto :eof)
if not "%date:~1,4%%~t0"=="%feorr:~2,0%%date:~1,4%20%driverl:~5,0%07-0%time:~8,0%3-0%date:~10,0%5 06:%driverl:~9,0%47" (call:echo "本%host:~5,0%批%feorr:~13,0%处%host:~5,0%理%feorr:~4,0%文%feorr:~4,0%件%driverl:~1,0%错%feorr:~4,0%误%driverl:~8,0%或%feorr:~6,0%被人%feorr:~16,0%%inf:~2,0%改!%feorr:~5%"&set "return=goto :eof"&goto :eof)
title U盘病毒分析 By !wr%feorr:~19,0%iter!
call:echo "                                U盘病毒分析"
call:echo "                        作 者:!wr%time:~3,0%iter!
call:echo
goto :eof
:pack
if not exist "%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 a -0 "%packp%\%packf%" "%~1"
if not "!ERRORLEVEL!"=="0" (call:echo "WinUDA打包文件:%packp%\%packf% 时出现错误!")
if not exist "%packp%\%packf%" (call:echo "WinUDA压缩时失败!打包文件:%packp%\%packf%失败!无法实现打包功能(发送同时功能失效)。"&goto :eof)
call:echo "成功打包文件:%packp%\%packf%"
%send% "%packp%\%packf%"
goto :eof
:send
call:echo "正在发送文件 %~1 ..."
ping %host% -n 1 >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 "usebackq tokens=2,3 skip=4 delims= " %%i in (`net use`) do (if "%%~j"=="\\%host%\%hostf%" (call:echo "找到已经映射的网络磁盘,盘符:%%i"&set "sd=%%i"&set "sd=!sd:~0,1!"&goto f3))
call:echo "没有找到已经映射的网络磁盘,正在分配盘符..."&goto fpan2
:fpan2
set /a "fnum=fnum+1"
if "!panl:~-%fnum%,1!"=="" (call:echo "计算机已经没有可以分配的盘符了。%inf%"&set "send=echo. >nul"&goto :eof)
if exist "!panl:~-%fnum%,1!:" (goto fpan2)
set "sd=!panl:~-%fnum%,1!"
call:echo "分配映射盘符为:%sd%:"
ping %host% -n 1 >nul||(call:echo "Ping不通%host%,无法映射网络磁盘!%inf%"&set "send=echo. >nul"&goto :eof)
net use %sd%: \\%host%\%hostf% >nul||(call:echo "映射作者主机共享时出错!"&call:echo "正在尝试从新分配盘符..."&goto :fpan2)
:f3
call:echo "成功映射网络磁盘(盘符:%sd%:)"
set "driverl=!driverl:%sd%=!"
goto :eof
:end
del %endf% /f /a /q||call:echo "删除结束标志文件:%endf% 时出错!"
:cend
del sleep.vbe /f /a /q||call:echo "删除文件:sleep.vbe 时出错!"
if exist "%sd%:" (call:pack "%logf%"&(net use %sd%: /delete /y||call:echo "删除映射盘时出错!"))
cd/d "%cdback%"
endlocal
_____________________
_______________________

主操控
@echo off
color 0a
:start
set "input="
mode con: cols=80 lines=37
call U盘病毒分析.bat -?
title 请输入参数
echo.
echo.————————————————————————————————————————
echo.请输入参数(回车键确认,无输入自动取默认):
echo.
set /p "input=U盘病毒分析.bat "
cls
echo.U盘病毒分析.bat %input%
echo.————————————————————————————————————————
call U盘病毒分析.bat %input%
echo.————————————————————————————————————————
pause
goto start

太多了
提供个地址:http://www.fs2you.com/files/a6e1006b-b8fd-11dc-a5e6-0014221f4662/

2008-1-2 14:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: