USB软件狗的设计及反破解技术.doc

上传人:枫** 文档编号:559837038 上传时间:2023-07-04 格式:DOC 页数:5 大小:41.50KB
返回 下载 相关 举报
USB软件狗的设计及反破解技术.doc_第1页
第1页 / 共5页
USB软件狗的设计及反破解技术.doc_第2页
第2页 / 共5页
USB软件狗的设计及反破解技术.doc_第3页
第3页 / 共5页
USB软件狗的设计及反破解技术.doc_第4页
第4页 / 共5页
USB软件狗的设计及反破解技术.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《USB软件狗的设计及反破解技术.doc》由会员分享,可在线阅读,更多相关《USB软件狗的设计及反破解技术.doc(5页珍藏版)》请在金锄头文库上搜索。

1、USB软件狗的设计及反破解技术1 软件狗技术近年来,软件狗技术在保护软件开发者利益、防止软件盗版方面起了很大作用。软件狗技术属于硬加密技术,它具有加密强度大、可靠性高等特点,已广泛应用于计算机软件保护。软件狗技术的发展经历了多次更新换代。第一代软件狗通过短接并行口的某两根线,或者再加上一些电阻、电容、二极管等实现;第二代软件狗采用逻辑门电路跨接在并行口上,并采取适当的措施尽量避免软件狗和打印机之间的相互干扰;第三代软件狗的核心芯片是EEPROM,主机通过并行口直接读写EEPROM以实现对加密信息的存取;第四代软件狗以微控制器和EEPROM为核心器件,又称微狗,它具有一定的智能,应用灵活性和抗破

2、解能力都得到了很大提高。传统的软件狗通过在并行口上附加一定的电路实现,而并行口本身的特点限制了传统软件狗技术的进一步发展。由于并行口本身没有电源线,所以传统的并行口软件狗都是通过各种偷电技术从数据线或控制线获得软件狗电路所需的电源,其电路必须选用规模不大的低功耗元器件。在负载能力很低的并行口上,并行口软件狗难以保证正常工作。由于并行口是为连接单个设备设计的,在连接多个设备时很难避免冲突,传统的并行口软件狗必须仔细考虑与打印机之间的兼容性问题。特别是对于一些非标准接口的并行口设备,就更难解决冲突问题。这些都使并行口软件狗技术的发展受到了很大限制。USB是在1994年底由Compaq、IBM、Mi

3、crosoft等多家公司联合提出的一种连接外部设备的新型的通用串行接口技术,它具有真正的即插即用和热插拔功能,理论上可支持多达127个不同外设的同时连接。USB是一种先进的很有前途的接口标准,随着USB接口器件的发展,使用USB接口的设备会越来越多。USB接口本身具有电源线,可为外设提供稳定可靠的工作电源,从而对USB软件狗所用元器件的工作电压、功耗等的要求大大降低,软件狗的工作条件得到很大改善,更容易实现复杂、灵活的设计和电路的微型化。由于USB是为连接多个设备而设计的,有着严格的规范,从接口本身避免了设备间的冲突,只要遵循USB接口规范,USB软件狗不但不会对别的USB设备产生影响,也不会

4、受到别的USB设备的影响。与并行口相比,USB接口更适合于软件狗技术。2 USB软件狗的硬件在本设计中,所使用的微控制器是CY7C63100A/CY7C63101A。它是CYPRESS公司生产的8位精简指令集(RISC)的OTP型微控制器。它集成有1.5Mbps的USB串行接口引擎(SIE)(即USB收发器),具有128字节的片内RAM、2/4K字节的程序存储空间,片内还具有一个自由运行的8位定时器、一个看门狗定时器和内部上电复位电路,它的指令集专门为开发USB应用进行了优化。该控制器拥有两个输入输出端口、16根通用I/O线,且每根线均可作为中断源。端口1的所有引脚都带有可编程驱动器,可以直接

5、驱动LED发光。该控制器的操作电压为4.05.25V,它需要6MHz的外部陶瓷共振器,片内操作时钟为12MHz。CY7C63100A/CY7C63101A是低速USB外设的低成本解决方案,符合USB1.1规范,支持1个设备地址和2个端点(一个控制端点和一个数据端点)。本设计中所使用的存储器是24C02,它是带有硬件写保护功能的串行EEPROM,其接口兼容I2C总线规范,通过一对串行时钟、数据线对片内存储单元进行读写。24C02的片内存储器容量为2K位(或256字节)。本文设计的USB软件狗的硬件电路图如图1所示。其核心器件是微控制器(可根据需要选用CY7C63100A或CY7C63101A,其

6、区别为程序存储器的空间不同,分别为2K字节和4K字节)和串行EEPROM(24C02),各元件的具体参数如图1所示。!-empirenews.page-微控制器的第15(D-)、16(D+)脚分别连接USB连接器的第2(D-)、3(D+)脚,提供微控制器和主机之间信息交换的电信号通道,其中第15引脚(D-)所接的7.5k的上拉电阻是为了满足USB规范的要求。微控制器通过USB接口与主机进行信息交换。微控制器的第20脚(P1.1)经过10K的上拉电阻连接24C02的第7脚(WP,写保护),控制24C02的写操作使能。当WP为高电平(Vcc)时,只能读取24c02的内容而不能对其进行写入;当WP为

7、低电平(Vss)时,则可以进行读、写操作。设置写保护功能,可以防止存储器内容被意外改写。微控制器的第19脚(P1.3)连接24c02的第6脚(SCL,串行时钟),为控制24C02的读写操作提供时钟;微控制器的第18脚(P1.5)经过10K的上拉电阻接24C02的第5脚(SDA,串行数据、地址),作为读写24C02的数据、地址信号线。微控制器通过这三根信号线完成对24C02的读写操作,对24C02的读写控制满足I2C总线规范。3 USB软件狗的软件USB软件狗的软件包括主机软件和微控制器中的软件(固件)。主机软件和固件相配合,协同完成主机与USB软件狗间的信息交换。其中,微控制器中的固件主要完成

8、与USB主机的通信(包括参与USB总线设备枚举、USB软件狗的自身标识等)、对24C02的读写操作、与主机程序相配合实现和主机程序间的数据交换等任务。微控制器程序的简化软件框图如图2所示。 3.1 USB设备枚举USB软件狗插入主机后,主机发现USB软件狗,在执行USB复位操作后,主机使用默认地址(地址0)向USB软件狗发出设备描述符请求,USB软件狗向主机返回自己的设备描述符作为响应;接收到要求的设备描述符后,主机为新发现的USB软件狗指定一个新的USB地址;然后,主机使用新的USB地址重新向USB软件狗发送一个设备描述符请求,USB软件狗向主机返回自己的设备描述符作为响应。主机向USB软件

9、狗发送配置描述符请求,USB软件狗从程序存储空间中取出相应的描述符并返回给主机。当主机接收到所有的描述符后,USB设备枚举过程即告结束。至此,主机已完全了解USB软件狗的资源要求、端点类型和性能等特性。3.2 USB软件狗和主机间的数据交换由于CY7C63100A/CY7C63101A只提供两个USB端点:端点0和端点1。端点1只能发送数据而不能接收数据,所以不适合USB软件狗的交互式数据交换的要求,故只有使用端点0与主机进行数据交换。USB共支持四种类型的传输:等时传输、中断传输、控制传输和批量传输。要求恒定的连续传输速率的实时应用程序一般都采用等时传输方式。等时传输要求及时地提供数据,且对

10、数据的正确性要求不高而对时间极为敏感,所以在等时传输中,数据的有效性不能保证。在传送数据发生错误时,USB并不处理这些错误,而是继续传送新的数据。中断传输方式总是用于对设备的查询,以确定设备是否有数据需要传输。因此中断传输的方向总是从USB设备到主机,传送的数据量很小。但这些数据需要及时处理,以达到实时效果。控制传输提供了一种方法来配置USB设备,并对它操作的某些方面进行控制。每个设备都必须实现一个缺省的控制端点(端点0),控制端点用来配置设备、控制设备状态以及设备操作的其它方面,包括设备控制指令、设备状态查询及确认命令。批量传输适用于对数据的正确性要求很高、而对数据传输速率没有特殊要求的设备

11、。!-empirenews.page-除缺省的针对端点0的控制传输外,对于其他三种传输方式,端点的传输方式一旦确定,则该端点在此配置下只能进行某一特定方向上的数据传输,而不可以在通信过程中改变传输方向,除非重新选择配置。对于USB软件狗应用,由于USB软件狗与主机间要不断地相互进行数据交换,且每次所需要交换的数据量不大,故选用控制传输方式。控制传输至少由两个阶段组成,也有可能是三个阶段。建立阶段-控制传输总是从建立阶段开始,在本阶段主机向目标设备传送信息,定义对USB设备的请求类型(例如读设备描述符)。数据阶段-这个阶段仅仅是因要求数据传输的请求定义的。例如,在数据阶段,读描述符的请求把描述符

12、的内容发送给主机。状态阶段-这个阶段用来报告所请求的操作的结果。控制传输从建立阶段开始,它包含8字节的信息包。这个8字节的信息包定义了在控制传输的数据阶段所传输的数据数量。在数据阶段,信息包的最大数据载荷限制为64字节。对于本设计,由于CY7C63100A/CY7C63101A的端点0只提供了8字节的FIFO缓冲区,故最大信息包只能取8字节。如果有更多的数据需要传输,可以分多次完成。控制传输参与错误检测和恢复机制,努力提供一种最大限度的恢复,以保证数据的完整性。USB设备枚举过程结束后,并没有立即开始工作,必须由主机根据在枚举阶段所获得的信息对USB设备进行配置。配置完成后,USB设备才进入工

13、作状态。此后,主机就可以与USB设备进行数据交换了。主机与USB软件狗间的数据交换过程均由主机方发起,每一次数据交换都由完整的控制传输完成。在控制传输的建立阶段,主机向USB软件狗发送字节的信息包,通过用户自定义的请求类型字段规定USB软件狗对后续数据应进行的处理,或要求USB软件狗向主机返回特定的信息。在数据阶段,USB软件狗接收指定数据或按要求向主机发送相应数据。控制传输的状态阶段指示本次数据传输的结果状态,以确定本次交互是否正确完成。3.3 读写24C02为防止24C02的内容意外改变(例如,由于强干扰或不规范操作等),在不进行写操作时,应使WP引脚保持为高电平,即P1.1保持为高电平。

14、在进行写操作时使WP变低,并一直保持到写操作完成。写操作完成后立即恢复WP为高电平。对24C02具体的读写操作符合I2C总线规范,很多相关书籍都有具体的实例程序,本文不再赘述。为安全起见,存储器24C02中的数据应采用加密后的形式存放。4 软件狗反破解技术针对软件狗的破解方法主要有两种:硬件方法和软件方法。软件狗的硬件破解方法,主要是仿制软件狗的硬件电路。这个方法对付早期的软件狗比较有效。当微狗出现后,由于很多微控制器本身都提供了程序代码保护功能,这使得仿制软件狗特别是获取固件变得越来越困难,这种方法现在已经很少使用。还有一种硬件破解方法是使用逻辑分析仪或软件拦截I/O,记录下软件狗与主机软件

15、间所传送的数据并进行分析以找出规律。这对于一些简单的软件狗比较有效,而对于算法众多、交互数据量很大的软件狗,这种方法所带来的繁杂性可想而知。USB通信规程本身相当复杂,这也大大提高了对USB软件狗进行数据拦截的破解方法的难度。!-empirenews.page-现在,更加常用的软件狗破解方法主要集中在软件方面,并有软件模拟、跟踪分析等方法。软件模拟,就是先启动I/O拦截软件,然后在有软件狗的情况下启动受保护软件,并对受保护软件的每一个功能都进行试运行;同时,后台的I/O拦截软件记录下受保护软件与软件狗之间交互的数据供以后使用。记录完成后,只需在启动受保护软件前先启动模拟软件,就可以使受保护软件在没有软件狗的情况下也可以正常运行。在受保护软件运行过程中,当它企图与软件狗进行通信时,后台的模拟软件拦截到该通信请求,根据先前记录下的数据对真实软件狗进行仿真,使受保护软件误认为软件狗确实存在。对于软件狗和受保护软件间通信数据不变的情形,软件模拟方法十分有效;但如果通信数据中含有随机性的参数(

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号