Electron 写的软件如何做到一机一码授权?

2023 年 4 月 11 日
 coolair
我的想法是给他一个注册码,他用这个注册码在本地激活了软件,就无法再在其他机器上激活了,这个怎么实现?
5323 次点击
所在节点    问与答
19 条回复
gimp
2023 年 4 月 11 日
能联网激活吗
gimp
2023 年 4 月 11 日
或者提供给他一个工具,获取他机器的唯一机器编码的,把这个编码给你,你用这个编码生成 KEY 发给他激活。
zyxk
2023 年 4 月 11 日
基本原理就是获取 cpu 硬盘 网卡 等的唯一 id, 再组合一下, 加密生成响应的激活码, 没用过 Electron, 应该可以读取硬件吧.
yolee599
2023 年 4 月 11 日
联网:这个不用我说了吧。
离线:让用户生成机器唯一 ID ,发给你生成激活码,你再把激活码发给用户。
coolair
2023 年 4 月 11 日
@gimp 可以联网
babytomas
2023 年 4 月 11 日
可以利用 canvas 渲染偏差生成指纹,并以此作为设备 ID 获取授权。
hefish
2023 年 4 月 11 日
联网就好办了。
生成一个 kv 对给客户,提交到服务器上来,验证了就行。
ybz
2023 年 4 月 11 日
@hefish 那如何防止用户拿这个 kv 用另外一台机器提交呢
proxytoworld
2023 年 4 月 11 日
生成机器唯一 id
chengxy
2023 年 4 月 11 日
可以参考这个 https://webauthn.io/
luohechen
2023 年 4 月 11 日
@babytomas 好奇这个方案,大佬方便推荐下相关文章么,按关键字没搜索到,感谢!
0o0O0o0O0o
2023 年 4 月 11 日
既然 electron 那就用 js fingerprint 技术获取唯一 ID ,其实你初次启动随机生成个 uuid 就行;

能联网才是关键,提交 key-uuid 进行激活,每个 key 只能激活一次;用带 seq 的心跳包确保同一时间只能一台机器用,发现作弊就 ban 了。

这样的方案实现起来成本低,别的太 hack 的技术实在没必要,攻防太累,客户端应用谁也不能真正防破解(包括这个方案)。
0o0O0o0O0o
2023 年 4 月 11 日
polarbearn
2023 年 4 月 11 日
用 electron 写的防不住的,反编译,全部代码都出来了,也有各自方法调出控制台
polarbearn
2023 年 4 月 11 日
调出控制台,修改授权的判断代码,随意输入都能授权成功
https://cdnjson.com/images/2023/04/11/auto.gif
n0th1n9
2023 年 4 月 11 日
@polarbearn 可以使用 [bytenode]( https://github.com/bytenode/bytenode) 把 js 搞成 v8 字节码,就比较难修改代码了
babytomas
2023 年 4 月 11 日
@luohechen

前面提到 canvas 的方法你可以使用现成的 fingerprint-js 生成唯一 ID 。

另外核心代码可以使用 javascript-obfuscator 处理一遍、这样即使是别人反向把源代码弄出来也已经不具备可读性了。
hefish
2023 年 4 月 11 日
@ybz 不用防。 可以记录每个 key 的验证次数,明显频率过高的,就 blacklisted 。 别管太死,太死了也不适合自己的产品推广嘛。
ybz
2023 年 4 月 11 日
@hefish 很有道理,不一样的角度解决技术问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/931428

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX