如下是一个pbd混淆加密之后用反编译打开时的效果图(混淆器已经开发了十年,其代码混淆保护效果一直满意,用图说话)工具自2009年开发,2010年发布测试版,经历1-2年的测试改进,至最早的客户从2012年开始使用正式版开始,已累计数万次加密并消除了写PBD文件的BUG从而稳定下来,从POS到ERP,从各种终端运用,到提供第三方PBD接口,不管是PBD还是DLL编译模式,都通过实测证明其稳定运行了若干年。工具采用与文件,时间相关的动态因子,没有人能以固定模式测试到所有的加密规律,除了算法升级外,内部算法因子也按时间自动随机演进:
主要的措施如下(这是文档里面公开的,也就是说算法是经得起推敲的)
1)变量变为乱码:
方式有随机数变成ascii码,下划线,控制字符,数字,英文等。因为变量名不对运行造成影响,所以实际扰乱后后的效果,非常乱。有些是成了乱码字符串,有些被反编译改成了var_n的方式显示出来。
2)在代码级别对其进行加密:
不是某些所谓加密工具,对pbd文件进行切割加工,待到运行时又出现组合。基本都是绕人的措施。
本工具从代码级进行处理,将代码事先切割成段,然后用代码再组合起来,在组合时,插入一些钉子和陷阱。这种陷阱有几种:
1>简单的数学:
比如13812938123+239123891283=? 适合于代码短,扩展空间有限的地方。
2>嵌入内部函数,比如 负号运行,min,max,integer,ceiling等等。比第一种就稍微复杂了。这样的强度开始,反编译几乎就无法判定了。比如min(1024, varxxx)= 1024等。反编译处理不了,只能原样摆出来成为奇怪的代码。而正常的逻辑执行不受到影响。
3)混淆专用变量:
用常量参与计算非常容易被固定模式计算,所以采用向local var区域添加一个混淆专用的变量,可以是boolean或者long类型的。
新版中,已经能自动由工具插入一个这样的变量了。也可以手工在源代码中编写(适合特别强保护的代码)。
这个专用变量能被工具在加密时,动态改变它的值。也就是一边赋值,一边判断。这个强度从理论和实践中来看,是非常强大的。比如 long var_xx = 0
var_xx = 1024
var_xx *= 1024
if min(xxx,var_xx)=?? then
正确跳到正常的代码分段,错误则调到随机位置,或者随机的代码行(这个强大哦。反编译看起来有goto语句。但是其实是随机的!!!位置。压根在源代码逻辑中不存在那样的跳转。
4)自定义逻辑陷阱
通过程序员自己写复杂的逻辑代码来让分析陷入死胡同
比如 if myfun(var1,var2,var3,var4,var5)= myfun2(var1,var2) then
正确跳到正常的代码分段,错误则调到随机位置,或者随机的代码行。
这样的代码是运行时决定的。是任何静态分析方法无法解析的。
综合上述,本工具是非常强大的。它也正经历众多的客户检验,经历近十年的时间检验。
标签:反编译,加密,代码,PB,随机,var,工具 From: https://blog.51cto.com/u_16000165/6239168