W***o 发帖数: 6519 | 1 粗糙的想法就是拿到用户的mac address,加上软件的版本和build number,生成一个
复合的user id,
在自己的server上把这个user id hash 一下,把hash反馈给用户,
用户那这个hash在软件gui上输入后,软件用同样的算法再hash,比较输入的hash
string,
如果两个一致,就给软件注册。
这种注册码是一串长长的字符串,不如windows注册码好看,比如HKG3D-JKOP8-76SFQ-
876HG
如何生成注册码好一点?保证安全性? |
s*********n 发帖数: 34 | 2 大牛开始自己创业了?
【在 W***o 的大作中提到】 : 粗糙的想法就是拿到用户的mac address,加上软件的版本和build number,生成一个 : 复合的user id, : 在自己的server上把这个user id hash 一下,把hash反馈给用户, : 用户那这个hash在软件gui上输入后,软件用同样的算法再hash,比较输入的hash : string, : 如果两个一致,就给软件注册。 : 这种注册码是一串长长的字符串,不如windows注册码好看,比如HKG3D-JKOP8-76SFQ- : 876HG : 如何生成注册码好一点?保证安全性?
|
m*****n 发帖数: 3575 | 3 软件用同样的算法再hash,比较输入的hash
string
漏洞就在这里——你的程序必须抗反编译,否则前功尽弃 |
W***o 发帖数: 6519 | 4 这怎么抗比较好?
或者能不能把生成的license code再用我自己的private key 来sign签名一下?
其实这种license code一般只是尽量保障正常用户购买license的动力,对于hacker来
说可以说是防不胜防,连windows, office都能被hack 注册码…… 我这几十块钱的小
软件真是😓
【在 m*****n 的大作中提到】 : 软件用同样的算法再hash,比较输入的hash : string : 漏洞就在这里——你的程序必须抗反编译,否则前功尽弃
|
m*****n 发帖数: 3575 | 5 其实很简单
你不要用那些不抗反编译的语言编写,例如python,JS
Java中等,可以加壳
C类的最难搞,多开几个线程,把堆栈搞乱
编译之前搞个变量替换,把函数名都搞得奇奇怪怪的
没有几个能破得了
还有你的核心密钥也不要单用一行写
生成的复杂点,分散在几个函数里分几步生成
【在 W***o 的大作中提到】 : 这怎么抗比较好? : 或者能不能把生成的license code再用我自己的private key 来sign签名一下? : 其实这种license code一般只是尽量保障正常用户购买license的动力,对于hacker来 : 说可以说是防不胜防,连windows, office都能被hack 注册码…… 我这几十块钱的小 : 软件真是😓
|
g*****n 发帖数: 420 | 6 用rsa生成license code就行,hacker只能暴力破解。至少不会写出注册机来 |
a*****g 发帖数: 19398 | 7 战略性解决这个问题
升级就好了
【在 W***o 的大作中提到】 : 粗糙的想法就是拿到用户的mac address,加上软件的版本和build number,生成一个 : 复合的user id, : 在自己的server上把这个user id hash 一下,把hash反馈给用户, : 用户那这个hash在软件gui上输入后,软件用同样的算法再hash,比较输入的hash : string, : 如果两个一致,就给软件注册。 : 这种注册码是一串长长的字符串,不如windows注册码好看,比如HKG3D-JKOP8-76SFQ- : 876HG : 如何生成注册码好一点?保证安全性?
|
w***g 发帖数: 5958 | 8 正解,github上应该有轮子吧
【在 g*****n 的大作中提到】 : 用rsa生成license code就行,hacker只能暴力破解。至少不会写出注册机来
|
|
W***o 发帖数: 6519 | 9 谢谢,受到启发一下子找到好多轮子,😄
【在 w***g 的大作中提到】 : 正解,github上应该有轮子吧
|
T********i 发帖数: 2416 | 10 就是个public key signature。
RSA效率太低,给你生成上千个bit的签名,用户只能copy paste,手工输入就免了。
效率高的可以考虑椭圆曲线ECC。prime256v1签名只有64bit。
我的设备都用另一种曲线,25519,据说不会有NSA可能的后门。prime256v1因为是NIST
标准,因此会有这种担心(被NSA植入后门)。
这些,当quantum computer达到7000 qbit的时候都是渣,几十秒就破解了。当然现在
还破解不了。
【在 W***o 的大作中提到】 : 谢谢,受到启发一下子找到好多轮子,😄
|
|
|
W***o 发帖数: 6519 | 11 我是用Go写生成的binary
【在 m*****n 的大作中提到】 : 其实很简单 : 你不要用那些不抗反编译的语言编写,例如python,JS : Java中等,可以加壳 : C类的最难搞,多开几个线程,把堆栈搞乱 : 编译之前搞个变量替换,把函数名都搞得奇奇怪怪的 : 没有几个能破得了 : 还有你的核心密钥也不要单用一行写 : 生成的复杂点,分散在几个函数里分几步生成
|
d******c 发帖数: 2407 | 12 如果注册必须联网的话,应该不难吧。
隔段时间必须联网验证(不需要用户干预,把重复注册的注册码ban掉),跟硬件信息
绑定(在新设备上装需要注册一下)。
这样都不需要注册码,只是检查硬件信息是不是在列表里而已。当然用户可以改mac
address,那个成本就比较高了,问题不大。
要破解就得自己建个server激活了。
【在 W***o 的大作中提到】 : 粗糙的想法就是拿到用户的mac address,加上软件的版本和build number,生成一个 : 复合的user id, : 在自己的server上把这个user id hash 一下,把hash反馈给用户, : 用户那这个hash在软件gui上输入后,软件用同样的算法再hash,比较输入的hash : string, : 如果两个一致,就给软件注册。 : 这种注册码是一串长长的字符串,不如windows注册码好看,比如HKG3D-JKOP8-76SFQ- : 876HG : 如何生成注册码好一点?保证安全性?
|
n*********2 发帖数: 357 | 13 > 隔段时间必须联网验证
这个是怎么保证的?
如果对方修改你已经发布的代码把这个“隔段时间联网验证”的部分跳过怎么办?如此
修改过的代码压根就不会联网验证了。
[类似地,客户也可以修改你已经发布的代码,把那些验证license code的二进制代码
部分跳过去;这样, 不管你的license code的生成是多么地安全,它一点儿用都没有
。这个问题的难点不在于license code的生成, 而在于验证license code代码部分的
安全。]
【在 d******c 的大作中提到】 : 如果注册必须联网的话,应该不难吧。 : 隔段时间必须联网验证(不需要用户干预,把重复注册的注册码ban掉),跟硬件信息 : 绑定(在新设备上装需要注册一下)。 : 这样都不需要注册码,只是检查硬件信息是不是在列表里而已。当然用户可以改mac : address,那个成本就比较高了,问题不大。 : 要破解就得自己建个server激活了。
|
m*****n 发帖数: 3575 | 14 好主意
我也打算学GO
请问GO能打包成Linux的Binary么?
【在 W***o 的大作中提到】 : 我是用Go写生成的binary
|
o****p 发帖数: 9785 | 15 这有什么用?人家clone你的mac就完了。取点各种硬件的序列号什么的,如果换了硬件
就再跟你申请一个license。
【在 W***o 的大作中提到】 : 粗糙的想法就是拿到用户的mac address,加上软件的版本和build number,生成一个 : 复合的user id, : 在自己的server上把这个user id hash 一下,把hash反馈给用户, : 用户那这个hash在软件gui上输入后,软件用同样的算法再hash,比较输入的hash : string, : 如果两个一致,就给软件注册。 : 这种注册码是一串长长的字符串,不如windows注册码好看,比如HKG3D-JKOP8-76SFQ- : 876HG : 如何生成注册码好一点?保证安全性?
|
a9 发帖数: 21638 | 16 这玩意的难点不是破解你的密钥算法,关键是怎么防跳过你的验证。跟联网不联网关系
不大
一个
76SFQ-
【在 d******c 的大作中提到】 : 如果注册必须联网的话,应该不难吧。 : 隔段时间必须联网验证(不需要用户干预,把重复注册的注册码ban掉),跟硬件信息 : 绑定(在新设备上装需要注册一下)。 : 这样都不需要注册码,只是检查硬件信息是不是在列表里而已。当然用户可以改mac : address,那个成本就比较高了,问题不大。 : 要破解就得自己建个server激活了。
|
w********m 发帖数: 1137 | 17 hash做个sub——string(0,20)就可以了吧。
1/36^20的collision几率,忽略不计。 |
a*****g 发帖数: 19398 | 18 是的。
我从前破解各种软件,很多很多情况直接改一个代码而已
信息
mac
hash
【在 a9 的大作中提到】 : 这玩意的难点不是破解你的密钥算法,关键是怎么防跳过你的验证。跟联网不联网关系 : 不大 : : 一个 : 76SFQ-
|
f*******t 发帖数: 7549 | |
x****u 发帖数: 44466 | 20 我上次网上买了SNK的正版侍魂,发现在Windows10下已经跑不起来了,提示光盘不是正版
然后debug直接把jne换成je搞定
【在 a*****g 的大作中提到】 : 是的。 : 我从前破解各种软件,很多很多情况直接改一个代码而已 : : 信息 : mac : hash
|