关于PB程序加密(包括PBD伪代码方式)
PB的安全性在高级语言里面相对来说是比较差的,PB9以前有PBKiller,PB10以上有Shudepb,反编译的效率和程度之高令人沮丧。
在我做hasp销售的几年里,碰到用pb开发的公司很多,举个例子,餐饮、娱乐业POS系统,普遍用到PB。不幸的是这些产品也是盗版的重点,因为破解这类软件有利可图。
商业软件一般用加密狗,但PB有别于C之类,因为PB有其特殊性,用PB的都知道,PB有两种编译方式,一种是编译成机器码,这种情况今天不讨论,因为编译成机器码的,用普通的加密狗就可以加密(注意只是加密,安全性暂且不论),一种是编译成伪代码(即PBD)。编译成伪代码的,一般狗没办法,因为PBD本身不是可执行程序,是文本。今天主要谈这种形式的加密。因为实际做软件的,以这种编译方式为主,速度快,好测试,便于移植。
一般的加密都是加密主程序,pbd没有处理。对普通用户来讲,有狗可运行,没狗不能运行,似乎有效。
对稍稍懂点技术的人来讲,尤其是对同行来讲,那么这种加密只是形式,因为他们需要的其实就是pbd。我碰到不少客户,你反编译我,我反编译你,很多。
HASP则可以加密pbd。加密后,pbd大小、文件名、后缀都不变,但内容完全改变——注意这不是混淆,不是打乱代码或者加花——加密后的pbd只是看上去是pbd而已,如果不通过hasp锁解密,它现在实质只是一团密文,没有任何意义。绝对杜绝反编译。
注意我并不是说完全不能破解(这么讲是不负责任的)。准确的讲,是完全不可能使用反编译方式来破解。杜绝了反编译这条途径,一般的破解者,即使是高手,想另辟蹊径,也极其困难。
如果有关心这个问题的,或者干脆你们公司就如同我举的例子的,可以发例程给我,我加密示范。HASP另有个独特的优点,支持不带狗运行1-90天,所以我可以很方便地把加密后的程序发给你体验效果。
与PB类似的还有Java,java也是由java vm来解释执行java class或者jar/tar包之类。如果只加密java vm而不加密class,也只是形式上的加密,直接就可以被绕过。