注册 登录
编程论坛 VB6论坛

注册码的问题

chen3bing 发布于 2019-07-05 08:38, 2721 次点击
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

我们是做试验机的,为了防止客户不给钱,需要做个扣子,
比如软件先让客户用1个月,如果客户不给钱,软件就不能用了,上位机软件弹出一个窗口,
要求注册,要求提供授权码。然后如果客户给了钱,输入授权码,就可以继续使用产品。
可是这个如何实现呢?我的意思是,产品发到客户那里,上位机软件和下位机都在客户那里,
那个授权码怎么产生等一系列问题怎么解决?请大神告知,谢谢!
6 回复
#2
chen3bing2019-07-05 10:38
有人说要联网,用服务器,那可太麻烦了。
不用服务器可以吗?
#3
pjtyzyq2019-07-05 11:41
根据设备ID按一定规则产生一个“申请码”显示在弹出窗口中,让用户将申请码发给你,在根据申请码按固定规则产生注册码发给用户,用户输入注册码后程序自动进行匹配。
#4
深秋20152019-07-05 11:45
不用服务器也可以,把到期时间写进注册表,不过容易被破解,用户修改了注册表就可以破解试用期限的限制。

服务器端限制是最可靠的,每次打开软件都要到服务端检测,过期或没注册的直接不让启动
#5
chen3bing2019-07-05 12:02
回复 4楼 深秋2015
谢谢!到期时间我可以用下位机实现,那就可以不用服务器了吧?
#6
风吹过b2019-07-05 13:12
如果下位机,一定是最新的时候,那时间可以用下位机实现。

注册码的话,弄一个自定义的编码规则,自己根据 设备ID(硬盘序号,或者什么硬件编号都可以)生成。
举一个例子:如定义一个 N位的字符串,然后把取的设备ID,按一定的规律,附加进去,或换掉指定位的字符,最终生成一个新的字符串
然后拿这个字符串,MD5(32)运算(或Hash),甚至可以把运算中的常量,自己换掉。
最后取其中的若干位,起始位置和长度自己定,不要写变量,写成全局变量或根据ID的某种规律来生成。
注册码的比较,也是一个问题,防爆破,一个是不要直接比较注册码,一个是加壳。但加壳会带来一个问题,容易被误报毒。
不直接比较注册码,一种思路,按字节做运算,确保正确时运算结果为0,然后最后把结果加起来,这个运算过程不能放在判断是否成立注册的位置,离的越远越好。保存到一个变量中去。然后在某些运算过程中,使用这个变量叠加进去。
如,某个过程初始化,
X=5
写成 X=5+变量
如果注册码完成相同,这个变量的值为0,得到了结果正确。
如果修改跳转,通过的验证,但因注册码不对,那么这个运算得到了 变量不为0,得到了X值就偏差很多了。
   如果X是画图的某个点的坐标,那么看到的结果就是这个点偏离正确的位置了。

以上都是自己的相法。没去实践过。

#7
chen3bing2019-07-05 13:41
注册码的比较,也是一个问题,防爆破,一个是不要直接比较注册码,一个是加壳。但加壳会带来一个问题,容易被误报毒。
不直接比较注册码,一种思路,按字节做运算,确保正确时运算结果为0,然后最后把结果加起来,这个运算过程不能放在判断是否成立注册的位置,离的越远越好。保存到一个变量中去。然后在某些运算过程中,使用这个变量叠加进去。
如,某个过程初始化,
X=5
写成 X=5+变量
如果注册码完成相同,这个变量的值为0,得到了结果正确。
如果修改跳转,通过的验证,但因注册码不对,那么这个运算得到了 变量不为0,得到了X值就偏差很多了。
   如果X是画图的某个点的坐标,那么看到的结果就是这个点偏离正确的位置了。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
谢谢版主。你说的我不太明白,还有那个加壳是什么意思?
1