什么是加密狗,加密狗怎样解密
加密狗是一种用于软件加密的小型外置硬件设备,常见的有并口与USB接口两种类型,加密狗被广泛应用于各种软件之中,软件开发的技术人员,可以把实现此项功能的软件模块,加载到任何需要对用户信息判断的地方,进行编译连接,从而就能形成可以保护自身的软件产品。
加密狗破解就是通过底层调试技术去除软件上的加密狗绑定限制,使原正版软件可以在没有狗的状态下正常运行。加密狗破解后还可以二次加密即使用新狗重新加密,也可以使用软件注册的方式加密。加密狗破解也称为加密锁破解,目前市面上以USB加密狗和并口加密狗为主流,大部分加密狗均可以破解。
软解密加密狗
加密狗软解密就是针对加密产品,一方面是利用软件监测分析软件在运行时向加密点写了什么数据,从加密点返回了什么数据,然后在运行软件前先在内存驻留自编程序监视加密点,当软件向加密点写数据时,软件自动代替加密点并返回相应数据。
这用软件模拟了加密产品。另一方面是从软件着手,寻找软件调用加密点函数部分,修改判断加密点是否存在的语句,将程序直接跳转到正常执行的部分。此种方式的解密缺点是会造成软件的稳定性下降,并有可能解密不彻底而造成软件运行出错!
软复制加密狗
加密狗软复制就是针对加密产品,用相关的工具读出原版狗的狗数据,写入到相同型号的加密狗中,同时修改软件中与加密狗对应的绑定数据,而达到复制的目的。把软件中的密码改成自己手上的加密狗的密码,就达到了软复制的效果。此种方法的优点是保持原版软件的稳定性,杜绝了解密不彻底的现象;缺点是不支持软件的升级,软件升级后需要重新手动修改软件的特征数据。
硬复制加密狗
部分软件开发商为了保护软件不被随意复制,对加密狗采用了硬件加密的方式,通常市面所见的有USB硬狗和并口硬狗两种,通常这些加密狗无法直接读取数据,但是采用专门的设备如读卡器,可以读出硬狗里面的相应加密数据,并且是用写卡器可以把数据完美的写入空狗,从而实现完美复制的硬狗。当然这仅仅适用部分硬狗,不能一概而论。另外的一种方法是利用软件的方法来硬复制,有些品牌的加密狗为了生产方便,会留有某些后门来更改狗的数据的,因此可以利用软件的办法来对加密狗里面的内容进行读出,修改相关的特征数据后再写入到狗中,从而达到硬复制的目的。本站独创的Rockey4硬复制技术正是利用此技术来达到硬复制的效果。
硬模拟加密狗
硬模拟是针对于智能加密狗,由于智能狗内的程序及数据文件无法读取,因此通过分析软件及结合原狗,将狗内的程序算法推算出来,或者监控软件调用原狗的入口出口数据,通过自己写程序来模拟原狗返回给软件的数据,以达到复制的目的。此方法需要比较强的分析能力才能做到,因此市面上出现的此类加密狗硬复制狗,实际上是硬模拟,不是真正意义上的硬复制,因为狗的程序是无法获取的,因此很多客户很容易上当,以为是硬复制的加密狗。
虚拟狗代替加密狗
虚拟狗是加密狗复制里面的比较高级的软模拟方法,虚拟狗是一种虚拟总线设备,通过特殊的内核驱动程序与加密狗的驱动程序进行通讯,可以形象地称为虚拟狗是电脑上的加密狗,俗称软件狗。虚拟狗的好处是不需要修改软件,不需要修改驱动程序,功能上和硬件狗完全一样。编写虚拟狗程序除了需要极高的软件编程能力外,更是要对虚拟的狗的特性十分了解,才有可能编写成虚拟狗,因此这类技术的技术含量非常之高,不是一般人能实现的。
加密狗模拟驱动
如大家所知,windows下软件在调用硬件时要通过驱动程序来实现对硬件的操作,硬件对于软件来说仅是驱动程序所提供的接口。此驱动的接口通常是由软狗公司提供,而且一般是不改变的。而此接口具体如何实现软件是看不到的。模拟驱动就是通过模拟此软件和硬件之间的接口,而通过软件编程来实现此接口的功能,将加密狗的数据硬件编码在驱动程序内,将加密狗的算法移植到驱动程序内,如此对于软件而言就好像在操作一个真正的硬件一样。不管软件版本如何变化,驱动的接口并不改变,由于驱动和软件程序文件是分离的,不需要更改程序文件,实现模拟驱动和软件的版本无关。
加密狗的破解大致可以分为三种方法,一种是通过硬件克隆或复制,一种是通过softice等debug工具调试跟踪解密,一种是通过编写拦截程序修改软件和加密狗之间的通讯。目前加密锁(加密狗)的解密破解工作主要集中在应用程序与加密动态库之间的通讯拦截。这类方法成本较低,也便于实现,看待以单片机等芯片为焦点的加密锁(加密狗)具有不错的解密效验。
硬件克隆复制主要针对国产芯片的加密狗,因为国产加密狗公司一般没有焦点加密芯片的制造能力,是以有些使用了市场上通用的芯片,破解者分析出芯片电路以及芯片里写的内部实质意义后,就可以立刻复制或克隆一个纯粹相同的加密狗。不过国外的加密狗就无法使用这类方法,国外加密狗硬件使用的是安全性大好的自己研究制造研发的芯片,凡是很难举行复制,并且现在国内加密狗也在使用进口的智能卡芯片,是以这类硬件克隆的解密方法用处越来越少。
对于debug调试破解,由于软件的庞大度越来越高,编译器产生的代码也越来越多,通过反汇编等方法跟踪调式破解的庞大度已经变患上越来越高,破解成本也越来越高,目前已经很少有人愿意破费大量精神举行如此庞大的破解,错非被破解的软件具有极高的价值。
由于加密锁(加密狗)的应用程序接口(api)基本上都是公开的,是以从网上可以很容易下载到加密狗的编程接口api、用户手册、和其它相关资料,还可以相识加密狗技术的最新进展。
部分加密狗,其全部编程资料就可以从网上获取到,经过对这些资料的分析,我们知道这个加密锁(加密狗)有64个内储存单子元,此中5六个可以被用户使用,这些单元中的每一个均可以被用为三种类型之一:算法、数据值和计数器。
数据值比较好理解,数据值是用户存储在可读写的单元中的数据,就和存储在硬盘里一样,用户可使用read函数读出存储单元里面的数据,也可使用write函数保存自己的信息到存储单元。
计数器是这样一种单元,软件研发商在其软件中使用decrent函数可以把其值减一,当计数器和某种活动的(active)算法接洽关系时,计数器为零则会封闭(deactive)这个算法。
算法单元较难理解一些,算法(algorithm)是这样一种技术,你用query(querydata)函数访问它,此中querydata是查询值,上述函数有一个返回值,被加密的程序知道一组这样的查询值/返回值对,在需要加密之处,用上述函数检查狗的存在和真伪。对于被指定为算法的单元,软件上是无法读和修改的,纵然你是合法的用户也是如此,我理解这类技术除了增加程序庞大性以外,主要为了对付使用模拟器技术的破解。
加密狗的所有api函数挪用都会有返回值,返回值为0的时候表示成功。用工具(如vb、vc等)重新编写构造一个和加密狗api一样的dll动态库文件,里面也包罗read、write等全部api中包罗的函数,使用的参量及返回值和原来的函数一样,所有函数返回零。然后对query、read函数举行处置惩罚,返回覆用软件需要的数值便可。这个新的dll文件编写成功后,直接替代掉原来的dll文件,这时再运行应用软件,软件访问加密狗的操作就全部会被拦截,拦截程序永恒会返回不错的数据给软件,从而实现了模拟加密狗的运行。