中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]那位请帮我分析以下代码!
作者:
标题: [求助]那位请帮我分析以下代码! 上一主题 | 下一主题
jlygq1968
初级用户





积分 46
发帖 9
注册 2007-5-27
状态 离线
『楼 主』:  [求助]那位请帮我分析以下代码!

那位请帮我分析以下代码!  越详细越好,因为我是菜鸟  谢谢!

声明:由于万恶微软弄了些万恶的HOME版系统,取消了一堆有用的命令,包括fsutil和wmic,使得批处理的功能不见了一大截,因此批处理在那些版本的系统里面无法正常运行!所以这个东西还是用来研究学习或者充当燃眉之急,别当它是万能的^_^

前言:经过了戒网的7天里面断断续续的初步构思,弄了个对付一般病毒的批处理专杀模板;

为兼顾其他语言的系统,使用了chcp 437命名使得批处理会在各种语言系统都支持的英文状态下运行(由于转为英文后不支持中文的进程操作,所以暂时取消这个功能);

大量使用标签使得整个模板分为多个功能模块,需要指定模块时可以灵活的使用call命令调用,具有很大的扩展性,如可以写一个抑制文件重新生成的模块然后在删除文件之后调用;

代码如下:

@echo off
title Killer of VirusName
echo Killer of VirusName

set PN=ProcessName1,ProcessName2,ProcessName3,,,
set IP=ImPath1,ImPath2,ImPath3,,,
set FN=FilePath1,FilePath2,FilePath3,,,
set AI=c:\windows\system32\ddtshtk.exe

                 rem STRAT

call :ENDPROC
call :DELFILE
call :ANTICF
call :CLEANREG
call :SHOWHIDDEN
call :DELTMP

goto :eof


                 rem Main Modules

:ENDPROC
cls
echo Ending Process ...
for /l %%a in (1,1,10) do call :DOENDPOC %%a
goto :EOF
:DOENDPOC
for /f "tokens=%1 delims=," %%i in ("%PN%") do (
                  start "" /min /realtime ntsd /c q /pn "%%i"
                 call :IEFO "%%i"
)
goto :EOF

:ENDPID
cls
echo Ending Process ...
set IP=%IP:\=\\%
for /l %%a in (1,1,10) do call :DOENDPID %%a
goto :EOF
:DOENDPID
for /f "tokens=%1 delims=," %%a in ("%IP%") do (
           for /f "skip=1" %%i in ('wmic PROCESS where ExecutablePath^="%%a" get ProcessId') do start "" /min /realtime ntsd /c q /pid "%%i"
           )
)
goto :EOF

:DELFILE
cls
echo Deleting Files ...
for /l %%a in (1,1,10) do call :DODELF %%a
goto :EOF
:DODELF
for /f "tokens=%1 delims=," %%i in ("%FN%") do start "" /min /realtime cmd /c del /f /q /a "%%i"
for /f "tokens=%1 delims=," %%i in ("%FN%") do if exist "%%i" goto :DODELF
goto :EOF

:CLEANREG
cls
echo Cleaning Registry ...
reg add "HKCR\exefile" /ve /d "Application" /f >nul
reg delete "HKCR\exefile" /ve /d "Application" /f >nul
sc delete "CSNetManagerXp" >nul
goto :EOF

:DELTMP
cls
echo Deleting TempFiles ...
goto :EOF


                 rem Extend Modules

:ANTICF
cls
echo Anti Creating Files ...
for /l %%a in (1,1,10) do call :DOANTICF %%a
goto :EOF
:DOANTICF
for /f "tokens=%1 delims=," %%i in ("%FN%") do (
                  md "%%i"
                  md "%%i\...\"
                  md "%%i\LPT1.\"
                  md "%%i\con..\"
)
goto :EOF
:DELANTICF
for /f "tokens=%1 delims=," %%i in ("%FN%") do rd "%%i" /s /q
goto :EOF

:SHOWHIDDEN
cls
echo Fixing Registry To Show Hidden Files ...
echo Windows Registry Editor Version 5.00 >showhidden.reg
echo.>>showhidden.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\NOHIDDEN] >>showhidden.reg
echo.>>showhidden.reg
echo "RegPath"="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced" >>showhidden.reg
echo "Text"="@shell32.dll,-30501" >>showhidden.reg
echo "Type"="radio" >>showhidden.reg
echo "CheckedValue"=dword:00000002 >>showhidden.reg
echo "ValueName"="Hidden" >>showhidden.reg
echo "DefaultValue"=dword:00000002 >>showhidden.reg
echo "HKeyRoot"=dword:80000001 >>showhidden.reg
echo "HelpID"="shell.hlp#51104" >>showhidden.reg
echo.>>showhidden.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL] >>showhidden.reg
echo.>>showhidden.reg
echo "RegPath"="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced" >>showhidden.reg
echo "Text"="@shell32.dll,-30500" >>showhidden.reg
echo "Type"="radio" >>showhidden.reg
echo "CheckedValue"=dword:00000001 >>showhidden.reg
echo "ValueName"="Hidden" >>showhidden.reg
echo "DefaultValue"=dword:00000002 >>showhidden.reg
echo "HKeyRoot"=dword:80000001 >>showhidden.reg
echo "HelpID"="shell.hlp#51105" >>showhidden.reg
echo.>>showhidden.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden] >>showhidden.reg
echo.>>showhidden.reg
echo "Type"="checkbox" >>showhidden.reg
echo "Text"="@shell32.dll,-30508" >>showhidden.reg
echo "WarningIfNotDefault"="@shell32.dll,-28964" >>showhidden.reg
echo "HKeyRoot"=dword:80000001 >>showhidden.reg
echo "RegPath"="Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced" >>showhidden.reg
echo "ValueName"="ShowSuperHidden" >>showhidden.reg
echo "CheckedValue"=dword:00000000 >>showhidden.reg
echo "UncheckedValue"=dword:00000001 >>showhidden.reg
echo "DefaultValue"=dword:00000000 >>showhidden.reg
echo "HelpID"="shell.hlp#51103" >>showhidden.reg
echo.>>showhidden.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden\Policy] >>showhidden.reg
echo.>>showhidden.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\SuperHidden\Policy\DontShowSuperHidden] >>showhidden.reg
echo.>>showhidden.reg
echo @="" >>showhidden.reg
regedit /s showhidden.reg
del showhidden.reg /q /f /a
goto :EOF
:DELSHOWHIDDEN
goto :EOF

:IEFO
cls
echo Setting IEFO ...
set FNT=%1
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\%FNT:~1,-1%" /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\%FNT:~1,-1%" /f /v "Debugger" /t REG_SZ /d "dikex.exe"
goto :EOF
:DELIEFO
set FNT=%1
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\%FNT:~1,-1%" /f
goto :EOF

:ANTIIEFO
cls
echo Restoring IEFO ...
for /f "skip=5 delims=" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options"') do call :DOANTIIEFO "%%i"
goto :EOF
:DOANTIIEFO
echo %1
for /f "skip=4 tokens=3 delims=制表符" %%i in ('reg query %1 /v debugger 2^>nul') do if /i "%%i"=="%AI%" reg delete %1 /f
goto :EOF

:EXTMOD
goto :EOF
:DELTMP
goto :EOF





使用时修改下面的几个命令:

set PN=ProcessName1,ProcessName2,ProcessName3,,,
set IP=ImPath1,ImPath2,ImPath3,,,
set FN=FilePath1,FilePath2,FilePath3,,,
set AI=c:\windows\system32\ddtshtk.exe

PN为进程的名称;IP为进程的映象路径,以防有的病毒使用系统进程的名字;FN为要删除的文件的路径;AI为IEFO中debugger对应的那个值;

结束进程:将ProcessName1等替换为进程名称,用逗号分隔,根据数量修改相应模块for命令里面in (1,1,10)的10,可以大一点(下同);遇到使用和系统进程相同名称时,call :ENDPROC改为call :ENDPID,并将ImPath1等替换为映象路径;

删除文件:将FilePath1等替换为想要删除的文件的完整路径;

清理注册表:reg add命令是用于添加指定的注册表信息,reg delete用于删除指定的注册表信息,关于他们的使用参数参考reg add /?和reg delete /? ,而sc delete命令用于删除执行的服务;

2007-6-18 21:43
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

//:SHOWHIDDEN

这段写的似乎不太高明啊
如果病毒"顺便"把注册表锁定了
.reg文件是无法导入的
所以先还是加上解锁注册表的模块吧:)

2007-6-18 22:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: