加密狗是什么呢?

简介: 加密狗是什么呢?

前言

这个在我们单板的升级,或者电脑升级的时候,不知道你是否还有映像我们会插一个USB,无意之中听到了一个新的知识,加密狗。

加密利器——加密狗 1.0解释

加密狗是外形酷似U盘的一种硬件设备,正名加密锁,后来发展成如今的一个软件保护的通俗行业名词,"加密狗"是一种插在计算机并行口上的软硬件结合的加密产品(新型加密狗也有usb口的)。(长得像,但是不是)

(这简直一模一样啊)

加密狗通过在软件执行过程中和加密狗交换数据来实现加密的。加密狗内置单片机电路(也称CPU),使得加密狗具有判断、分析的处理能力,增强了主动的反解密能力。这种加密产品称它为"智能型"加密狗。**加密狗内置的单片机里包含有专用于加密的算法软件,该软件被写入单片机后,就不能再被读出。这样,就保证了加密狗硬件不能被复制。**同时,加密算法是不可预知、不可逆的。加密算法可以把一个数字或字符变换成一个整数。(我可以拆了啊,用RPMB内存?)

加密狗是为软件开发商提供的一种智能型的软件保护工具,它包含一个安装在计算机并行口或 USB 口上的硬件,及一套适用于各种语言的接口软件和工具软件。加密狗基于硬件保护技术,其目的是通过对软件与数据的保护防止知识产权被非法使用。

俗话说“道高一尺魔高一丈”,随着加密技术的不断发展,黑客的破解技术也突飞猛进。所以最安全的加密狗一定是有着尖端科技的保护,同时又承袭了优秀的更迭基因的超级“狗狗”。

如上图所示,加密狗5103 的与众不同之处在于软硬件开发商可以把自己软件中一部分算法和代码下载到芯片中运行。应用方案是在软件实际运行过程中,通过调用函数方式运行加密狗内的程序段,并获得运行结果,并以此结果作为用户程序进一步运行的输入数据。此时加密狗就成了软件产品的一部分,从根本上杜绝了程序被破解的可能。(那得保证硬件可靠,和不可复制)

我国的软件保护法制还不太健全,人们的法制观念也比较淡薄,盗版软件有着丰富的土壤,然而软件又是一种非常特殊的商品,很容易复制,就其功能来讲,正版和盗版的区别很小,如果开发出来的软件不进行加密的话,那么在中国就无法销售出去,因此,开发和销售软件是离不开加密的。人们往往因盗版软件价格低廉,但因使用盗版软件导致信息安全被复制,被破解的案例层出不穷,这不仅大大损坏了软件开发者的利益,更是对使用者造成了极大的经济损失。因此为了更好的保证信息安全,软件开发商必须使用一些加密产品来保护软件开发者的利益,防止软件被盗版,软件使用者更有必要付出一小部分成本来保护自己的权益。(看完这个还是没有怎么理解到这个加密狗怎么保护软件的。难道是这个软件的使用者还必须配套买一个加密狗,软硬结合,扯犊子嘛,当然这是我自己的问题。继续看2.0)

加密利器——加密狗 2.0解释

工作原理

加密狗是目前流行的一种软件加密工具。它是插在计算机接口上的软硬件结合的软件加密产品。一般有USB口和并口两种,又称USB加密狗和并口加密狗,目前流行的一般是USB加密狗,并口加密狗在前几年的时候用得比较多。

加密狗内部一般都有几十到几十K字节的存储空间可供读写,有的内部还增添了一个单片机。软件运行时通过向狗发送消息,判断从接口返回密码(简单的就是返回0或1)数据正确与否来检查加密狗是否存在。此种方式可以通过直接修改返回值,来达到破解的目的。另一种可以在加密狗内写入一些数据,程序执行时需要从加密狗内读取数据,这种情况下,如果只是简单的修改返回值,程序是肯定不能正常运行的,所以就有了复制加密狗的破解方法。

加密狗技术实际上并不是很高深的技术,因为主要的加密狗的芯片和内部文件都有专业的黑客及厂家提供,软件作者一般只是把数据文件用专用软件写入狗中,所以不存在技术先进不先进之分。这里只是简单的分析了加密狗破解的一些常见思路,对于软件作者来说,还是有相应的策略的,这也就是矛与盾的关系,互相促进,互相提高。

破解方法

加密狗的破解大致可以分为三种方法:

  • 一种是通过硬件克隆或者复制
  • 一种是通过SoftICE等Debug工具调试跟踪解密
  • 一种是通过编写拦截程序修改软件和加密狗之间的通讯

硬件克隆复制主要是针对国产芯片的加密狗,因为国产加密狗公司一般没有核心加密芯片的制造能力,因此有些使用了市场上通用的芯片,破解者分析出芯片电路以及芯片里写的内容后,就可以立刻复制或克隆一个完全相同的加密狗。不过国外的加密狗就无法使用这种方法,国外加密狗硬件使用的是安全性很好的自己研制开发的芯片,通常很难进行复制,而且现在国内加密狗也在使用进口的智能卡芯片,因此这种硬件克隆的解密方法用处越来越少。

对于Debug调试破解,由于软件的复杂度越来越高,编译器产生的代码也越来越多,通过反汇编等方法跟踪调式破解的复杂度已经变得越来越高,破解成本也越来越高,目前已经很少有人愿意花费大量精力进行如此复杂的破解,除非被破解的软件具有极高的价值。

目前加密狗(加密狗)的解密破解工作主要集中在应用程序与加密动态库之间的通讯拦截。这种方法成本较低,也易于实现,对待以单片机等芯片为核心的加密狗(加密狗)具有不错的解密效果。由于加密狗的应用程序接口(API)基本上都是公开的,因此从网上可以很容易下载到加密狗的编程接口API、用户手册、和其它相关资料,还可以了解加密狗技术的最新进展。

例如,某个国内知名的美国加密狗提供商的一款很有名的加密狗,其全部编程资料就可以从网上获取到,经过对这些资料的分析,我们知道这个加密狗(加密狗)有64个内存单元,其中56个可以被用户使用,这些单元中的每一个都可以被用为三种类型之一:算法、数据值和计数器。数据值比较好理解,数据值是用户存储在可读写的单元中的数据,就和存储在硬盘里一样,用户可以使用Read函数读出存储单元里面的数据,也可以使用Write函数保存自己的信息到存储单元。计数器是这样一种单元,软件开发商在其软件中使用Decrement函数可以把其值减一,当计数器和某种活动的(active)算法关联时,计数器为零则会封闭(deactive)这个算法。算法单元较难理解一些,算法(algorithm)是这样一种技术,你用Query(queryData)函数访问它,其中queryData是查询值,上述函数有一个返回值,被加密的程序知道一组这样的查询值/返回值对,在需要加密的地方,用上述函数检查狗的存在和真伪。对于被指定为算法的单元,软件上是无法读和修改的,即使你是合法的用户也是如此,我理解这种技术除了增加程序复杂性以外,主要是为了对付使用模拟器技术的破解。

此加密狗(加密狗)的所有API函数调用都会有返回值,返回值为0的时候表示成功。因此,破解思路就出来了,就是使用我们自己的工具(如VB、VC等)重新编写构造一个和加密狗API一样的DLL动态库文件,里面也包含Read、 Write等全部API中包含的函数,使用的参量及返回值和原来的函数一样,所有函数返回零。然后对Query、Read函数进行处理,返回应用软件需要的数值即可。这个新的DLL文件编写成功后,直接替换掉原来的DLL文件,这时候再运行应用软件,软件访问加密狗的操作就全部会被拦截,拦截程序永远会返回正确的数据给软件,从而实现了模拟加密狗的运行。

总结

经过上面的介绍大家可以基本了解到我们常见的加密狗的基本破解方法,而大家最常见的免加密狗补丁破解则就是属于第三种破解方式。而大家购买加密狗常见的两种所谓有驱加密和无驱加密狗则分别对应第三种dll文件破解和复制狗破解,有驱狗的最大特点就是安装完程序和必要的驱动(这个是官方驱动)后还需要打一个补丁,这个补丁名字繁多,什么所谓升级补丁、新版驱动等等,其实都是破解补丁而已,只不过经过了二次加密需要验证加密狗,当然这也是为了促进销售的举措,实际上那个加密狗只是一个摆设,仅仅验证补丁的加密而已,所以价格极为低廉。无驱加密狗直接能够使用正版程序,普遍都是和正版同样加密狗芯的加密狗复制的。虽然平时大家看不出这两种加密狗有什么问题,但是注意细节的可能已经看到了,有驱加密狗其实就是不管你软件发出任何请求,一律返回数字0给软件,从而达到破解目的,试问,如果软件开发者使坏偏偏需要返回1的话岂不是造成严重错误?所以购买结构计算软件应当以复制狗为主,除非没有复制狗提供的才能考虑有驱狗。而仅仅是绘图软件施工资料等一般性软件则不需要如此严格,有驱无驱都是一样使用了,就没必要追求过分的完美。


目录
相关文章
|
监控 数据处理
基于STC89C52RC单片机的MODBUS RTU协议从机的实现
基于STC89C52RC单片机的MODBUS RTU协议从机的实现
801 0
|
5月前
|
存储 SQL 缓存
|
存储 运维 Kubernetes
Kubernetes密钥管理安全方案和最佳实践
众所周知,Kubernetes作为编排引擎为应用开发者提供了Secrets模型用于在应用Pod中加载和使用敏感信息(如数据库密码、应用证书、认证token等)。Secrets的使用对于K8s开发者来说应该已经比较熟悉了,下面是一些Secrets相关的基本概念:Secrets是一个namespace维度的模型,结合K8s RBAC访问控制可以实现集群内namespace维度的读写隔离Secrets可
1525 0
Kubernetes密钥管理安全方案和最佳实践
|
程序员 数据库 微服务
长事务管理不再难:Saga模式全面解析
本文介绍了分布式事务中的Saga模式,它用于解决微服务架构下的事务管理问题。Saga通过一系列本地事务和补偿操作确保最终一致性,分为编排和协同两种模式。文章重点讲解了编排模式,其中 Saga 协调者负责事务的执行和失败后的补偿。Saga 模式适用于业务流程明确且需要严格补偿的场景,能有效管理长事务,但实现上可能增加复杂性,并存在一致性延迟。文章还讨论了其优缺点和适用场景,强调了在面对分布式事务挑战时,Saga 模式的价值和潜力。
3163 6
|
JavaScript 前端开发 网络协议
Vue.js 与 WebSocket 的惊世联姻!实时数据通信的震撼变革,你敢错过?
【8月更文挑战第30天】在现代Web开发中,实时数据通信至关重要。Vue.js作为流行前端框架,结合WebSocket技术,实现了高效实时的数据交互。本文简要介绍了WebSocket原理及其在Vue.js项目中的应用方法,包括建立连接、监听事件及数据处理等步骤,展示了如何利用二者结合轻松应对实时聊天、股票更新等多种场景,为开发者提供了实用指南。希望本文能帮助您更高效地实现Web应用的实时通信功能。
592 0
|
SQL Java 应用服务中间件
Apache Doris 自定义C++ UDF之流程详解(1)
Apache Doris 自定义C++ UDF之流程详解(1)
681 0
|
算法 数据挖掘
【北京大学 软件工程】五、结构化设计方法-1
结构化设计是软件开发中的重要环节,旨在根据需求规约构建系统的软件模型。其主要目标是在抽象层面上建立系统架构(包括数据和程序结构),并详细描述处理算法,最终形成设计规格说明书。结构化设计分为总体设计和详细设计两部分:总体设计确定系统的模块结构及模块间的调用关系;详细设计则深入描述各模块的具体实现。 设计方法需提供体现原理的术语、表达软件模型的工具及过程指导。总体设计引入了“模块”与“调用”两个核心概念,并使用模块结构图(MSD)来表达静态结构。设计步骤包括将DFD(数据流图)转化为MSD,区分变换型和事务型数据流图,通过自顶向下的方式逐步细化模块,确保高内聚低耦合。
【北京大学 软件工程】五、结构化设计方法-1
|
监控 数据库 虚拟化
虚拟化识别USB加密狗|银行U盾等解决方案
USB SEVER产品不再单纯依赖本地主机,这打破了传统的远程监控困难的桎梏。客户只需使用互联网便可以隨時隨地访问并监控设备,操作方便。使远程设备与主机进行通信,而无需更改现有的应用软件。通过一个IP地址从远程服务器或PC外围设备可以集中管理和监控。
MCU最小系统电路设计(以STM32F103C8T6为例)-2
MCU最小系统电路设计(以STM32F103C8T6为例)
MCU最小系统电路设计(以STM32F103C8T6为例)-2