解釋語言介紹

看雪資料發表於2015-11-15

解釋語言介紹

  現在所使用的語言是兩種,一種是解釋執行的,另一種就是編譯後才能夠執行的語言。解釋執行的語言因為直譯器不需要直接同機器碼打交道所以實現起來較為簡單、而且便於在不同的平臺上面移植,這一點從現在的程式語言解釋執行的居多就能看出來,如 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.dll16
VB4 連結庫vb40016.dll16 位,較少見
VB4 連結庫vb40032.dll32
VB5 連結庫msvbvm50.dll32
VB6 連結庫msvbvm60.dll32


下面對各種具有反編譯器的語言進行一下簡單的介紹:

1、Foxpro:這種語言是反編譯器的主要市場,我幾乎見到過所有版本 FoxPro 的反編譯器,不管是DOS 版的還是 Windows 版的。其程式碼的安全性十分令人擔 憂。另外提一句,現在的外殼加密程式對它也是毫無幫助的,因為大多數的外殼程式都不會對程式中的偽碼部分進行處理,外殼程式加密的只是其直譯器部分。

2、Cliper:DOS 下的一種資料庫語言,不知道現在是否還有人在使用它,但至少我看到過它的反編譯器。

3、Java:我至少見到過 3-4 種 Java 語言的反編譯器,據使用過的人說,其中有些反編譯器效果極好,能把那些 .class 結尾的檔案反的一點不差。看來我至少要等到有編譯版本的 Java 出來後再考慮學習這種時髦的語言了。

4、Install Shield:我沒寫錯,Install Shield 其實也是一種解釋語言,雖然它僅僅是為了做安裝程式用的,但有很多人用它來編寫序列號的檢查部分,其實它的偽碼都是放在 setup.ins 中,而且我看到了這個偽碼的反編譯程式,看來以後用 Install Shield 做安裝程式的朋友們要小心了。

5、C:這種語言還是令人放心的,網路上雖然有個叫做 EXE to C 的程式,但用過的人沒有不說上當的。

注:本文作者不詳。

 

相關文章