• 标 题:解狗思路的一点总结!纯属个人意见! (3千字)
  • 作 者:qdcrack
  • 时 间:2002-10-21 10:24:28
  • 链 接:http://bbs.pediy.com

  目前国内解狗高手还不是很多,非常多的cracker们都在研究共享软件的破解,主要研究注册码、序列号等等。当然,研究这些是学习解狗的一个非常必须的过程,要破解狗您首先要知道如何爆破一个软件,知道程序算法的基本流程。

  狗加密说白了就是一个带黑匣子的算法问题,普通的软件我们可以在程序内部了解到整个算法的全过程,而解狗相当于一部分重要的算法转移到狗的内部进行运算,我们不能从程序中得到这个算法,只能靠猜的办法来进行,当然猜也要猜得有点规律,不能乱猜。而这个规律从何而来?当然还是程序本身,无论什么软件在读狗之后一般都要马上判断加密狗是否存在以及是否正确,而判断的本身就是一种条件的获得,找到了关键的判断其实也就是找到了程序破解的突破口,找到之后的办法当然就是修改了。

  一是直接修改判断之后的程序流程,让没有狗的情况下执行正确的程序流程,另外就是修改判断之前的程序,让程序走道判断的地方的时候关键数据是正确的。个人认为后一种方法较好,因为这种判断可能是显性的,也可能是隐型的,如果能够在程序内部最底层读狗的部位修改,让程序正确执行,那么出现软件破解不完全的可能性会大大减少。当然这是很难的,第一是判断读狗部位比较难,第二就是逆推出算法比较难,没有很好的功底,怕是难以实现!如果真能做到这一步,那么这个软件的破解就算比较完美了!

  现在我知道黑心破解金天地的狗采用了修改(或者重新编程,我没弄清楚)读狗驱动的方法,完美支持了升级,我想就是完全搞清楚了程序在转入狗驱动之后整个的算法流程。修改读狗驱动是非常省事情的!因为狗驱动一般很少发生变化,所以可以很好的支持软件频繁的升级问题!当然直接修改源程序也未必不可!如果摒弃软件频繁升级带来的不便,修改主执行程序和修改读狗驱动之间并不存在谁优谁劣的问题,当然这里要声明一点,因为修改读狗驱动,首先确保了修改者至少研究透了在主执行文件最底层的算法过程,而在读狗驱动里面伪造了一个黑匣子,最大可能的减少了因为对主执行文件研究不透彻而造成的破解不完全现象,但是这里也存在一个问题,就是作者要花费大量的时间研究整个算法过程,没有极其丰富的经验和对整个程序的了解,是很难做到这一步的!比如金天地的狗,我个人认为它的读狗判断过程可能是相对比较简单的,都是以返回值为0作为正确值(当然这个值一般情况下是非常隐型的)但是读懂在层层设障以大量花指令迷惑视线的算法过程,这才是最最困难的地方,如果您可以突破这一步,金天地的狗对您来说应该是不在话下了。但是对于我们来言,这一步跨度太大了,甚至有些高不可攀。

  但是情况有时候也未必就完全令我们绝望,首先我们明确一点,到了存在花指令的部位,其实也就是到了读狗的关键部位,加密者(应该说是加密狗的设计者更准确,因为这些花指令并不是购买狗对软件进行加密的人所编写的,而是在加密过程由加密主程序自动生成的)为了隐藏其读狗过程而人为设置的,这里就有两个信息提供出来了!

  第一:我们来到了读狗核心,第二,我想也是最最最大的漏洞暴露出来了(为什么这么说,等会解释)。虽然看着这一段包含花指令的程序步骤很多,其实他完成的算法过程是相对比较简单的。这里就要求我们再一次的去猜,猜猜看程序在这里到底完成了什么步骤,进行了什么样的算法转换,当然这要从程序后续的判断来进行逆推,推测的好!那么我们就可以在这里修改,程序应该比较完美的运行了!而且这样的判断应该是比较底层的子程序,其他地方的判断也应该调用他!当然,也许这样的判断子程序会有多处,但是据个人经验,这样的地方一般在一个程序之内时非常非常少的!这里就要再提一下为什么说是一个非常大的漏洞:因为我们刚才说了,这个地方的花指令并不是软件加密者自己编写的,而是由加密主程序自动生成来迷惑解密者的!那么这个自动其实也就代表着另外一个意思:规律。对,就是它的规律性。了解到了规律性的东西,其实也就是对于某种软件狗一个整体掌握的体现。规律性体现在很多地方:程序代码的相似性,运算过程的相似性等等。拿同一个软件而言,在其升级的过程中,主执行文件可能发生非常大的变化,而这段规律性的的判断读狗过程却一般都原封不动的转到了新的程序里面,为什么这样?因为它的对软件狗加密的主程序没有发生,其实他和读狗驱动一样,升级变化的动作很小,而且在程序中很容易判断出来!另外在这个地方的程序流程算法过程也不会发生变化。除非该软件狗厂商对软件狗的配套程序进行了重大的改变!我想这时候就算是修改读狗驱动的也不能支持升级了!