什么是加密狗?
加密狗是用于软件保护的小型硬件工具,存在并口和USB两种接口形式,该设备在各类软件中应用广泛,软件技术人员能够将具备相应功能的软件单元,置入任何需要验证用户身份的环节,经过编译和链接操作,即可生成具备自我防护能力的软件产品。
什么是加密狗解密?
通过底层调试手段解除软件与加密狗的绑定条件,就能让原本的正版程序在缺少加密狗的情况下继续使用,破解加密狗之后还能再次加密,比如采用新加密狗进行加密,或者借助软件注册方法进行加密,这种破解加密狗的技术也被称作破解加密锁,当前市场上主要以USB加密狗和并口加密狗为主,绝大多数加密狗都能够被破解。
破解加密狗有哪些方法?
软解密加密狗
软解密技术专门用于破解加密商品,首先通过软件检测运行时与加密模块交互的数据内容,包括写入和读取信息,接着在软件启动前将自主编写的程序加载到内存中,用以监控加密模块,当软件尝试向加密模块传输数据时,该程序会自动拦截并返回预设的响应数据。
某款加密狗原理图
这个软件可以模拟加密产品,另一种方法是从软件入手,找到软件调用加密函数的部分,更改判断加密点是否存在的语句,让程序直接跳到正常运行的段落,这种解密方法的缺点是会导致软件的稳定性降低,还可能因为解密不完全而造成软件运行出现故障!
软复制加密狗
软复制技术专门用于破解加密产品,通过相关设备提取正版加密狗的数据,并将其移植到同型号的加密狗上,此外还需调整软件中与加密狗关联的识别信息,以此实现复制功能。若将软件里的密码替换成加密狗自身的密码,即可完成软复制操作。这种方式的长处在于维护了初始软件的稳固性,防止了破解不完全的情况发生;然而它的短处在于无法兼容软件的更新,一旦软件版本升级就必须重新手动调整软件的相关参数。
硬复制加密狗
一些软件制作商为了防止软件被轻易复制,对加密设备使用了物理加密手段,市面上常见的有连接USB接口的加密设备和连接并行端口的加密设备这两种类型,这些加密设备本身不能直接读取信息,不过借助特定的工具例如数据读取装置,能够获取加密设备中存储的特定加密信息,而且借助数据写入装置,可以将数据精确地写入空白加密设备,借此达成对加密设备的完整复制。这当然只对某些特定的加密狗有效,不能普遍适用。还有另一种技术手段,即借助软件工具进行硬拷贝。部分品牌的加密狗为了简化制造流程,会预设一些后门,允许更改狗内数据。因此,可以通过软件途径读取加密狗中的信息,调整相关特征数据后,再将其写回狗内,以此实现硬拷贝的目标。
硬模拟加密狗

硬模拟是专门用于智能加密狗的,因为智能狗内部的程序和数据文件不能被读取,所以需要借助分析软件,并且配合原始的狗,来推算出狗内的程序算法,或者监控软件可以调用原狗的入口和出口数据,通过编写自己的程序来模拟原狗返回给软件的数据,最终实现复制的效果。这种做法必须具备出色的解析本领才能实现,所以市场上流通的这类加密设备复制器,其实属于模拟仿制,并非名副其实的复制,由于设备内部软件无法获取,因此众多用户很容易受骗,误以为它们是真正的复制加密设备。
虚拟狗代替加密狗
虚拟狗属于加密狗复制中较为精密的软件模拟技术,虚拟狗表现为一种虚拟总线设备,借助特定的内核驱动与加密狗驱动实现联络,可以通俗地理解为虚拟狗即为电脑版的加密狗,人们常称之为软件狗。虚拟狗的优势在于无需更改软件,也无需调整驱动程序,其功能与实体狗完全一致。研发虚拟狗狗软件,不仅要求具备精湛的编程技巧,还必须对虚拟犬类的属性有深刻认知,这样才有可能开发出成功的虚拟狗狗,这类技术难度极大,并非普通人能够达成。
加密狗模拟驱动
众所周知,在Windows系统中,软件想要操控硬件必须借助驱动程序来完成,硬件对软件而言,仅仅是驱动程序所呈现的连接端口。这个连接端口大多时候是由软狗公司负责提供,而且通常保持不变。至于这个端口内部是如何运作的,软件方面是无法得知的。模拟驱动借助模拟软件与硬件的连接点,运用软件编程完成连接点的任务,把加密狗的硬件信息编码在驱动程序中,把加密狗的计算方法移植到驱动程序中,这样对于软件来说,仿佛正在控制一个真实的设备。软件版本即便发生变动,驱动程序的连接方式也维持不变,因为驱动程序与软件应用文件是分开的,因此无需调整应用文件,能够达成驱动程序与软件版本互不影响的情形。
如何解密加密狗?
破解加密狗主要存在三种途径,第一种是借助硬件进行仿制或复制,第二种是运用诸如softice之类的调试软件进行跟踪分析以解开密钥,第三种是设计专门程序对软件与加密狗的交互信息进行篡改。现阶段针对加密锁(加密狗)的破解活动,重点集中在截取应用软件和加密动态库之间的数据交换过程。这种技术费用不高,且容易部署,针对以微控制器等半导体为核心的加密装置(加密设备),能够进行有效的破解验证。
硬件仿制主要针对国产芯片的加密狗,因为国产加密狗厂商通常不具备核心加密芯片的制造技术,所以部分产品采用了市面上常见的芯片,当破解者解析出芯片电路以及芯片内存储的数据信息后,便能迅速仿制出一个完全相同的加密狗。但是国外的加密设备不能应用这种手段,它们采用的芯片是自主设计生产的,安全性很高,极难被仿制,而且国内现在也用上了进口的智能卡芯片,所以这种针对硬件的复制破解方法效果越来越差。
在解决程序错误和进行逆向工程时,因为软件系统规模持续扩大,编译器生成的指令代码数量也随之激增,采用反编译技术来分析并修复这类复杂系统的难度显著提升,相应的修复费用也大幅增加,现在几乎没有人愿意投入大量精力去处理这种规模庞大的修复工作,除非被修复的软件具有非常高的经济价值。
加密锁的接口程序大多公开可见,因此网上能便捷获取其编程指南、使用说明及其他附属文档,同时也能了解到加密锁技术的最新动态。
有些加密设备,其所有编程信息都能在互联网上找到,通过研究这些信息,我们了解到该加密装置具备64个内部存储单元,其中58个可供用户选用,这些单元中的每一个都可以充当三种角色中的任何一种:执行运算、保存数值或记录次数。
数据内容不难明白,数据内容是个人存放在可读写的区域里的资料,类似保存在磁盘上,个人能够借助读取操作取得区域里的资料,也能借助写入操作把个人信息记录到区域。
这是一种装置,开发者在程序里调用递减指令能够使其数值降低,一旦这个装置与某个运作过程产生关联,若数值变为零,则该过程会被终止。
算法单元的原理比较晦涩难懂,算法是一种方法,通过调用query函数来使用它,其中query函数的参数是查询数据,这个函数会返回一个结果,加密的程序事先了解一组查询数据与返回结果之间的对应关系,在需要加密的环节,会利用这个函数来验证数据的真实有效性。被指定为算法的单元,在软件层面是无法进行读取和修改的,即便是合法用户也受到这个限制,这类技术的主要作用除了让程序变得更加臃肿,就是为了防止采用模拟器技术的破解行为。
加密狗的所有接口调用均有响应,响应结果为零即代表操作成功。借助特定软件(比如vb、vc等)来重新开发,创建一个与加密狗接口功能相同的dll动态库文件,该文件内也包含read、write等所有接口中涉及的全部函数,其参数配置与返回值均与原函数保持一致,所有函数均返回零值。接下来针对查询、读取功能进行操作处理,即可输出模拟设备所必需的参数值。一旦新的动态链接库文件开发完成,立刻用它替换掉原有的文件,当再次启动应用程序时,该程序对加密狗的所有访问请求都会被阻断,拦截工具会持续向其反馈正确的信息,借此达成虚拟加密狗的运行效果。