解释语言介绍
现在所使用的语言是两种,一种是解释执行的,另一种就是编译后才能够执行的语言。解释执行的语言因为解释器不需要直接同机器码打交道所以实现起来较为简单、而且便于在不同的平台上面移植,这一点从现在的编程语言解释执行的居多就能看出来,如 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 结尾的文件反的一点不差。看来我至少要等到有编译版本的 Java 出来后再考虑学习这种时髦的语言了。
4、Install Shield:我没写错,Install Shield 其实也是一种解释语言,虽然它仅仅是为了做安装程序用的,但有很多人用它来编写序列号的检查部分,其实它的伪码都是放在 setup.ins 中,而且我看到了这个伪码的反编译程序,看来以后用 Install Shield 做安装程序的朋友们要小心了。
5、C:这种语言还是令人放心的,网络上虽然有个叫做 EXE to C 的程序,但用过的人没有不说上当的。
注:本文作者不详。