阿拉手把手教你做自己的病毒免疫
本免疫绝大部分参考了三联阿古的疫苗制作,在此向他表示深深的感谢。
由于阿古的免疫文件代码太多,我将他的代码精简细化,稍微修改了下方便大家做免疫。
批处理文件无须任何的改动,自己用记事本打开相关的配置文件,自己添加相关的需要免疫的内容就可以了。
自己修改相关的txt就可以了
磁盘分区免疫的配置文件 : 磁盘分区.txt
注册表重重定向的配置文件 : 重定向.txt
注册表禁止运行的配置文件:禁止运行.ini
自定义免疫的配置文件:自定义.txt
文中部分代码细节地方有误,附件已经纠正,请以附件为参考
阿拉发贴
今年是一个病毒年,朋友们刚经历完熊猫/威金的洗礼,又迎来了机器狗/IGM病毒的考验,网上也不出不少林林总总的病毒补丁。其中应该以阿古兄弟的补丁作得比较不错把,不知道是什么原因,据说他现在已经停止了疫苗的更新。
其实疫苗的制作也不是很难的,网上很多的朋友给我们都提供了不少防毒的思路,我们都可以借鉴,就算以后出了新毒,我们也可以参考这个方法来制作病毒免疫在这里就以阿古的病毒免疫为例子给大家介绍下怎么做病毒免疫(高手就跳过把,呵呵)
其实阿古的免疫精简一点的样子应该是这样的:
md %setup%>nul&attrib +s +h +r %setup%>nul&samlan.dll /Noverbose /file=directoriesonly %setup% /perm /setowner= >nul
也就是
md 假的病毒文件名>nul&attrib +s +h +r 假的病毒文件名>nul&samlan.dll /Noverbose /file=directoriesonly 假的病毒文件名 /perm /setowner= >nul
先建立假的病毒文件,然后再给该文件加上 系统/隐藏/只读的属性,最后借用微软的NT4.0和2000Windows资源工具包提供的SubInAcl.exe(也就是samlan.dll,阿古在这里给SubInAcl.exe改名了的)来去修改该文件的权限,可以做到CACLS做不到的事情。
当然,如果我们就这样一个个写免疫的话,应该是很累的。
所以使用了变量以及病毒列表配置文件的方法,阿古也就是用的这样的方法,上面只是简单的介绍单个文件的免疫而已。
echo off
FOR /F "tokens=1,2 delims==" %%i in (tempvir.dat) do (
Set setup=%%i
Call :setup
)
:setup
echo 正在安装自定义免疫
echo.
echo 安装提示:
echo.
md %setup%>nul&attrib +s +h +r %setup%>nul&samlan.dll /Noverbose /file=directoriesonly %setup% /perm /setowner= >nul
goto :eof
自己写一个记事本,里面写上所有你需要禁止的病毒的绝对路径,譬如
C:\WINDOWS\system32\usrinit.exe
C:\WINDOWS\igm.exe
d:\1.exe
````````
就这样的逐行写上你需要免疫的病毒文件就可以了。
这个病毒库的制作我们可以参考三联的Virlist中的病毒库。
其中的diskvir.dat 是针对磁盘分区的免疫(这个使用的方法又有所不同);
sysvirXP.dat是针对系统目录以及用户应用程序文件夹(C:\Program Files)等目录的病毒免疫;
sysvir2K.dat同上,是针对2K系统的;
tempvir.dat是临时目录;
regdef.dat是在注册表中禁止运行的程序;
samlan.tmp其实就是个注册表文件,应该是通过组策略来禁止一些程序运行的,估计是阿古在这里的机器上先建立好这个规则,然后再导出的,这个方法我们可以省略```因为这个确实不怎么好编辑的;
HYNET1.vbe是浩月朋友写的防止临时目录运行可执行文件的VBE脚本
HYNET2.vbe是删除脚本,有时候有的朋友说用了三联免疫临时目录出现什么问题,应该就是用了上面的VBE脚本。
如果使用了该脚本并且使用HYNET2.vbe删除无效的话,你可以手动进注册表删除。
该脚本免疫对应的路径为
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\0\Paths\
打开注册表找到该位置,手动将下面的该项下面的值全部删除,注销下或者用命令刷新下组策略就可以。(taskkill /im explorer.exe /f
explorer.exe
gpupdate/force
RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters)
我们如果制作简单的免疫的话,3个文件就够了,如图:
一个samlan.dll(SubInAcl.exe)
一个病毒库文件(文件名任意)
一个批处理文件:
echo off
FOR /F "tokens=1,2 delims==" %%i in (我们的病毒库) do (
Set setup=%%i
Call :setup
)
:setup
echo 正在安装自定义免疫
echo.
echo 安装提示:
echo.
md %setup%>nul&attrib +s +h +r %setup%>nul&samlan.dll /Noverbose /file=directoriesonly %setup% /perm /setowner= >nul
goto :eof
如果远程调用的话,在服务器将该目录共享,然后将文件改下应该就可以的:
echo off
copy \\该文件的共享路径\samlan.dll %systemroot%\system32 /y
FOR /F "tokens=1,2 delims==" %%i in ( \\该文件的共享路径\我们的病毒库) do (
Set setup=%%i
Call :setup
)
:setup
echo 正在安装自定义免疫
echo.
echo 安装提示:
echo.
md %setup%>nul&attrib +s +h +r %setup%>nul&samlan.dll /Noverbose /file=directoriesonly %setup% /perm /setowner= >nul
goto :eof
如果是卸载免疫的话,也是一样的3个文件,就是批处理的内容不一样而已:
echo off
FOR /F "tokens=1,2 delims==" %%i in (mianyi.dat) do (
Set setup=%%i
Call :setup
)
:setup
cls
samlan.dll /Noverbose /file=directoriesonly "%setup%" /setowner=everyone /grant=everyone >nul&attrib -s -h -r "%setup%">nul&rd /s /q "%setup%">nul
goto :EOF
三联式磁盘目录免疫的方法:
echo off
:start
copy samlan.dll %systemroot%\system32 /y
Set list1=diskvir.txt
Set DISKLIST=C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,
for /d %%M in (%DISKLIST%) do (
if exist "%%M:" set disk=%%M:&CALL :disk
)
cls
:setup3
cls
echo 正在安装磁盘分区免疫
echo.
echo 安装提示:
echo.
md "%disk%\%setup3:~0%">nul&attrib +s +h +r "%disk%\%setup3:~0%">nul&samlan.dll /Noverbose /file=directoriesonly "%disk%\%setup3:~0%" /perm /setowner= >nul
if not exist "%disk%\Data %computername%.exe" md "%disk%\Data %computername%.exe">nul&attrib +s +h +r "%disk%\Data %computername%.exe">nul&samlan.dll /Noverbose /file=directoriesonly "%disk%\Data %computername%.exe" /perm /setowner= >nul
goto :EOF
:disk
cd.>%disk%\GameSetup.exe&attrib +s +h +r %disk%\GameSetup.exe>nul&samlan.dll /Noverbose /file %disk%\GameSetup.exe /perm /setowner= >nul
FOR /F "tokens=1,2 delims==" %%i in (%list1%) do (
Set setup3=%%i
call :setup3 %%i
)
goto :EOF
三联式磁盘目录卸载的方法:
echo off
:start
copy samlan.dll %systemroot%\system32 /y
Set list1=diskvir.txt
Set DISKLIST=C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,
for /d %%M in (%DISKLIST%) do (
if exist "%%M:" set disk=%%M:&CALL :disk
)
cls
:setup3
cls
echo 正在卸载磁盘分区免疫
echo.
echo 卸载提示:
echo.
samlan.dll /Noverbose /file=directoriesonly "%disk%\%setup3:~0%" /setowner=everyone /grant=everyone >nul&attrib -s -h -r "%disk%\%setup3:~0%">nul&rd "%disk%\%setup3:~0%" /s /q >nul
if exist "%disk%\Data %computername%.exe" samlan.dll /Noverbose /file=directoriesonly "%disk%\Data %computername%.exe" /setowner=everyone /grant=everyone >nul&attrib -s -h -r "%disk%\Data %computername%.exe">nul&rd "%disk%\Data %computername%.exe" /s /q >nul
goto :EOF
:disk
samlan.dll /Noverbose /file %disk%\GameSetup.exe /setowner=everyone /grant=everyone >nul&attrib -s -h -r %disk%\GameSetup.exe>nul&del %disk%\GameSetup.exe /f /q >nul
FOR /F "tokens=1,2 delims==" %%i in (%list1%) do (
Set setup3=%%i
call :setup3 %%i
)
goto :EOF
注册表禁止运行程序的制作方法:
@set dbg=
@echo %dbg% off&&setlocal EnableDelayedExpansion
set no_=0
set ko_=0
reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun /f >nul 2>nul
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v "DisallowRun" /t REG_DWORD /d 1 /f >nul 2>nul
echo 正在检查进程中是否有可疑文件运行......
for /f "delims=" %%e in (norun.ini) do (
tasklist|find /i "%%e"&&echo 发现可疑进程 %%e
taskkill /f /im %%e>nul 2>>nul&&echo 已经结束可疑进程 %%e
)
echo.&echo 进程检查结束, 开始导入禁止运行表......
for /f "delims=" %%i in (norun.ini) do (
if %%i neq setup.exe (reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun /v !no_! /d %%i /f >nul)
set /a no_+=1
)
echo.&echo 有 !no_! 个怀疑病毒文件被列入禁止运行表。
norun.ini为禁止运行的进程列表。
注册表重定向(也是禁止病毒的方法)
echo off
copy samlan.dll %systemroot%\system32 /y
samlan.dll /Noverbose /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\0\Hashes" /perm /grant=everyone=f
samlan.dll /Noverbose /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" /perm /grant=everyone=f
cls
Set listreg=regdef.dat
FOR /F "tokens=1,2 delims==" %%i in (%listreg%) do (
Set regsetup=%%i
Call :regsetup
)
samlan.dll /Noverbose /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\0\Hashes" /perm /grant=everyone=r
samlan.dll /Noverbose /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" /perm /grant=everyone=r
:regsetup
cls
echo 正在加载注册表主动防御
echo.
echo 安装提示:
cd /d %systemroot%
cd\
samlanreg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\%regsetup%" /v Debugger /t reg_sz /d c:\\病毒.exe /f
goto :EOF
注册表定向卸载:
echo off
copy samlan.dll %systemroot%\system32 /y
samlan.dll /Noverbose /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Safer\CodeIdentifiers\0\Hashes" /perm /grant=everyone=f
samlan.dll /Noverbose /subkeyreg "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options" /perm /grant=everyone=f
cls
Set listreg=regdef.dat
FOR /F "tokens=1,2 delims==" %%i in (%listreg%) do (
Set regsetup=%%i
Call :regsetup
)
:regsetup
cls
echo 正在卸载注册表主动防御
echo.
echo 卸载提示:
cd /d %systemroot%
cd\
samlanreg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\%regsetup%" /f
goto :EOF
以上其实只不过将阿古的病毒免疫的原理分解了出来,给大家小小的介绍下而已,目的也是让大家学会简单的免疫。也许有朋友说这样似乎没有什么用,但是总比没有免疫的强,防胜与无。
用这个免疫需要思考的就是在免疫完再通过注册表禁止samlan.dll(SubInAcl.exe)的运行。
我们可以尝试下通过注册表禁止SubInAcl.exe运行,看是否还可以进行病毒免疫:
@echo off
if exist 1.reg del 1.reg
echo Windows Registry Editor Version 5.00>1.reg
echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]>>1.reg
echo "DisallowRun"=dword:00000001>>1.reg
echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun]>>1.reg
echo "**delvals."=" ">>1.reg
echo "57124"="SubInAcl.exe">>1.reg
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\SubInAcl.exe]>>1.reg
echo "Debugger"="c:\\就是不准你娃用.exe">>1.reg
regedit/s 1.reg
del 1.reg
exit
如上是通过注册表禁止某文件运行的方法,
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\DisallowRun
这里是禁止运行的文件,通过组策略禁止指定的程序,注册表的值也是写到这里的;
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
这里是通过注册表的来重定向,也就是将 SubInAcl.exe定向到c:\\就是不准你娃用.exe,当你执行SubInAcl.exe的时候,就会运行c:\\就是不准你娃用.exe,但这个c:\\就是不准你娃用.exe是不存在的,也或者是一个提示的程序什么的(该文件为病毒什么什么的,禁止运行)。
你也可以用这个方法来定向任何文件,譬如你可以将QQ重定向为UC或者其他的怎么的你指定的程序,如果你需要禁止运行,。将该文件定向为一个不复存在的exe就可以
"Debugger"="某不存在的EXE文件名"
这里记住路径使用双斜杠:\\ 如c:\\1\\2\\3\\4.exe.
另外提一下另外种新的免疫方法
md %systemroot%\system32\drivers\pcibus.sys
md %systemroot%\system32\drivers\pcibus.sys\alft..
echo y|cacls %systemroot%\system32\drivers\pcibus.sys\alft..\ /e /p everyone:n
echo y|cacls %systemroot%\system32\drivers\pcibus.sys /e /p everyone:n
也就是
md 假的病毒文件
md 假的病毒文件\任意名文件...
echo y|cacls 假的病毒文件\任意名文件... \ /e /p everyone:n
echo y|cacls 假的病毒文件 /e /p everyone:n
这个也可以使用列表式的方法,以后在提把,呵呵。
罗嗦了这么多,不外乎也是一句话:
授人予鱼不如授人予渔,批处理全部改的中文名字`如果不懂的,可以跟我交流
最初是想阿古如果不做免疫了(我也是三联病毒群的一份子),我来凑合凑合的,想想不如提示大家怎么来自己动手做病毒免疫,如果我们都可以掌握住免疫的方法,岂不是更好一点么。
附上一些自己修改过的免疫文件供大家参考。其实就是从三联中分离出来而已,小部分为自己添加,如果转载,请注明三联。
有空想跟大家再聊下组策略防毒的深层的应用,以及HIPS(Host Intrusion Prevent System 主机入侵防御系统)在网吧的应用。
网吧防毒是一条未知的路,无近的路,也许我们现在没有什么好一点的病毒防御措施,就让我们自己学会一些简单的“防身”的招数把,呵呵。
三人行,必有我师。
阿拉发贴
今天传了10次附件``
阿古的批处理确实可以`有时候不仔细的顺藤摸瓜真还理不清头绪。
[ 本帖最后由 阿拉发贴 于 2007-11-30 16:26 编辑 ]
附件: 您所在的用户组无法下载或查看附件
過去已無法改變,但是未來苛苡.
在指間創造價値,用鍵盤敲擊秂苼