首页
社区
课程
招聘
[原创]Rockey2破解软复制的研究
发表于: 2013-10-25 22:40 7450

[原创]Rockey2破解软复制的研究

2013-10-25 22:40
7450

免责申明:本文只是对Rockey2的软复制安全性的研究,仅是个人的兴趣爱好,也许有限的帮助对应的企业提升其安全性。本文只是对其中的方案的思路分析和分享,不会提供具体的源码和工具(即使提供也是来源于网络可以公开获取的工具和源码),对于他人使用文中涉及技术,工具和方法,作者不负任何责任。如有兴趣可以email交流:Sunfeedy@163.com

      近期有机会对rockey2的加密狗进行软复制操作,能想到几个方案都尝试了也都获得了成功。抽时间分析了其安全性,因为接触不久,算是一个思路总结,请各位大牛多多斧正。Rockey加密狗的原理不是很复杂,就是把一部分特殊的数据写入在狗中,目标程序在运行时随时去访问验证这些数据的正确性,只有通过验证目标程序才能正常运行。这些数据可以是标识信息也可以是程序依赖的数据。

而对于加密狗破解无非是两种方案,即
1,破解目标软件不进行读狗验证等的操作,目标程序一般是加壳的,来增加破解难度
2,对狗进行复制,复制又可以分为硬复制和软复制,本文重点讨论的是软复制的方案。

软复制又分为如下几种:
1,劫持hid.dll进行数据拦截和加工;
2,通过微软的DSF来虚拟usb设备,模拟usb狗的数据读取操作;
3,在驱动层面写个驱动虚拟usb设备,模拟数据的读取操作。

上面不管哪种方案,目的都是让软件以为真的狗存在。

在讲方案前先简单介绍下usb狗的UID和种子的关系的,这个地方对于初学者来说,容易误操作(不小心使用把狗的UID给重新设置了~)。usb狗一般会有一个cpu的芯片,并在固件中内置了一套seed(种子)到UID的算法,通过主机下放一个seed的值给usb狗,usb狗根据内置的算法生成UID。这样如果不知道seed和算法是无法生产相同值UID的狗,只有通过编程器写入,也就是硬复制。

在进行软复制前,需要把usb狗中的数据读取出来,这里可以使用Tee8088前辈的软件(论坛都有,大家自己找吧);这个软件可以很方便的把USB狗中的相关信息读取出来。有了这些信息就可以复制狗了。

方案一:hid劫持的原理很简单,就是利用程序读取dll库文件的路径优先级,在程序目录下伪造一个hid.dll文件,让程序优先使用我们构造的hid.dll文件。(为什么是hid文件呢,是因为程序对usb设备的操作一般都是使用hid中的接口)。网页目前有的hid.dll代码是DELPHI或是汇编的(貌似都有些问题,不稳定),于是我自己写了一个c++语言的,解决调用堆栈返回的问题后,现在使用非常完美。
这个方案是最简单的方案,但是也存在一些缺陷,即必须要电脑上插有usb的其他设备才能使用,否则无法生成对应的hid句柄。

方案二:使用微软的DSF方案也是不错的,网上有对应的代码下载(GenericHID),只需要修改下一些数据就可以使用了,网上只有win7的驱动,我重新编译了winxp的。但是我在测试时发现这个方案的稳定性很差,win xp下电脑重启后会出现系统文件丢失无法启动的现象(据网友反馈只有在部分克隆的操作系统出现,正版的没有出现),在win7虽然重启后可以运行,但是不稳定,出现过几次usb加载失败需要重新卸掉再加载。

方案三:驱动级别的模拟是最好的方案,但是难度也最大,网上没有任何资料。必须要有驱动开发经验,我在摸索中参考使用了 win ddk 中vhidmini的例子源代码,增加了USB相关数据处理实现了该功能。可以完全模拟狗的行为,重启后自动挂接。这个方案经过测试是最完美的。

一个有意思的事,我最耗时不是方案三,反而是方案一。究其原因是调用Hid函数使用的是__stdcall 方式,即由被调用者释放参数栈,而我实现的myHId函数是__cdecl方式(即由调用者释放参数栈),导致参数栈错误,在这个地方纠结了很久,呵呵。

最后对使用加密狗的软件的建议:一定要对目标程序进行加壳,而且最好是目前最难破解的VMProtect壳。加密狗最好使用最新的版本或是国外的,可以撑久一些。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 5
支持
分享
最新回复 (7)
雪    币: 1556
活跃值: (888)
能力值: ( LV9,RANK:320 )
在线值:
发帖
回帖
粉丝
2
nice.I can give one.
2013-10-25 23:04
0
雪    币: 221
活跃值: (2326)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
方案三:的代码能不能共享一下,谢谢了
2013-11-3 11:54
0
雪    币: 249
活跃值: (250)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
同求方案三代码
2013-11-4 00:01
0
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
目前正在学习DSF的东西。。。
2013-11-7 15:36
0
雪    币: 175
活跃值: (964)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
网上有专门针对rockey2的破解视频教程,驱动编程模拟必需有官方的API才行。那个视频都是按照API来编程,整几个类似的函数调用就行了,至于源码,在那个视频里讲得很清楚了
2013-11-25 14:26
0
雪    币: 2
活跃值: (173)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
Can  you  please  share  tools  or  sources  about  it?
2017-7-15 01:01
0
雪    币: 86
活跃值: (1188)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
同求代码
2017-7-15 08:45
0
游客
登录 | 注册 方可回帖
返回
//