微軟ASP加密軟件Script_Encoder

 

用法如下:  

  SCRDECO.EXE   加密文件 輸出文件  

 

http://download.microsoft.com/download/winscript56/Install/1.0/WIN98MeXP/CN/sce10chs.exe

 

一、概述

    一直以來(lái),ASP技術(shù)受到了越來(lái)越多朋友的喜愛(ài),使用ASP從事WEB開(kāi)發(fā)的人也越來(lái)越多。ASP一個(gè)非常明顯的特征是頁(yè)面在服務(wù)器端經(jīng)過(guò)處理之后發(fā)送到瀏覽器中的內(nèi)容為標(biāo)準(zhǔn)的HTML格式,這樣有效的保護(hù)了頁(yè)面程序的原代碼不被客戶端輕易獲?。ó?dāng)然MSBUG不斷那是另一回事了。^_^)。但是另一個(gè)普遍存在的問(wèn)題是:由于ASP頁(yè)面是純文本的形式存放,在服務(wù)器端可以輕易看到全部編程邏輯。這樣給ASP應(yīng)用商業(yè)化帶來(lái)了一定的困難。解決的方法一般是使用組件技術(shù)將編程邏輯封裝入DLL之中,但問(wèn)題是:

    1、如果每段代碼都組件化似乎工作量太大了,也沒(méi)有必要。

    2、還有很多網(wǎng)友(比如象浪子一樣:-<)根本就不會(huì)編寫(xiě)組件。在這樣的背景下,微軟推出了Script Encoder1.0。一個(gè)命令行的腳本加密工具。

    Script Encoder的特點(diǎn)是:

    它只加密頁(yè)面中嵌入的腳本代碼,其他部分,如HTMLTAG仍然保持原樣不變。處理后的文件中被加密過(guò)的部分為只讀內(nèi)容,對(duì)加密部分的任何修改都將導(dǎo)致整個(gè)加密后的文件不能使用。Script Encoder加密過(guò)的ASP文件還將使Script Debugger之類的腳本調(diào)試工具失效。

    Script Encoder是可以對(duì)Client Side Script加密,也可以對(duì)Server Side Script加密。

   

    二、使用簡(jiǎn)介

    Script Encoder是個(gè)命令行工具,執(zhí)行文件為SCRENC.EXE。它的操作非常簡(jiǎn)單:

    SCRENC [/s] [/f] [/xl] [/l defLanguage ] [/e defExtension] inputfile outputfile

        /s                  可選。讓Script Encoder“安靜”的工作,即執(zhí)行過(guò)程

                        沒(méi)有屏幕輸出。(我使用的感覺(jué)忽略它,同樣沒(méi)有屏幕

                        輸出。沒(méi)什么用,懶得理了。)

        /f                  可選。指定輸出文件是否覆蓋同名輸入文件。忽略,將

                        不執(zhí)行覆蓋。

        /xl                 可選。是否在.asp文件的頂部添加@Language指令。忽略,

                        將添加。

        /l defLanguage      可選。指定Script Encoder加密中選擇的缺省腳本語(yǔ)言。

                        文件中不包含這種腳本語(yǔ)言特性的腳本將被Script Encoder

                        忽略。對(duì)于HTML和腳本文件來(lái)說(shuō),JScript為內(nèi)置缺省腳

                        本語(yǔ)言。對(duì)于ASP文件,VBScript為缺省腳本語(yǔ)言。同時(shí)

                        對(duì)于擴(kuò)展名為.vbs.js的文件Script Encoder有自適應(yīng)

                        能力。

        /e defExtension     可選。指定待加密文件的文件擴(kuò)展名。缺省狀態(tài)下,Script

                        Encoder能識(shí)別asa,asp,cdx,htm,html,js,sctvbs文件。

   

    三、常見(jiàn)問(wèn)題和注意事項(xiàng)

      1、在JOY ASP中幾次看到有網(wǎng)友使用Script Encoder時(shí)出現(xiàn)如下錯(cuò)誤:   

     "Script Encoder *** <"Scripting.Encoder"> not found "

     其原因:是使用Script Encoder需要Script Engine 5.0或以上腳本引擎的支持。

     解決的辦法有兩個(gè),升級(jí)瀏覽器到IE5或安裝Script Engine 5.0

      2、在加密Global.asa時(shí),加密完成后訪問(wèn)出現(xiàn):

     Active Server Pages 錯(cuò)誤 'ASP 0137'

     無(wú)效通用腳本

     global.asa, 1

     Script 塊必須是允許的 Global.asa 過(guò)程之一。< %...% > 中的 Script 原語(yǔ)不

     允許在 global.asa 文件中。允許的過(guò)程只能是 Application_OnStart ,

     Application_OnEnd , Session_OnStart , Session_OnEnd。

     加密后的global.asa文件為:

     <%@ LANGUAGE = VBScript.Encode %><SCRIPT LANGUAGE=VBScript.Encode

     RUNAT=Server>#@~^nAIAAA==@#@&?i~Pzww^k1CYbWU{}xjOmDY@#@&@#@&BP</SCRIPT>

     <SCRIPT LANGUAGE=VBScript.Encode RUNAT=Server>#@~^OgEAAA==@#@&?i~Pzww^k

     1CYbWU{}x3U9@#@&@#@&P,P?O~sbVr8Ln^DPxPUnD7+. ;D+COr==^#~@</SCRIPT>

     <SCRIPT LANGUAGE=VBScript.Encode RUNAT=Server>#@~^DQMAAA==@#@&?i~PU+/kk

     KU{}xjYmDO@#@&@#@&E~NnJ*Px~rCl1V+MJ@#@&3Hf,?`A@#@&ftEAAA==^#~@</SCRIPT>

     <SCRIPT LANGUAGE=VBScript.Encode RUNAT=Server>#@~^WwIAAA==@#@&?i~PU+/kk

     KU{}x3x9@#@&(6P?d/bWxvEj{!/DmmG[JbP@!@*PrCC^0+DE~:tnx@#@&</SCRIPT>

     出現(xiàn)這個(gè)錯(cuò)誤的原因是:在加密完的global.asa文件頂部被寫(xiě)入了

     <%@ LANGUAGE = VBScript.Encode %>

     解決的辦法是手動(dòng)刪去這一行或者使用/xl參數(shù)加密即可。

      3、Script Encoder對(duì)Remote Scripting無(wú)效。

    四、總結(jié)

    根據(jù)我個(gè)人的體會(huì),Script Encoder還是比較好用的。使用簡(jiǎn)單,加密后的腳本運(yùn)行也比較穩(wěn)定。不過(guò)這個(gè)東西僅僅是阻止了你隨意的查看腳本原代碼,估計(jì)相應(yīng)的解密工具不久就會(huì)出來(lái)的。所以建議可能的話,大家還是花點(diǎn)時(shí)間學(xué)習(xí)一下組件技術(shù),我覺(jué)得可以將這兩個(gè)結(jié)合起來(lái)運(yùn)用的。正如微軟的文檔所說(shuō):Setting an engine to deal with encoded script is only one side of the equation. How do you encode yourscript? There are two mechanisms to do this: a command-line script encoder and a COM-based *** model...