吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 29443|回复: 64
收起左侧

[.NET逆向] 【注册机】计算机二级全系列学习软件

  [复制链接]
qazwsxlty 发表于 2016-4-29 18:22
本帖最后由 qazwsxlty 于 2016-9-13 16:14 编辑

本人是小白,写注册机的方式可能和各位大神不同,勿喷。。。
破解的程序制作公司为”海贝益友“,是一款计算机二级Office练习软件(C语言、VFP、ACCESS除了字典都是一样的),但是不能评分,下次换一个能评分的。
以下是过程:(图片、代码再次修复)

1.先用Reflector打开程序文件.
1.png
2.很简单地找到了注册码段,软件没有进行混淆,所以加密的代码全部都暴露出来了.
2.png
3.分析代码,发现验证过程是这样的:
    3.1.一开始,有机器码(s1);
    3.2.然后用户输入了一个注册码(s2);
    3.3.接下来,程序从注册码取第1,3,5,7,9…位,从机器码取第2,4,6,8,10…位,放到相应的位置组合成一个新的字符串(s3);
    3.4.取s3的第1,2位,将这两位的字符ASCII码相加,对36取余得到一个数(num1),在上方的数组(字典)中找到num1位置的对应的字符(注意:数组的下表是从0开始的,如果num1等于1,则是第二个字符),将这个字符保存到新字符串(s4)的第2位;
    3.5.取s3的第2,3位,重复上一步,保存到s4的第3位……取s3的第19,20位,重复上一步,保存到s4的第20位;
    3.6.将s2的第1位保存到s4的第一位;
    3.7.对比s2和s4,如果全部一样,就注册成功;
4.既然知道了是如何验证的,那么考虑要如何推出注册码.
    4.1.倒推出注册码貌似是不可能的,而且注册码应该不唯一.
    4.2.那就来暴力:枚举出所有的可能性,然后取验证是否正确.
    4.2.1.但是,如果直接枚举20位注册码,最坏的情况是20!,351928天…
    4.2.2.所以考虑一位一位来,先随机取第1位,然后枚举第2位,在字典中查出第2位,得出s4的第2位,和注册码第2位对比,如果相同,继续枚举第3位,不同则继续枚举第2位或第1位.
    4.2.3.具体的实现方法,就是DFS.
5.开写.(更新一下完整代码好了)
[C++] 纯文本查看 复制代码
#include <set>
#include <map>
#include <list>
#include <cmath>
#include <stack>
#include <queue>
#include <ctime>
#include <string>
#include <cstdio>
#include <vector>
#include <cctype>
#include <climits>
#include <sstream>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <functional>
#define ms(a) memset(a,0,sizeof(a))
typedef long long ll;
const int INF = INT_MAX;
const int MAXN = 1000 + 10;
using namespace std;
bool flag = 0;
char chArray[]
{
	'L', 'U', '3', 'A', 'R', '4', 'K', '5', 'F', '6', 'M', '7', 'Y', '8', 'W', '9',
		'B', 'D', 'E', 'H', 'I', 'N', 'P', 'Q', 'S', 'T', 'V', 'X', 'Z', 'J', '0', 'O',
		'G', '1', 'C', '2'
};
char PrivatePWD[30] = { '0' };
char UserPublicPWD[30];
int main()
{
	srand(time(0));
	while (cin >> UserPublicPWD)
	{
		for (int i = 0; i < 24; i++)
		{
			if (!(i % 2))PrivatePWD[i] = chArray[rand() % 36];//加上随机数生成的比较好看
			else PrivatePWD[i] = chArray[(PrivatePWD[i - 1] + UserPublicPWD[i]) % 36];
		}
		cout << PrivatePWD << endl;
	}
	return 0;
}
6.注册成功
3.png
PS:程序更新后,只是更换了字典.

免费评分

参与人数 6威望 +1 吾爱币 +1 热心值 +6 收起 理由
jason.k + 1 + 1 热心回复!
有你的远方 + 1 谢谢@Thanks!
陈嘉婷 + 1 可不可以给个成品,万分感谢
Hmily + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
青火one + 1 热心回复!
mfk1997 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

3yu3 发表于 2016-4-29 20:17
本帖最后由 3yu3 于 2016-4-29 22:08 编辑

我和你理解有些不一样,感觉没那么复杂。。

QQ截图20160429201029.png

注册机代码:

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
Eternal_w + 1 + 1 我很赞同!
qazwsxlty + 1 谢谢@Thanks!

查看全部评分

3yu3 发表于 2016-6-22 19:00
JunnyHAHA 发表于 2016-6-21 12:49
谢谢大神,好人一生平安,机器码AZTH9OFK4O28QE1XGCUJVB1B

每门都分为两个系统,机器码不一样。你看看你要的是哪个。
OFFICE学习系统:D9WBG5F31NEEJLZ258T9X7HO
OFFICE考试系统:OT7HKMR8N8OXICG9R4Q78WS4
王美君 发表于 2016-4-29 18:35
昔忆网络 发表于 2016-4-29 19:00
感谢分享 这个好用
wangqiustc 发表于 2016-4-29 19:58
厉害厉害,谢谢
慢慢的拼凑 发表于 2016-4-29 20:04
好东西,虽然我看不懂
头像被屏蔽
chen1136a 发表于 2016-4-29 20:07
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
次元大爱吾爱 发表于 2016-4-29 20:10
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| qazwsxlty 发表于 2016-4-29 20:31
3yu3 发表于 2016-4-29 20:17
我和你理解有些不一样,感觉没那么复杂。。

这个方法很好,谢谢提醒。
习惯了,想问题总是往ACM题目的方向想。。。
tedmc 发表于 2016-4-30 10:09
谢谢大神一步步的讲解!!!!!!!!!!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 02:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表