常用ASP代碼加密工具的工作原理

 打開ASP文件,經常看到類似這樣的代碼,創建一個組件,然後傳入一大堆沒有意義的字符,如下:
<%
Dim obj
Set obj = Server.CreateObject("AspDeCode.DeCode")
obj.AddCode "PCUNCm9wdGlvbiBleHBsaWNpdA0KQ29uc3QgSkVUXzNYID0gNA0KaWYgIiImUmVxdWVzdC5Gb3JtKCJzZXNzaW9uaWQiKSYiIjw+"
obj.AddCode "IiImc2Vzc2lvbi5zZXNzaW9uaWQmIiIgdGhlbiBBbGVydCgi0KfR6cLrtO3O8yIpDQoNCkRpbSBkYnBhdGgsYm9vbElzOTcNCmRi"
obj.AddCode "PiINCglFbmQgSWYNCkVuZCBGdW5jdGlvbg0KDQpTdWIgQWxlcnQoTWVzc2FnZSkNCiU+DQo8c2NyaXB0IGxhbmd1YWdlPSdKYXZh"
obj.AddCode "U2NyaXB0JyB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmFsZXJ0KCc8JT1NZXNzYWdlJT4nKTtoaXN0b3J5LmJhY2soKTs8L3Njcmlw"
obj.AddCode "dD48c2NyaXB0IGxhbmd1YWdlPSdKYXZhU2NyaXB0JyB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPndpbmRvdy5jbG9zZSgpOzwvc2Ny"
obj.AddCode "aXB0Pg0KPCUNCglyZXNwb25zZS5lbmQNCkVuZCBTdWINCiU+DQo="
obj.RunCode
Set obj = Nothing
%>
    然ASP文件卻可以正常執行,其實,這種ASP代碼是被一種加密算法加密了,那麼,爲何被加密了卻可以正確執行?這種加密都有
一個共同的特徵,需要臨時解密,要在服務器註冊一個對應的ASP代碼解密組件,我們看到,代碼的起始位置有一句創建組件的代碼,
該組件將密文解密成原始的ASP腳本,再將腳本傳入產生的臨時文件或者腳本引擎組件(Msscript.ocx)解釋執行。其中,產生臨時
文件的方式可以達到完全兼容,無需任何人工修改量的效果。不論其ASP代碼有多麼複雜,都可以實現無錯加密。那麼,其具體的
工作原理又是怎樣的呢?
    相信大多數ASP開發者都很想知道是怎樣運行的,而另一種以封裝DLL形式的加密方式沒有祕密可言,使用AspToDll風火輪將其生成
VB6代碼,然後編譯通過就可。但這種ASP代碼解密組件的代碼卻是黑匣子,其中有什麼玄妙之處?雖然,對於專業技術人員來說,
這其實並不是什麼祕密,不過,對於廣大的ASP業餘開發者或者一般電腦愛好者來說,卻不是那麼容易看出其端倪的,讓AspToDll風火輪
爲大家解開其神祕的面紗。
    打開AspToDll風火輪1.35版本,選擇好你要加密的源文件目錄,輸出目錄,再點擊“編碼加密”按鈕,很快,目錄下的所有ASP源文件
已經被編碼並生成到輸出目錄的ASPCODE子目錄中,檢查當中的每一個文件,發現都被加密成了如上的怪字符,我們只需要將輸出目錄的
DLL子目錄裏面的AspDeCode.dll組件註冊一下(運行RegDll.bat),再去訪問AspCode目錄裏面的ASP文件,運行效果簡直與加密之前
如出一轍,不論你的代碼如何複雜,都不影響運行效果。
    那麼,AspDeCode.dll裏面又是具體如何工作的呢?相信廣大業餘開發者是最想知道的事情了,因此,AspToDll風火輪向大家直接提供了
AspDeCode.dll的源代碼,就在AspToDll風火輪安裝之後的AspDeCode子目錄,爲打開源代碼,我們需要安裝VB6,打開之後,我們發現
加密和解密以及運行的代碼都非常簡單,只有一個DeCode類,裏面的加密解密算法就是幾段標準的BASE64代碼,在這裏,我們只需要
重點介紹當中的RunCode過程,我們分析一下這段代碼:
Public Sub RunCode()
On Error Resume Next
    Dim fso As New Scripting.FileSystemObject
    Dim f As Scripting.TextStream
    Dim strTemp As String
    strTemp = "~" & Rnd & ".tmp"
    Set f = fso.CreateTextFile(Server.MapPath(strTemp), True)
    f.Write DecodeBase64String(strCode)
    f.Close
    Server.Transfer strTemp
    DeleteFile Server.MapPath(strTemp)
End Sub
    AspDeCode.dll就是通過執行這一段RunCode過程運行ASP的,首先是創建一個fso組件對象,然後生成一個隨機數字命名的臨時文件,
將密文用BASE64解密,寫入到臨時文件中。最後,使用Server.Transfer方法轉向到臨時文件執行,然後刪除臨時文件,就這樣完成任務了,
這種現買現賣的臨時文件障眼法是不是很神奇呢?
    好了,既然ASP代碼解密組件的代碼向大家公開了,意味着可以隨意修改AspDeCode.dll,個性化自己的ASP代碼解密組件了,你可以增加一些
授權的代碼,還可以修改加密算法,在AspToDll風火輪裏面的編碼型加密標籤,點擊“自定義算法”選項,在左邊的文本框中寫入標準VBScript
的加密算法,至於解密算法,你既可以在軟件中寫入解密算法,也可以直接修改AspDeCode.dll源代碼實現。通過修改自定義的加密解密算法,
你已經可以打造出一款完全無錯加密且又與衆不同的ASP代碼加密工具了。
發佈了35 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章