問:
您好,腳本專家!如何在HTA內對腳本進行編碼?
--LL
答:
您好,LL。您知道,剛看到這個問題時,我們就在想:“這有什麼大不了的?難道不能像在HTML文件中那樣在HTML應用程序(HTA)中對腳本進行編碼嗎?”令我們大為吃驚的是,好像不能在HTA中對腳本進行編碼;每次試圖這樣做時,都會返回像下面這樣的錯誤消息:
Scriptingencoderobject("Scripting.Encoder")failedonC:/Scripts/test.hta
老實說,我們從未找到在HTA中對腳本進行編碼的方法。不過沒關係,因為我們的確想出了一個解決此問題的鬼點子。我們一會兒就為您展示。
但是,在做之前,我們需要花點兒時間解釋對腳本編碼是什麼意思。 Microsoft有一個實用程序,名為ScriptEncoder(腳本編碼器),可將您的腳本代碼“打亂”。例如,假設您有一個類似下面的腳本:
strComputer="."
SetobjWMIService=GetObject("winmgmts://"&strComputer&"/root/cimv2")
SetcolOperatingSystems=objWMIService.ExecQuery("Select*fromWin32_OperatingSystem")
ForEachobjOperatingSystemincolOperatingSystems
MsgboxobjOperatingSystem.Caption&""&objOperatingSystem.Version
Next
假設出於某些原因,您希望人們無法閱讀腳本代碼。這是個問題:畢竟,任何人只要有權運行腳本,就同樣有權在記事本中打開此腳本,並且想看什麼就看什麼。不過,同一個腳本經“腳本編碼器”處理後,會成為下面顯示的樣子:
#@~^8AEAAA==@#@&@#@&@#@&,PP,?!8PV+OrU.n.kkW@#@&,PP,~~PkYMZG:2;D+.P{~JcJ@#@&,PP~~,P~P,~U+O,W(L tq
UnD7k^+,'~! Yr(%+1Y`rArxsosYd)wwrP'PkOD;Wh2!Y+.~LP~J'.KWO'mb:/yJ*@#@&@#@&~P,P~~,PP,~? YP1Gsra+MlOkULUXdY h/,'~G(
L /(U+./b^ R3X+1pE DH~{@#@&~P,P~~,PP,~P,PPvEj+^+1Y~e~W
MWhPqrx2m6a+DCObxL?HdD+hr#@#@&@#@&P,~P,P~P,P~oKDPACm4PW(%6w DmYr
xLjH/O+s~kP^G^rwn.mYrxTjH/O :k@#@&,P,~P,P~P,P~~,PHkL4K6PK8%ra+M
lOkULUXdY hR;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==^#~@
腳本仍可正常運行,只是任何人再想查看代碼並剽竊您的工作成果就有點困難了。 (您說對了:儘管如此,但它確實要比您好,腳本專家!中提到的大多數笑話更有意義)
現在,要記住的重要一點是,我們只將腳本編碼(或打亂),而絕對沒有加密。這意味著什麼?這意味著編碼器會對多數人隱藏您的腳本;但是,一個掌握編碼知識或擁有從Internet下載的實用程序的真正鐵桿黑客,卻能破解此代碼。這尤其意味著永遠不要在腳本中“隱藏”管理員密碼,也不要以為“腳本編碼器”能保證密碼不被窺探。它不會像您想的那樣,因為它是編碼器而不是加密器,這絕對是有區別的。