[转贴]深思3乱弹(三)——代码 (2千字)
深思3乱弹(三)——代码可以把程序(代码)写入狗内,是深思3狗引以为荣的特色。也是我们破解或复制深思3狗的难点。
前两段短文已经将了,我们可以从程序中找到狗的应用口令,可以从狗中读出全部数据区的内容,但代码区是可写不可读的,怎么办呢?
把代码写入狗中,实际上是一种数据变换,不过就是这个变换可以由用户自己编程而已。
所谓数据变换,就是向狗发出一个数据,狗则返回一个同样长度的数据,返回的数据就是变换的结果,变换的规则,就是狗内的算法,圣天诺的SUPERPRO狗的算法是固定的,但算法因子可以由用户写入;深思3的算法,就是用户写入的代码。
既然变换的结果是数据,被加密程序,怎么判断返回值是否正确呢?
对于深思3而言,有三种情况:
1、用码表
所谓码表,就是加密者事先准备的数据变换前后的对照表。这种方法是圣天诺狗必用的方法。这种方法的缺点是,容易被WKPE等仿真类软件拦截,除非准备的码表很长,使得多次拦截后的数据合并起来庞大得无法使用。码表法是深思公司极力反对的。所以,在深思狗加密中很少见,但也不排除有习惯用此方法加密的人,使用深思狗后仍然沿用这种方法。
2、副本法
所谓副本法,就是在被加密程序中有一个与狗中代码功能相同的代码的副本存在,被加密程序,做数据变换,采用随机数,把产生的随机数,发到狗内,变换返回的数据1,在把同一个数据送到程序内的副本处,进行变换,得到返回数据2,比较数据1和数据2,判断是否是正版狗。
这种方法,可以有效防止WKPE等仿真器拦截。但这种方法,为我们复制狗留下了漏洞,我们只要找到这个副本,把他翻译成深思3的汇编语言,就得到了狗内程序代码。
3、逆变换法
所谓逆变换法,就是狗内的代码,有变换和逆变换两个入口,被加密程序产生一个随机数,先送到变换区返回一个数据,再把这个返回值送到逆变换区,返回一个逆变换数据,把这个数据与最初的随机数比较,相同就是有正版狗。
这种方法,也可以有效防止WKPR类仿真器的拦截,而且,无法从程序中得到狗内的代码。但是我们可以在狗内随便写一段代码,只要变换和逆变换的入口与原狗的一致就可以了。
综上所述,只要有了程序,基本上可以复制出深思3的狗了。只是数据区的问题,如果是把从狗内读到的数据,不进行对比,则我们就无法知道数据区的内容,必须要读狗。
****好了,关于深思3狗的一点研究心得,就写这些了,错漏之处在所难免,只是给初学破解加密狗的朋友做参考。现丑到此结束。****
--撰写:紫竹
