小白上路之第一次编写注册机

查看 148|回复 9
作者:wangxiangtan2   
小白上路第二弹:自己写个注册机。一款串口通讯工具,对工控人或许有点帮助。这里着重分析注册机的生成过程。
软件界面如下图所示,安装后打开会发现有三天试用期,试用期提示右侧红色字体单击后弹出注册窗口。


点击获取正版授权弹出注册页面.png (45.68 KB, 下载次数: 0)
下载附件
2023-3-23 10:20 上传

我试了将系统时间改为延后一个月,再打开后,首先弹窗提示“试用已过期,请注册正版”,然后弹出注册窗口。
下面开始:
1,拖进PEid感觉问题不大:
查看壳情况,只有一串正常的“Microsoft Visual C# v7.0”字符串,目测无壳,那不就好办了?.Net的东西都是在裸奔。


Peid查看壳情况.png (20.19 KB, 下载次数: 0)
下载附件
2023-3-23 10:30 上传

2,拖进Dnspy傻眼了:
查找注册、授权相关的类、方法,搜索“注册”等字样啥也搜不出来,点开类一看,所有明文字符串全部乱码,
就下面这个样子,代码里面所有涉及到字符串的地方都是这个
[color=]TestQRCodeForm
[color=].
[color=]smethod_0
[color=](
[color=]字符串
[color=],
[color=]
[color=]int
[color=])方法,


混淆的样子.png (29.42 KB, 下载次数: 0)
下载附件
2023-3-23 10:39 上传

3,想着去一下混淆吧:
于是花了一天时间尝试了GrayWolf、.NetReactorSlayer以及De4net所有版本,都没卵用啊,混淆代码依然在,字符串还是乱码一堆。
其中De4net所有版本中只有两个能正常用,其他的版本或者打不开、或者处理后生成的exe无法运行,我在想脱壳和去混淆的区别到底有多大?
4,算了算了,就这样搞吧:
好在能看到正常的类名、方法名。查到关键类:MyRegister。在他的initMachineCode()、doAuth()、checkAuth()下断点后,在dnspy中运行程序,
发现初始运行、注册按钮事件都会触发这个类里面的断点,好了,关键点找到了,就是这个MyRegister类。


关键代码段.png (48.24 KB, 下载次数: 0)
下载附件
2023-3-23 10:34 上传

5,机器码怎么产生的呢?
由下面两图中的方法产生机器码,根据我的断点观察变量内容发现:
1)
[color=]MachineCode
[color=].
[color=]GetInfo
[color=]()产生字符串“
BFEBFBFF000306C3ST1000LM014-1EJ1641ZVG952”;
2)然后传给
[color=]MachineCode
[color=].
[color=]GetMachineCodeString
[color=]()产生
[color=]machineCodeString
[color=]
[color=]=
[color=]“
mxBFEBFBFF000306C3ST1000LM014-1EJ1641ZVG952mx
[color=]”;
3)然后传给MD5加密函数
[color=]DESEncrypt
[color=].
[color=]MD5Encrypt32
[color=](
[color=]machineCodeString
[color=])得到:
[color=]macidMD5
[color=]
[color=]=
[color=]
"693C86F6BCB0CE7B989342FF78002FC7"
4)然后呢,再给他加个头得到:
[color=]sInputString
[color=]
[color=]=
[color=]
"MXPORT693C86F6BCB0CE7B989342FF78002FC7";
5)然后呢,再给他加上
[color=]sInputString
[color=] 的CRC32校验作为尾部,于是得到了完整的机器码:
[color=]Mxcode
="MXPORT693C86F6BCB0CE7B989342FF78002FC7F45A6E84"
就是注册窗口里面我们看到的那个“软件ID”;


获取机器码的函数1.png (18.57 KB, 下载次数: 0)
下载附件
2023-3-23 10:55 上传



机器码初始化过程.png (47.46 KB, 下载次数: 0)
下载附件
2023-3-23 10:55 上传


[color=]MachineCode
[color=].
[color=]GetInfo
[color=]()产生的字符串“
BFEBFBFF000306C3ST1000LM014-1EJ1641ZVG952”到底是什么呢?
根据我多年玩电脑硬件的经验,“
[color=]ST1000LM014”这不是希捷硬盘的型号吗?好吧,获取一下电脑硬件序列号一对比,
[color=]发现:
[color=]1)
[color=]“
BFEBFBFF000306C3“是CPU的序列号;
2)“
[color=]ST1000LM014-1EJ164”是主硬盘的型号;
[color=]3)“
[color=]1ZVG952”是主板的序列号中的一部分;
至此彻底弄清楚了机器码是怎么产生的!


硬件信息.png (194.78 KB, 下载次数: 0)
下载附件
2023-3-23 11:07 上传

6,机器码是怎么使用的呢?
程序的验证是用的
[color=]Mxcode
="MXPORT693C86F6BCB0CE7B989342FF78002FC7F45A6E84"这个码吗?
不是。
看下图,程序直接用了
[color=]macidMD5
[color=]
[color=]=
[color=]
"693C86F6BCB0CE7B989342FF78002FC7"这个码,因为这个类初始化的时候
这个变量已经被赋了值,注册页面显示出来的机器码只是这个
[color=]macidMD5
[color=] 又加上头“MXPORT”、加上CRC32校验位“
[color=]F45A6E84”罢了,
[color=]所以可以直接用
[color=]macidMD5
[color=] 的值。
[color=]反过来,注册机要用机器码的时候,就应该去掉头
[color=]“MXPORT”、再去掉尾部CRC32校验的8个字符。


输入假码后的比较.png (49.41 KB, 下载次数: 0)
下载附件
2023-3-23 11:13 上传

那是怎么用
[color=]macidMD5
[color=]
的呢?看上图

1)程序对
[color=]macidMD5
[color=] 这个本身就是MD5校验码的码又取了一次
[color=]DESEncrypt
[color=].
[color=]MD5Encrypt32()校验,
得到
sInputString ="DD3208636C8E48A30399138FCDE607A7";
2)然后对
[color=]sInputString
[color=]
再做CRC32Cls().GetCRC32Str(sInputString)校验得到
num3 = =0x000000001397832E;
3)然后对num3进行Base62.Encode(num3)编码得到字符串:
string value = "MqUv6"
而这个字符串就是程序拿来跟我输入的“11111111111111”进行对比的真注册码。
7,开始写注册机
好了,弄清楚了机器码的产生过程和机器码的使用就可以编写注册机了。
有两个思路,一个是仿照程序里面的方法获取那个macidMD5值后按程序里面算法求“真码”;
一个是用注册界面的“软件ID”,反着算一遍求“真码”——就是机器码的来源有两个:
一个自己实现机器码的获取、一个用注册界面现成的。保险起见,俩都实现了吧。


类结构.png (9.42 KB, 下载次数: 0)
下载附件
2023-3-23 11:30 上传

按硬件信息获取、MD5校验、CRC32校验、Base62编码编写相应的类。
这里采用“面向百度、面向Github、
面向吾爱“的编程方法,很快就编好了注册机:


生成的注册码.png (20.85 KB, 下载次数: 0)
下载附件
2023-3-23 11:32 上传

输入产生的注册码后就注册成功啦!


注册成功.png (15.72 KB, 下载次数: 0)
下载附件
2023-3-23 11:33 上传

8,自己写注册机也不一定好用啊
在笔记本win10系统下注册机的使用没什么问题,自动手动都正常,但是在
办公室台式机win7系统下就有问题了,
自动生不成注册码……因为注册机获取不到台式机电脑的主板型号,返回一个“       ”的空字符串。
好吧,就用手动生成吧。
然后呢,注册成功后一点击确定按钮——
[color=]程序崩了



程序崩.png (367.58 KB, 下载次数: 0)
下载附件
2023-3-23 11:38 上传

但是呢,授权码是对的,再次打开程序,依然提示正式版~


程序崩了之后再打开.png (167.98 KB, 下载次数: 0)
下载附件
2023-3-23 11:39 上传

开心,哈哈哈哈,有点小小的成就感~


013411liafu4afep4m884h.gif (56.07 KB, 下载次数: 0)
下载附件
2023-3-23 11:59 上传

分享一下注册机:
链接: https://pan.baidu.com/s/1uZsWo2QdBpRWn_IhNGmJMA?pwd=52pj 提取码: 52pj 复制这段内容后打开百度网盘手机App,操作更方便哦
--来自百度网盘超级会员v6的分享

微软, 机器码

zhaohao5301   

学习一下,之前分析机器码 构造 有时候 找不到 特征点,是随机的数据
wangwh27   

https://iotplat.top/#/iot/download
软件下载地址,下载过来玩玩。
lxseam   

看起来很流弊的样子,学习了
newbbq   

才刚学会OD装插件表示LZ很牛
billsmiless   

想拜师一下 ,可否
sumea   

不明觉厉,给你点赞学习!
zhanggengyu250   

好厉害啊!!!学习了!
ningm   

学习一下
chenhschic   

学习了!
您需要登录后才可以回帖 登录 | 立即注册

返回顶部