首页
社区
课程
招聘
[原创]真假Rockey2完整源码
发表于: 2018-3-23 11:48 18893

[原创]真假Rockey2完整源码

2018-3-23 11:48
18893

前段时间工作需要接触了一个程序,其中用到了飞天诚信的Rockey2加密狗。
以前对加密狗接触比较少,刚好借此机会学习了一下加密狗的一些基本知识,并对Rockey2的接口库Rockey2.dll进行了一些简单的分析和重写。
主要内容放在附件里了,包括三个程序,TrueRockey2,FakeRockey2,Rockey2Test

程序介绍:
TrueRockey2 顾名思议,这是真正的Rockey2.dll的源码,可以对真实的狗进行查找、读、写等操作
FakeRockey2 这个是假的Rockey2.dll,只提供了相应的接口,用来模拟Rockey2狗
Rockey2Test 这个是个简单的Rockey2的测试程序

真Rockey2的代码比较长,但也不复杂,跟普通的HID设备操作程序差不多,有兴趣的自己看一看
假Rockey2的代码就比较简单了,这里直接贴出来:

int WINAPI RY2_Find()
{
	//返回值表示找到的狗的个数,返回1表示找到了一个狗
	return 1;
}

int WINAPI RY2_Open(int mode,DWORD uid,DWORD *hid)
{
	//返回值表示打开的狗的序号,返回0表示打开第0个狗成功,并返回HID的值
	*hid = 0x11223344;
	return 0;
}

void WINAPI RY2_Close(int handle)
{
	//do nothing
}

int WINAPI RY2_GenUID(int handle,DWORD *uid, char *seed,int isProtect)
{
	return RY2_SUCCESS;
}

int WINAPI RY2_Read(int handle,int block_index,char *buffer512)
{
	//如果是字符串的话,从配置文件中读取比较方便
	//否则可以修改为从文件中读取,可自行发挥
	char szBuffer[512] = {0};
	char szBlockName[64] = {0};
	sprintf(szBlockName,"Block%d",block_index);
	GetPrivateProfileString("CONFIG",szBlockName,"",szBuffer,512,g_szConfigFilePath);
	strcpy(buffer512,szBuffer);
	return RY2_SUCCESS;
}

int WINAPI RY2_Write(int handle,int block_index,char *buffer512)
{
	char szBlockName[64] = {0};
	sprintf(szBlockName,"Block%d",block_index);
	WritePrivateProfileString("CONFIG",szBlockName,buffer512,g_szConfigFilePath);
	return RY2_SUCCESS;
}

int WINAPI RY2_Transform(int handle, int len, BYTE *data)
{
	return RY2_SUCCESS;
}

int WINAPI RY2_GetVersion(int handle)
{
	//要求返回版本号,这里随便给一个
	//某些版本的Rockey2.dll提供的该函数接口可能不一样
	return 0x010F;
}

int WINAPI RY2_Find()
{
	//返回值表示找到的狗的个数,返回1表示找到了一个狗
	return 1;
}

int WINAPI RY2_Open(int mode,DWORD uid,DWORD *hid)
{
	//返回值表示打开的狗的序号,返回0表示打开第0个狗成功,并返回HID的值
	*hid = 0x11223344;
	return 0;
}

void WINAPI RY2_Close(int handle)
{
	//do nothing
}

int WINAPI RY2_GenUID(int handle,DWORD *uid, char *seed,int isProtect)
{
	return RY2_SUCCESS;
}

int WINAPI RY2_Read(int handle,int block_index,char *buffer512)
{
	//如果是字符串的话,从配置文件中读取比较方便
	//否则可以修改为从文件中读取,可自行发挥
	char szBuffer[512] = {0};
	char szBlockName[64] = {0};
	sprintf(szBlockName,"Block%d",block_index);
	GetPrivateProfileString("CONFIG",szBlockName,"",szBuffer,512,g_szConfigFilePath);
	strcpy(buffer512,szBuffer);
	return RY2_SUCCESS;
}

int WINAPI RY2_Write(int handle,int block_index,char *buffer512)
{
	char szBlockName[64] = {0};
	sprintf(szBlockName,"Block%d",block_index);
	WritePrivateProfileString("CONFIG",szBlockName,buffer512,g_szConfigFilePath);
	return RY2_SUCCESS;
}

int WINAPI RY2_Transform(int handle, int len, BYTE *data)
{
	return RY2_SUCCESS;
}

int WINAPI RY2_GetVersion(int handle)
{
	//要求返回版本号,这里随便给一个
	//某些版本的Rockey2.dll提供的该函数接口可能不一样
	return 0x010F;
}

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2018-3-23 11:49 被achillis编辑 ,原因:
上传的附件:
收藏
免费 3
支持
分享
最新回复 (20)
雪    币: 8206
活跃值: (4161)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好东西  必须顶!
2018-3-23 12:14
0
雪    币: 862
活跃值: (329)
能力值: ( LV9,RANK:165 )
在线值:
发帖
回帖
粉丝
3
哈哈,赞一个
2018-3-23 12:37
0
雪    币: 1201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
说的好,鼓掌!
2018-3-23 12:47
0
雪    币: 421
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
不错,很有价值,赞一个,这里面水很深……………
2018-3-23 14:26
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
赞一个
2018-3-23 14:39
0
雪    币: 58
活跃值: (1130)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
这个狗没有内部运算?
2018-3-23 16:53
0
雪    币: 34
活跃值: (716)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
yangya 这个狗没有内部运算?
可以有变换算法!这样就不管用了!
2018-3-29 18:28
0
雪    币: 2
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
现在有rockey8了,楼主可以搞一搞。
最后于 2018-4-4 16:47 被梧桐絮编辑 ,原因:
2018-4-4 16:47
0
雪    币: 223
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
先顶一个      有yt88教程不      从简单的入手
2018-6-7 00:06
0
雪    币: 300
活跃值: (2472)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
感谢楼主分享
2018-6-7 11:19
0
雪    币: 0
活跃值: (226)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
这个真不错 谢谢楼主 顾名思义 模拟啊
2018-12-7 04:47
0
雪    币: 31
活跃值: (87)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
13
mark 感谢分享
2018-12-11 00:19
0
雪    币: 2262
活跃值: (871)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
感谢分享,这个确实是好东西!
2018-12-17 17:36
0
雪    币: 175
活跃值: (2526)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
没有模拟过R2狗,模拟一个试试。
2019-10-18 14:14
0
雪    币: 8904
活跃值: (5131)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
jgs
16
谢谢楼主提供,学习,收藏
2019-12-6 14:15
0
雪    币: 197
活跃值: (39)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
rockey2hid模拟源码(编译通过)
可以模拟hid,uid。生成hid.dll
支持win10
https://download.csdn.net/download/huangxuehai/13991788
2020-12-31 14:33
0
雪    币: 25
活跃值: (87)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
谢谢分享,学习了            
2021-3-20 09:43
0
雪    币: 3113
活跃值: (3669)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
黄薛海 rockey2hid模拟源码(编译通过) 可以模拟hid,uid。生成hid.dll 支持win10 https://download.csdn.net/download/huangxuehai ...
有没易语言版本的,整个来我买
2021-4-21 09:16
0
雪    币: 34
活跃值: (241)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
前辈您好!你的假狗程序对我这样小白非常适应。但,我用测试读取原狗里数据,只有0区数据,看你测试里也只有0区数据。可能我没整明白,还是程序你没有发全啊?请前辈不忙时,再帮我发一份:422286056@qq.com,非常感谢!
2021-6-8 19:57
0
雪    币: 965
活跃值: (89)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
感谢楼主分享
2021-8-4 14:28
0
游客
登录 | 注册 方可回帖
返回
//