首页
社区
课程
招聘
未解决 [求助]这个注册码授权可以控制时间
发表于: 2021-3-14 16:15 3954

未解决 [求助]这个注册码授权可以控制时间

2021-3-14 16:15
3954

链接:https://pan.baidu.com/s/1VmF4N80pQOcRAaxwYVzkow
提取码:hyj6
这个软件注册码很奇怪,每次打开生成的机器码都不一样,原来是他的注册码与时间有关。
查壳发现无壳。
OD载入,找到“注册码校验和错误”,设置断点
想追踪真码,到了这里却看不到,我是错在哪
设置断点
然后再运行软件
运行软件
随意输入假码
输入假码
在寄存器中查看,结果可以看到输入的假码和CDK码以及今天的日期但就是没有看到真码。
运行后断在此处
但并没有找到真码
高手指点一下,这个操作错在何处。


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

收藏
免费 0
支持
分享
最新回复 (10)
雪    币: 6371
活跃值: (3440)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
谁说一定会有真码
2021-3-14 17:08
0
雪    币: 59
活跃值: (1606)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看着个界面,好有年代感啊
2021-3-14 17:59
0
雪    币: 1251
活跃值: (3710)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
像20年前的东西
2021-3-14 20:44
0
雪    币: 49
活跃值: (451)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
运行就是提示这个
---------------------------
预付费售电管理软件V3.1
---------------------------
'2010-11-10' is not a valid date.
---------------------------
确定   
---------------------------
2021-3-14 22:50
0
雪    币: 4516
活跃值: (4493)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
srand((unsigned int)time(NULL));

	unsigned char cdkey[8] = { 0 };

	SYSTEMTIME tm;
	GetLocalTime(&tm);
	cdkey[0] = tm.wYear % 2000;
	cdkey[1] = tm.wMonth;
	cdkey[2] = tm.wDay;
	cdkey[3] = 30;//3.0 版本号
	cdkey[4] = 0;
	cdkey[5] = 0;
	cdkey[6] = 0xA + rand() % 0x63;//随机填充一位 所以你会看到机器码每次不一样
	cdkey[7] = 0;

	//先把效验值算出来
	int hash = 0;
	for (int i = 0; i < 8 - 1; i++)
	{
		hash += cdkey[i];
		if (hash >= 0x64)
		{
			hash -= 0x64;
		}
	}
	cdkey[7] = hash;

	//保留最后一位效验值,这样起到效验前面数据的作用
	for (int i = 0; i < 7;i++)
	{
		cdkey[i] = cdkey[i] + cdkey[i + 1];
		if (cdkey[i] >= 0x64)
		{
			cdkey[i] -= 0x64;
		}

		if ((cdkey[i] & 0xf0) < 0x60)
		{
			cdkey[i] ^= 0x3;
		}
	}

	//这样你可以理解注册码了 算法相同.只是填充的数据  算法就是这样子了

	printf("生成机器码:%02d%02d-%02d%02d-%02d%02d-%02d%02d\n", cdkey[0], cdkey[1], cdkey[2], cdkey[3], cdkey[4], cdkey[5], cdkey[6], cdkey[7]);


以上就是完整的注册算法了.  可以用来生成机器码.  只要填参数就可以生成可以用的注册码.

机器码为什么随机在代码里面也可以看到了.

实际上这个机器码和注册码没什么关系.


比如这个注册码,随便都可以注册使用.

2307-1234-2532-2291


有效期为: 2021-05-30

最后于 2021-3-14 23:07 被Mxixihaha编辑 ,原因:
2021-3-14 22:52
2
雪    币: 36302
活跃值: (7170)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
先强改存入注册码,找到存储位置,返回真一样能爆破吧,死教条你就输了。
2021-3-15 07:53
0
雪    币: 856
活跃值: (385)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
Mxixihaha srand((unsigned&nbsp;int)time(NULL)); unsigned&nbsp;char&nbsp;cdkey[8]&nbsp;=&am ...
这个与CDK码没有关系的注册码?这个注册算法还是看不明白,我是菜鸟,刚初学还没有达到写注册机的水平
2021-3-15 08:55
0
雪    币: 4516
活跃值: (4493)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
开心一族 这个与CDK码没有关系的注册码?这个注册算法还是看不明白,我是菜鸟,刚初学还没有达到写注册机的水平
那你就慢慢先学习基础, 像这类数据软件作为商用的,暴破只要有一处弄得不好 就有可能出现功能异常,数据异常,非常不保险的.  效验的地方多,如果不是注册码注册很有可能发现不了其他检测的地方,等实际操作的时候出现莫名的问题.

先从基础开始 , 看不明白证明你的能力还不够玩这个东西. 相信你经过学习之后再来看会有收获的.
2021-3-15 09:23
0
雪    币: 856
活跃值: (385)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
所以我一开始就想尝试追注码,
2021-3-16 22:49
0
雪    币: 4516
活跃值: (4493)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
开心一族 所以我一开始就想尝试追注码,
没有明码的注册码,不是所有的东西都会有 strcmp 的.  所以没有明文比较.找不到的.
2021-3-17 21:13
0
游客
登录 | 注册 方可回帖
返回
//