主頁 > 知識庫 > 用vbs在 HTA 內(nèi)對腳本進行編碼的方法

用vbs在 HTA 內(nèi)對腳本進行編碼的方法

熱門標簽:檢查注冊表項 服務(wù)器配置 網(wǎng)站文章發(fā)布 美圖手機 智能手機 鐵路電話系統(tǒng) 呼叫中心市場需求 銀行業(yè)務(wù)
問:
您好,腳本專家!如何在 HTA 內(nèi)對腳本進行編碼?
-- LL
答:
您好,LL。您知道,剛看到這個問題時,我們就在想:“這有什么大不了的?難道不能像在 HTML 文件中那樣在 HTML 應(yīng)用程序 (HTA) 中對腳本進行編碼嗎?”令我們大為吃驚的是,好像不能在 HTA 中對腳本進行編碼;每次試圖這樣做時,都會返回像下面這樣的錯誤消息:
Scripting encoder object ("Scripting.Encoder") failed on C:\Scripts\test.hta
老實說,我們從未找到在 HTA 中對腳本進行編碼的方法。不過沒關(guān)系,因為我們的確想出了一個解決此問題的鬼點子。我們一會兒就為您展示。
但是,在做之前,我們需要花點兒時間解釋對腳本編碼是什么意思。Microsoft 有一個實用程序,名為 Script Encoder(腳本編碼器),可將您的腳本代碼“打亂”。例如,假設(shè)您有一個類似下面的腳本:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\"  strComputer   "\root\cimv2")
   Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
    Msgbox objOperatingSystem.Caption  " "    objOperatingSystem.Version
Next
假設(shè)出于某些原因,您希望人們無法閱讀腳本代碼。這是個問題:畢竟,任何人只要有權(quán)運行腳本,就同樣有權(quán)在記事本中打開此腳本,并且想看什么就看什么。不過,同一個腳本經(jīng)“腳本編碼器”處理后,會成為下面顯示的樣子:
#@~^8AEAAA==@#@@#@@#@,PP,?!8PV+OrU.n.kkW@#@,PP,~~PkYMZG:2;D+.P{~JcJ@#@,PP~~,P~P,~U+O,W(Ltq
UnD7k^+,'~!Yr(%+1Y`rArxsosYd)wwrP'PkOD;Wh2!Y+.~LP~J'.KWO'mb:\yJ*@#@@#@~P,P~~,PP,~?YP1Gsra+MlOkULUXdYh/,'~G(
L\(U+.\b^R3X+1pEDH~{@#@~P,P~~,PP,~P,PPvEj+^+1Y~e~W
MWhPqrx2 m6a+DCObxL?HdD+hr#@#@@#@P,~P,P~P,P~oKDPACm4PW(%6wDmYr
xLjH/O+s~kP^G^rwn.mYrxTjH/O:k@#@,P,~P,P~P,P~~,PHkL4K6PK8%ra+M
lOkULUXdYhR;l2ObWx~',J~J,',{@#@P,PP,P,~P,P~P,P~~,PW(%ra+DmOrxT?H/O+h 
j+./bGx@#@~~,PP~~,P~PgnXY@#@P,PPAx9~?!4@#@QYQAAA==^#~@
腳本仍可正常運行,只是任何人再想查看代碼并剽竊您的工作成果就有點困難了。(您說對了:盡管如此,但它確實要比您好,腳本專家!中提到的大多數(shù)笑話更有意義)
現(xiàn)在,要記住的重要一點是,我們只將腳本編碼(或打亂),而絕對沒有加密。這意味著什么?這意味著編碼器會對多數(shù)人隱藏您的腳本;但是,一個掌握編碼知識或擁有從 Internet 下載的實用程序的真正鐵桿黑客,卻能破解此代碼。這尤其意味著永遠不要在腳本中“隱藏”管理員密碼,也不要以為“腳本編碼器”能保證密碼不被窺探。它不會像您想的那樣,因為它是編碼器而不是加密器,這絕對是有區(qū)別的。
那么,在 HTA 中對腳本編碼的問題又怎么樣呢?好吧,我們假設(shè)您有一個類似下面所示的 HTA(我們同樣假設(shè)您已經(jīng)下載并安裝了“腳本編碼器”):
head>
title>Operating System Version/title>
HTA:APPLICATION 
     APPLICATIONNAME="Operating System Version"
     SCROLL="yes"
     SINGLEINSTANCE="yes"
>
/head>
script language="VBScript">
    Sub GetOSVersion
       strComputer = "."
           Set objWMIService = GetObject("winmgmts:\\"  strComputer   "\root\cimv2")
           Set colOperatingSystems = objWMIService.ExecQuery _
               ("Select * from Win32_OperatingSystem")
           For Each objOperatingSystem in colOperatingSystems
               Msgbox objOperatingSystem.Caption  " "  _
                   objOperatingSystem.Version
           Next
    End Sub
/script>
body>
input type="button" value="Operating System" name="run_button"  onClick="GetOSVersion">
/body>
如果要對此 HTA 的 VBScript 部分編碼,首先要使用 '**Start Encode** 標記在要編碼部分的開始處進行標記。換言之,Script> 標記需要像下面這樣,使 '**Start Encode** 恰好位于 VBScript 代碼的第一行之前:
script language="VBScript">
'**Start Encode**
    Sub GetOSVersion
       strComputer = "."
           Set objWMIService = GetObject("winmgmts:\\"  strComputer   "\root\cimv2")
           Set colOperatingSystems = objWMIService.ExecQuery _
               ("Select * from Win32_OperatingSystem")
           For Each objOperatingSystem in colOperatingSystems
               Msgbox objOperatingSystem.Caption  " "  _
                   objOperatingSystem.Version
           Next
    End Sub
/script>
從理論上來講,這樣便能通過運行 Screnc.exe 并傳遞兩個參數(shù)(現(xiàn)有 HTA 文件 (Test.hta) 的名稱和要指定給編碼文件 (Encoded.hta) 的名稱)來對腳本編碼:
C:\Scripts>screnc test.hta encoded.hta
不幸的是,這樣做行不通。
為什么?噢,我們實在是不能確定。不過,我們知道怎樣會真正行得通。我們只需將現(xiàn)有文件的擴展名 .hta 更改為 .htm。換言之,我們只需將 Test.htm 文件重新命名?!澳_本編碼器”無法處理 HTA 文件,但是處理 HTML 文件就沒有問題了。現(xiàn)在,我們可以使用類似下面的語法啟動“腳本編碼器”:
C:\Scripts>screnc test.htm encoded.hta
這樣做確實可行嗎?別告訴我們您對腳本專家表示懷疑!編碼后的 .hta 將類似下面這樣:
head>
title>Operating System Version/title>
HTA:APPLICATION 
     APPLICATIONNAME="Operating System Version"
     SCROLL="yes"
     SINGLEINSTANCE="yes"
>
/head>
script language="VBScript.Encode">
'**Start Encode**#@~^8AEAAA==@#@@#@@#@,PP,?!8PV+OrU.n.kkW@#@,PP,~~PkYMZG:2;D+.P{~JcJ@#@,PP~~,P~P,~U+O,W(Ltq
UnD7k^+,'~!Yr(%+1Y`rArxsosYd)wwrP'PkOD;Wh2!Y+.~LP~J'.KWO'mb:\yJ*@#@@#@~P,P~~,PP,~?YP1Gsra+MlOkULUXdYh/,'~G(
L\(U+.\b^R3X+1pEDH~{@#@~P,P~~,PP,~P,PPvEj+^+1Y~e~W
MWhPqrx2 m6a+DCObxL?HdD+hr#@#@@#@P,~P,P~P,P~oKDPACm4PW(%6wDmYr
xLjH/O+s~kP^G^rwn.mYrxTjH/O:k@#@,P,~P,P~P,P~~,PHkL4K6PK8%ra+M
lOkULUXdYhR;l2ObWx~',J~J,',{@#@P,PP,P,~P,P~P,P~~,PW(%ra+DmOrxT?H/O+h 
j+./bGx@#@~~,PP~~,P~PgnXY@#@P,PPAx9~?!4@#@QYQAAA==^#~@/script>
body>
input type="button" value="Operating System" name="run_button"  onClick="GetOSVersion">
/body>
它仍是個有效的 HTA;單擊按鈕會返回本地機器上安裝的操作系統(tǒng)的名稱和版本。但是,對于任何試圖查看代碼的人,它看上去純粹就是一些雜亂信息。(不用說,腳本專家比任何人都更了解這些雜亂信息?。?

標簽:樂山 長治 上海 河南 新疆 滄州 沈陽 紅河

巨人網(wǎng)絡(luò)通訊聲明:本文標題《用vbs在 HTA 內(nèi)對腳本進行編碼的方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266