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

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

现在,更加常用的软件狗破解方法主要集中在软件方面,并有软件模拟、跟踪分析等方法。

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

在各种软件狗的软件破解方法中,以跟踪分析方法的威力最为强大,具体的有静态分析和动态跟踪等方法。

静态分析方法是用一些静态反汇编、反编译工具对受保护软件进行逆向分析,以求找出访问软件狗的代码并进行相应的修改。如果预先对受保护软件的程序代码采用一定的变换(可以取软件狗中的数据作为变换参数),在运行时再进行反变换动态生成将要执行的代码,就可以有效地对抗静态分析方法。还可以使用可执行文件压缩工具对受保护软件进行压缩处理,或采用软件加壳工具对其进行处理等,这些都可以有效地对付静态分析法。另外,如果把主机软件的内部函数调用与外壳加密相结合,则可进一步提高加密强度,即使软件的外壳被破除,也仍然不能正常运行。

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

动态跟踪破解法不仅可以用于软件狗破解,还可以用来获取一些软件的注册序列号,取消软件的试用期限制、试用次数限制和解锁试用版软件等。这种方法是使用一些调试分析工具软件(如DEBUG,SOFTICE等),控制受保护软件的整个运行过程,找出它与软件狗间交互部分的代码并进行修改,以使其跳过对软件狗的检测或使检测结果无效。该破解方法的使用者往往都具有相当丰富的破解经验,对各种加解密方法了如指掌,这种方法也需要破解者付出很大的精力。对付这种暴力破解方法,主要就是设置跟踪陷阱、使用大量各不相同的加密算法并大量分散地设置对软件狗的访问、分离对软件狗的检测命令和对结果的判断等,目的就是加大跟踪分析的工作量、扰乱破解者的思路,大量消耗其体力和脑力,最终达到使其知难而退。动态跟踪法的一种很有效的对策是限定主机软件与软件狗间交互操作执行的时间。如果软件狗发现某个操作的执行时间超出设定的值(时间闸),则不作响应或送回错误的响应以迷惑破解者。这是由于对于同样的操作,动态跟踪所需要的执行时间常常要远大于正常连续运行所需要的时间。在主机软件中也可以设置时间闸,但与在软件设中放置时间闸相比它更容易受到攻击而失效,效果不太好。主机软件也可以接管操作系统的调试函数或检测某些调试软件的存在,一旦发现自身在调试状态下运行,就立即退出运行或使程序不正常运行以迷惑破解者;也可以通过缩短软件升级的周期来使解密者疲于应付。静态分析和动态跟踪方法常常是相互配合使用的。与此对应,相应的反破解方法也是密切结合的。

软件狗除用来进行软件合法性检验外,还可以实现很多其它有用的功能。例如,可以在软件安装时把硬盘的产品序列号、CPU的产品序列号或者网卡的物理地址等硬件信息写入软件狗,以后软件在每次运行时都进行一致性检测以判断本次运行机器和安装时所用机器是否为同一台机器,这样就可以实现软件对运行机器的限制。也可以利用软件狗中的定时器和存储器实现更加安全的软件试用期和使用次数等功能。
从微狗开始,软件狗就引入了微控制器技术,这大大提高了软件狗技术实现的灵活性;USB接口为软件狗提供了一个理想的工作环境,使软件狗硬件所受的限制大大降低;现代密码技术的发展也为软件狗技术提供了更加广阔的发展空间。作为USB技术和软件狗技术相结合的产物,USB软件狗技术无疑会具有十分强大的生命力。

原创文章,作者:贝小妹,如若转载,请注明出处:https://www.beipet.com/2154.html

分享本页
返回顶部