网站导航: 首页 > 设计参考 > 正文 文章搜索
USB 软件狗的设计及反破解技术
 
文章编号:
100809215655
文章分类: 接口技术 USB
点 击:
...
关 键 词: 软件狗
文章来源:
电子技术应用
摘 要:
介绍了软件狗技术的发展,提出了一种改进的低成本USB软件狗的设计方案,分析了常见的加解密技术,并据此提出了一系列反破解措施

3.1 USB软件狗插入主机后,主机发现USB软件狗,在执行USB复位操作后,主机使用默认地址(地址0)向USB软件狗发出设备描述符请求,USB软件狗向主机返回自已的设备描述符作为响应;接收到要求的设备描述符后,主机为新发现的USB软件狗指定一个新的USB地址;然后,主机使用新的USB地址重新向 USB软件狗发送一个设备描述符请求,USB软件狗向主机返回自己的设备描述符作为响应。主机向USB软件狗发送配置描述符请求,USB软件狗从程序存储空间中取出相应的描述符并返回给主机。当主机接收到所有的描述符后,USB设备枚举过程即告结束。至此,主机已完全了解USB软件狗的资源要求、端点类型和性能等特性。

3.2 USB软件狗和主机间的数据交换
  由于CY7C63100A/CYC63101A只提供两个USB端点:端点0和端点1。端点1只能发送数据而不能接收数据,所以不适合USB软件狗的交互式数据交换的要求,故只有使用端点0与主机进行数据交换。
      USB 共支持四种类型的传输:等时传输、中断传输、控制传输和批量传输。要求恒定的连续传输速率的实时应用程序一般都采用等时传输方式。等时传输要求及时地提供数据,且对数据正确性要求不高而对时间极为敏感,所以在等时传输中,数据的有效性不能保证。在传送数据发生错误时,USB并不处理这些错误,而是继续传送新的数据。中断传输方式总线用于对设备的查询,以确定设备是否有数据需要传输。因此中断传输的方向总是从USB设备到主机,传送的数据量很小。但这些数据需要及时处理,以达到实时效果。控制传输提供了一种方法来配置USB设备,并对它操作的某些方面进行控制。每个设备都必须实现一个缺省的控制端点(端点 0),控制端点用来配置设备、控制设备状态以及设备操作的其它方面,包括设备控制指令、设备状态查询及确认命令。批量传输适用于对数据的正确性要求很高、而对数据传输速率没有特殊要求的设备。

      除缺省的针对端点0的控制传输外,对于其他三种传输方式,端点的传输方式一旦确定,则该端点在此配置下只能进行某一特定方向上的数据传输,而不可以在通信过程中改变传输方向,除非重新选择配置,对于USB软件狗应用,由于USB软件狗与主机间要不断地相互进行数据交换,且每次所需要交换的数据量不大,故选用控制传输方式。

      控制传输至少由两个阶段组成,也有可能是三个阶段。建立阶段——控制传输总线从建立阶段开始,在本阶段主机向目标设备传送信息,定义对USB设备的请求类型(例如读设备描述符)。数据阶段——这个阶段仅仅是因要求数据传输的请求定义的。例如,在数据阶段,读描述符的请求把描述符的内容发送给主机。状态阶段——这个阶段用来报告所请求的操作的结果。控制传输从建立阶段开始,它包含8字节的信息包。这个8字节的信息包定义了在控制传输的数据阶段所传输的数据数量。在数据阶段,信息包的最大数据载荷限制为64字节。对于本设计,由于 CY7C63100A/CY7C63101A的端点0只提供了8字节的FIFO缓冲区,故最大信息包只能取8字节。如果有更多的数据需要传输,可以分多次完成。控制传输参与错误检测和恢复机制,努力提供一种最大限度的恢复,以保证数据的完整性。

      USB设备枚举过程结束后,并没有立即开始工作,必须由主机根据在枚举阶段所获得的信息对USB设备进行配置。配置完成后,USB设备才进入工作状态。此后,主机就可以与USB设备进行数据交换了。
     
       主机与USB软件狗间的数据交换过程由主机方起,每一次数据交换都由完整的控制传输完成。在控制传输的建立阶段,主机向USB软件狗发送8字节的信息包,通过用户自定久的请求类型字段规定USB软件狗对后续数据应进行的处理,或要求USB软件狗向主机返回特定的信息。在数据阶段,USB软件狗接收指定数据或按要求向主机发送相应数据。控制传输的状态阶段指示本次数据传输的结果状态,以确定本次交互是否正确完成。

3.3 读写24C02
       为防止 24C02的内容意外改变(例如,由于强干扰或不规范操作等),在不进行写操作时,应使WP引脚保持为高电平,即P1.1保持为高电平。在进行写操作时使 WP变低,并一直保持到写操作完成。写操作完成后立即恢复WP为高电平。对24C02具体的读写操作符合I2C总线规范,很多相关书籍都有具体的实例程序,本文不再多述。
        为安全起见,存储器24C02中的数据应采用加密后的形式存放。

4 软件狗反破解技术
       针对软件狗的破解方法主要有两种:硬件方法和软件方法。

       软件狗的硬件破解方法,主要是仿制软件狗的硬件电路。这个方法对付早期的软件狗比较有效。当微狗出现后,由于很多微控制器本身都提供了程序代码保护功能,这使得仿制软件狗特别是获取固件变得越来越困难,这种方法现在已经很少使用。还有一种硬件破解方法是使用逻辑分析仪或软件拦截I/O,记录下软件狗与主机软件间所传送的数据并进行分析以找出规律。这对于一些简单的软件狗比较有效,而对于算法众多、交互数据量很大的软件狗,这种方法所带来的繁杂性可想而知。 USB通信规程本身相当复杂,这也大大提高了对USB软件狗进行数据拦截的破解方法的难度。

       现在,更加常用的软件狗破解方法主要集中在软件方面,并有软件模拟、跟踪分析等方法。
      软件模拟,就是先启动I/O拦截软件,然后在有软件狗的情况下启动受保护软件,并对受保护软件的第一个功能都进行试运行;同时,后台的I/O拦截软件记录下受保护软件与软件狗之间交互的数据供以后合作。记录完成后,只需在启动受保护软件前先启动模拟软件,就可以使受保护软件在没有软件狗的情况下也可以正常运行。在受保护软件运行过程中,当它企图与软件狗进行通信时,后台的模拟软件拦拱到该通信请求,根据先前记录下的数据对真实软件狗进行仿真,使受保护软件通信数据不变的情形,软件模拟方法十分有效;但如果通信数据中含有随机性的参数(例如,系统的当前时间),那么软件狗和受保护软件间所交互的数据就各不相同,在这种情况下,软件模拟方法就显得无能为力了。例如,主机软件可以取系统当前时间送给软件狗,软件狗使用一定的规则对其进行变换,并把结果送回主机软件,机软件用同样的规则对上述时间值进行同样的变换,检查变换后的结果是否一致。这里需要有好的变换算法,使变换结果对参数的各个部分的改变很敏感且程度相似。或者,软件狗和受保护软件间遵循一定的通信协议(当然是不公开的),所传输的数据中含有大量随机的无用信息,而根据该通信协议,软件狗和受保护软件都可以从中提取出有效的信息。

        在各种软件狗的软件破解方法中,以跟踪分析方法的威力最为强大,具体的有静态分析和动态跟踪等方法。
        静态分析方法是用一些静态反汇编、反编译工具对受保护软件进行逆向分析,以求找出访问软件狗的代码并进行相应的修改。如果预先对受保护软件的程序代码采用一定的变换(可以取软件狗中的数据作为变换参数),在运行时再进行反变换动态生成将要执行的代码,就可以有效地对抗静态分析方法。还可以使用可执行文件压缩工具对受保护软件进行压缩处理,或采用软件加壳工具对其进行处理等,这些都可以有效地对付静态分析法。另外,如果把主机软件的内部函数调用与外壳加密相结合,则可进一步提高加密强度,即使软件的外壳被破除,也仍然不能正常运行。
        动态跟踪破解法不仅可以用于软件狗破解,还可以用来获取一些软件的注册序列号,取消软件的试用期限制、试用次数限制和解锁试用版软件等。这种方法是使用一些调试分析工具软件(如DEBUG、SOFTICE等),控制受保护软件的整个运行过程,找出它与软件狗间交互部分的代码并进行修改,以使其跳过对软件狗的检测或使检测结果无效。该破解方法的使用者往往都具有相当丰富的破解经验,对各种加解密方法了如指掌,这种方法也需要破解者付出很大的精力。对付这种暴力破解方法,主要就是设备跟踪陷阱、使用大量各不相同的加密算法并大量分散地设置对软件狗的访问、分离对软件狗的检测命令和对结果的判断等,目的就是加大跟踪分析的工作量、扰乱破解者的思路,大量消耗其体力和脑力,最终达到使其知难而退。动态跟踪法的一种很有效的对策是限定主机软件与软件狗间交互操作执行的时间。如果软件狗发现某个操作的执行时间超出设定的值(时间闸),则不作响应或送回错误的响应以迷或破解者。这是由于对于同样的操作,动态跟踪所需要的执行时间常常要远大于正常连续运行所需要的时间。在主机软件中也可以设置时间闸,但与在软件设中放置时间闸相比它更容易受到攻击而失效,效果不太好。主机软件也可以接管操作系统的调试函数或检测某些调试软件的存在,一旦发现自身在调试状态下运行,就立即退出运行或使程序不正常运行以迷惑破解者;也可以通过缩短软件升级的周期来使解密者疲于应付。静态分析和动态跟踪方法常常是相互配合使用的。与此对应,相应的反破解方法也是密切结合的。
        软件狗除用来进行软件合法性检验外,还可以实现很多其它有用的功能。例如,可以在软件安装时把硬般的产品序列号、CPU的产品序列号或者网卡的物理地址等硬件信息写入软件狗,以后软件在每次运行时都进行一致性检测以判断本次运行机器和安装进所用机器是否为同一台机器,这样就可以实现软件对运行机器的限制。也可以利用软件狗中的定时器和存储器实现更加安全的软件试用期和使用次数等功能。
从微狗开始,软件狗就引入了微控制器技术,这大大提高了软件狗技术实现的灵活性;USB接口为软件狗提供了一个理想的工作环境,使软件狗硬件所受的限制大大降低;现代密码技术的发展也为软件狗技术提供了更加广阔的发展空间。作为USB技术的软件狗技术相结合的产物,USB软件狗技术无疑会具有十分强大的生命力。

 
相关文章:

上一页 12
 
最新开源项目
 
 
  查看更多...  
 
本站相关产品   淘宝网店
 




 
  查看更多...  

 

本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4