首页
社区
课程
招聘
[转帖]解狗思路的一点总结(大家关心一下狗)
发表于: 2006-3-19 09:08 5037

[转帖]解狗思路的一点总结(大家关心一下狗)

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

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

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

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

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

  第一:我们来到了读狗核心,第二,我想也是最最最大的漏洞暴露出来了(为什么这么说,等会解释)。虽然看着这一段包含花指令的程序步骤很多,其实他完成的算法过程是相对比较简单的。这里就要求我们再一次的去猜,猜猜看程序在这里到底完成了什么步骤,进行了什么样的算法转换,当然这要从程序后续的判断来进行逆推,推测的好!那么我们就可以在这里修改,程序应该比较完美的运行了!而且这样的判断应该是比较底层的子程序,其他地方的判断也应该调用他!当然,也许这样的判断子程序会有多处,但是据个人经验,这样的地方一般在一个程序之内时非常非常少的!这里就要再提一下为什么说是一个非常大的漏洞:因为我们刚才说了,这个地方的花指令并不是软件加密者自己编写的,而是由加密主程序自动生成来迷惑解密者的!那么这个自动其实也就代表着另外一个意思:规律。对,就是它的规律性。了解到了规律性的东西,其实也就是对于某种软件狗一个整体掌握的体现。规律性体现在很多地方:程序代码的相似性,运算过程的相似性等等。拿同一个软件而言,在其升级的过程中,主执行文件可能发生非常大的变化,而这段规律性的的判断读狗过程却一般都原封不动的转到了新的程序里面,为什么这样?因为它的对软件狗加密的主程序没有发生,其实他和读狗驱动一样,升级变化的动作很小,而且在程序中很容易判断出来!另外在这个地方的程序流程算法过程也不会发生变化。除非该软件狗厂商对软件狗的配套程序进行了重大的改变!我想这时候就算是修改读狗驱动的也不能支持升级了!  
软件狗,dongle
首先用一点儿时间来谈谈什么是加密狗(dongle),dongle经常被认为是硬件保护,它是一个可被附加在计算机并口、串口或USB上的小插件,它包含厂家烧制的EPROM和定制的专用集成电路。dongle保护的的原理就是软件开发者在程序里经常检查dongle中的单元(Cell)的并对比返回值,这种检查可以是直接读单元或者是使用某种内部算法(此时单元受到保护无法直接读)。尽管任何称职的硬件工程师都能很容易地分析出dongle是如何实现的,但是实际上并不用那么麻烦,dongle保护最薄弱的环节在于应用程序要通过dongle厂家提供的函数库来访问dongle,而应用程序和这些函数的连接通常是很弱的,因为软件开发人员不管这些函数如何访问dongle,它只检查函数的返回值是表示成功还是失败,那么只要打补丁让所有函数返回成功即可,而且这些函数通常并不多,从厂家提供的API手册中很容易查到这些函数的定义(参数和返回值)。一般来说dongle解密不需要原来的正版狗。
    必须指出从(西方)法律上来说,破解狗与调试独立的程序有一些细微的不同,后者是完全合法的,但前者在德国有被判为非法的案例(即使你已经购买了正版的软件),我不知道我国法律是如何规定的,这种涉嫌侵权的情况当然是民不告、官不纠,好在我们不讨论国产软件,你如果被引渡到美国或德国本站不负任何责任。  

    下面是一些著名dongle厂商的官方网站,从中可以下载用户手册,应用程序接口(API)和其它相关资料,也可以了解dongle技术的最新进展。
    比如说,从彩虹公司提供的API文档中我们可以了解到Sentinel Superpro(以下简称 sspro)的一些情况,sspro有64个内存单元(memory cells),其中56个可以被用户使用,这些单元中的每一个都可以被用为三种类型之一:算法、数据值和计数器。
    算法(algorithm)是这样一种技术,你用sproQuery(queryData)函数访问它,其中 queryData是查询值,上述函数有一个返回值,被加密的程序知道一组这样的查询值/返回值对,在需要加密的地方,用上述函数检查狗的存在和真伪。对于被指定为算法的单元,软件上是无法读和修改的,即使你是合法的用户也是如此,我理解这种技术除了增加程序复杂性以外,主要是为了对付使用模拟器技术的破解。
    数据值和计数器就比较好理解了,数据值用户存储在可读写的单元中的数,用户可以用它存储自己的信息,计数器(counter)是这样一种单元,软件开发商在其软件中使用sproDecrement函数可以把其值减一,当计数器和某种活动的(active)算法关联时,计数器为零则会封闭(deactive) 这个算法。
下面是sspro的所有API函数:
    RNBOsproActivate() 激活或反激活一个算法以便它能被RNBOsproQuery()函数使用。
    RNBOsproDecrement() 把计数器或一个可读写的单元减一。
    RNBOsproExtendedRead() 读任一非隐藏单元的值和连接码(access code)
    RNBOsproFindFirstUnit() 查找指定的狗。
    RNBOsproFindNextUnit() 查找同一ID的下一个狗。
    RNBOsproFormatPacket() 初始化一些数据结构,这个函数必须在其他API函数之前调用。
    RNBOsproGetVersion() 返回驱动程序的版本。
    RNBOsproInitialize() 驱动程序初始化。
    RNBOsproOverwrite() 可以修改除保留单元00?07之外的任何单元的值和连接码。
    RNBOsproQuery() 提供一个查询值,给应用程序返回一个加密的返回值。
    RNBOsproRead() 读非隐藏单元的值。
    RNBOsproWrite() 改变某单元的值。

    DesKey的API函数就更简单了:    Dk2DriverInstalled 检查驱动程序是否安装
    findDk2 检查DK2狗是否安装
    dk2readmemory 读DK2某个单元的内容
    dk2readdowncounter 读计数器的值
    dk2decrementDowncounter 计数器减一
    具体的函数细节可以查看sspro和Deskey的开发者指南(本站有下载)
    了解了上述函数之后,你就可以使用IDA对你的目标进行分析,然后应用相应的sig符号表(本站有下载),IDA就可以在反汇编的结果中找到上述函数(如果有的话),接下来就看你的汇编语言工夫和思维是否清晰了。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 47147
活跃值: (20460)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
这些文章到网上转了一圈回来,作者及出处都没了。
这篇文章是由如下2篇文章合并而成:

http://www.pediy.com/bbshtml/bbs5/pediy50328.htm

标 题:解狗思路的一点总结!纯属个人意见! (3千字)
发信人:qdcrack
时 间:2002-10-21 10:24:28
详细信息:


http://www.pediy.com/bbshtml/BBS5/pediy50370.htm

标 题:软件狗,dongle (3千字)
发信人:zhanzixin
时 间:2002-12-17 8:48:38
详细信息:
2006-3-19 09:19
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
最初由 kanxue 发布
这些文章到网上转了一圈回来,作者及出处都没了。
这篇文章是由如下2篇文章合并而成:

http://www.pediy.com/bbshtml/bbs5/pediy50328.htm

........


看来国人的加工能力超强!
2006-3-19 10:39
0
雪    币: 21
活跃值: (40)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
最初由 kanxue 发布
这些文章到网上转了一圈回来,作者及出处都没了。
这篇文章是由如下2篇文章合并而成:

http://www.pediy.com/bbshtml/bbs5/pediy50328.htm

........


说得对!
2006-3-19 11:07
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
还以为又有了新鲜东东呢;(
2006-3-19 16:22
0
雪    币: 133
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 向日葵 发布
还以为又有了新鲜东东呢;(

2006-3-19 16:26
0
游客
登录 | 注册 方可回帖
返回
//