現在所使用的語言是兩種,一種是解釋執行的,另一種就是編譯后才能夠執行的語言。解釋執行的語言因為解釋器不需要直接同機器碼打交道所以實現起來較為簡單、而且便于在不同的平臺上面移植,這一點從現在的編程語言解釋執行的居多就能看出來,如 Visual Basic、Visual Foxpro、Power Builder、Java...等。編譯執行的語言因為要直接同CPU 的指令集打交道,具有很強的指令依賴性和系統依賴性,但編譯后的程序執行效率要比解釋語言要高的多,象現在的 Visual C/C++、Delphi 等都是很好的編譯語言。
對于解釋語言與編譯語言所編制出來的代碼安全性上而言,可以說是各有優缺點。曾經在 Windows 下跟蹤調式過 VB3 或 VB4 程序的朋友一般都知道,程序代碼 99% 的時間里都是在 VBRUNxx 里轉來轉去,根本看不出一個所以然來。 這是因為你跟蹤的是 VB 的解釋器,要從解釋器中看出代碼的目的是什么是相當困難的。但解釋語言有一個致命的弱點,那就是解釋語言的程序代碼都是以偽碼的方式存放的,一旦被人找到了偽碼與源碼之間的對應關系,就很容易做出一個反編譯器出來,你的源程序等于被公開了一樣。而編譯語言因為直接把用戶程序 編譯成機器碼,再經過優化程序的優化,很難從程序返回到你的源程序的狀態, 但對于熟悉匯編語言的解密者來說,也很容易通過跟蹤你的代碼來確定某些代碼 的用途。
Visual Basic:VB3、VB4 都有相應的反編譯器存在。而 VB5、 VB6 不再是單純的解釋程序了,雖然里面還有解釋執行的部分,但起碼主程序部分是真正編譯的,沒有人做出 VB5 以上的反編譯器了。所以破解VB3、VB4程序首先方法是用反編譯器反匯編,查看其源代碼,這樣破解就簡單多了。
Visual Basic各版本的鏈接庫如下:
VB3 鏈接庫 vbrun300.dll 16 位
VB4 鏈接庫 vb40016.dll 16 位,較少見
VB4 鏈接庫 vb40032.dll 32 位
VB5 鏈接庫 msvbvm50.dll 32 位
VB6 鏈接庫 msvbvm60.dll 32 位
下面對各種具有反編譯器的語言進行一下簡單的介紹:
1、Foxpro:這種語言是反編譯器的主要市場,我幾乎見到過所有版本 FoxPro 的反編譯器,不管是DOS 版的還是 Windows 版的。其代碼的安全性十分令人擔 憂。另外提一句,現在的外殼加密程序對它也是毫無幫助的,因為大多數的外殼程序都不會對程序中的偽碼部分進行處理,外殼程序加密的只是其解釋器部分。
2、Cliper:DOS 下的一種數據庫語言,不知道現在是否還有人在使用它,但至少我看到過它的反編譯器。
3、Java:我至少見到過 3-4 種 Java 語言的反編譯器,據使用過的人說,其中有些反編譯器效果極好,能把那些 .class 結尾的文件反的一點不差??磥砦抑辽僖鹊接芯幾g版本的 Java 出來后再考慮學習這種時髦的語言了。
4、Install Shield:我沒寫錯,Install Shield 其實也是一種解釋語言,雖然它僅僅是為了做安裝程序用的,但有很多人用它來編寫序列號的檢查部分,其實它的偽碼都是放在 setup.ins 中,而且我看到了這個偽碼的反編譯程序,看來以后用 Install Shield 做安裝程序的朋友們要小心了。
5、C:這種語言還是令人放心的,網絡上雖然有個叫做 EXE to C 的程序,但用過的人沒有不說上當的。
注:本文作者不詳。
(編輯:天命孤獨)
新聞熱點
疑難解答
圖片精選