目前软件使用授权的方案如下
System Information
Manufacturer: Alibaba Cloud
Product Name: Alibaba Cloud ECS
Version: pc-i440fx-2.1
Serial Number: 033430d9-4d07-4c5a-8a9f-7ef4ce4ee142
UUID: 033430D9-4D07-4C5A-8A9F-7EF4CE4EE142
Wake-up Type: Power Switch
SKU Number: Unknown
Family: Unknown
虚拟机
System Information
Manufacturer: VMware, Inc.
Product Name: VMware Virtual Platform
Version: None
Serial Number: VMware-56 4d a7 bf 49 4f 46 c6-d8 34 38 b1 df 82 2a 02
UUID: BFA74D56-4F49-C646-D834-38B1DF822A02
Wake-up Type: Power Switch
SKU Number: Unknown
Family: Unknown
基于 SN 或者 UUID ,网卡 MAC 地址,授权开始时间,当前授权时间,授权结束时间等进行序列化
最后基于序列化进行 RSA 私钥签名 类似于 JWT 方案,软件主体包含公钥验证下签名是否正常(软件记录每次运行时间,本次运行时间不得早于上次运行时间 同时也小于结束时间)
签名验证完 反序列化获取授权主体信息 对比验证当前系统 SN 或者 UUID 网卡等是否匹配
1
root01 2022-08-31 11:59:45 +08:00
硬件坏了怎么办?需要换到其他电脑怎么办?
|
3
zjsxwc 2022-08-31 13:15:55 +08:00
可以通过反汇编跳过判断语句来破解
|
4
sdcg1994 2022-08-31 13:16:49 +08:00 via Android
vmp 加壳
|
5
anviod OP |
6
mosfet 2022-08-31 13:57:07 +08:00 1
最简单的就硬件加密狗吧
软件启动就验证,很容易反编译注释掉吧 验证的代码要藏好,最好是随机触发 不过离线软加密终究还是防君子不防小人 硬件自己开发的,就考虑加个诸如 ATSHA204A 之类的芯片 |
7
heguangyu5 2022-08-31 14:30:21 +08:00 2
看下这个 https://0xnobody.github.io/devirtualization-intro/
不要和搞逆向的斗智斗勇. 要转换思路: 1. 任何授权到最终都是一个 if 判断,搞掉这个判断授权就绕过了. 2. 不能假设别人定位不到这个 if. 3. 虽然能定位和绕过授权判断,但这需要时间,比如 10 分钟? 4. 添加足够多的授权判断. 我这边也是做 toB 的,并且是用 PHP 开发的. 为了保护源代码和搞定授权,开发了一个名为 bpc 的编译器. bpc 在编译 php 代码的过程中,在合适的位置插入授权判断,插入数量由参数控制. 思路供参考. https://bpc.dev |
8
nothingistrue 2022-08-31 15:51:13 +08:00 1
有两个问题:
第一,签名生成过程要私钥,授权开始时间还好说因为你这是人工授权,软件每次运行时间这种实时信息是没法进入签名的。软件每次运行时间这一块,你不联网是很难验证的。 第二,签名之后的证书信息或加密信息,你总要随软件主体一起给出,这个不用硬件加密狗就总有被复制的可能性。 |
9
s7lx 2022-08-31 16:55:43 +08:00 1
参考下 2000-2010 年期间加密与解密是怎么斗智斗勇的:
- 起码不能留下明显的“if"的地点,不然破解是分分钟的事(叫“破解”) - 非对称加密是个办法; - 最好是关键模块授权,一机一期一个文件。续费、换机都要重新部署这个模块 |
10
anviod OP @nothingistrue
@s7lx @heguangyu5 @mosfet 公钥是硬编码在软件代码中, X64 自己的壳, 激活就是私钥签发一个激活文件 (授权主题加密和私钥签名)这个好处理, 每次运行会在内存上存储一份反序列化的变量 上次运行时间和本次运行时间,会监听系统信号,在程序退出时 修改本次运行时间, 最终文件加密落盘到硬盘, 下次启动读文件如果被修改,就重新激活 (目前是配合硬件加密狗来解决的, 但是发现市场上 打狗棍的产品 |
11
sdcg1994 2022-08-31 21:31:01 +08:00 via Android 1
@anviod 加暗桩呗,内部埋各种校验,触发也不报错不退出,就是在适当的时候出些恶心的问题,比如 1+1 算成了 3 ,日志莫名其妙消失种种,winhex 就这么干的,市面上的破解就没有完美的
|
12
ragnaroks 2022-09-01 08:25:01 +08:00 1
道高一尺魔高一丈,这个问题无解;建议把部分功能做成硬件提供的,一张 PCIEx1 的成本就十几块,这样被破解的时间能延长很多
|
13
anviod OP |
14
ijrou 2022-09-06 09:58:45 +08:00
功能的话,全部走服务器,然后你怎么离线授权都可以
|