
目前软件使用授权的方案如下
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 最简单的就硬件加密狗吧 软件启动就验证,很容易反编译注释掉吧 验证的代码要藏好,最好是随机触发 不过离线软加密终究还是防君子不防小人 硬件自己开发的,就考虑加个诸如 ATSHA204A 之类的芯片 |
7 heguangyu5 2022-08-31 14:30:21 +08:00 看下这个 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 有两个问题: 第一,签名生成过程要私钥,授权开始时间还好说因为你这是人工授权,软件每次运行时间这种实时信息是没法进入签名的。软件每次运行时间这一块,你不联网是很难验证的。 第二,签名之后的证书信息或加密信息,你总要随软件主体一起给出,这个不用硬件加密狗就总有被复制的可能性。 |
9 s7lx 2022-08-31 16:55:43 +08:00 参考下 2000-2010 年期间加密与解密是怎么斗智斗勇的: - 起码不能留下明显的“if"的地点,不然破解是分分钟的事(叫“破解”) - 非对称加密是个办法; - 最好是关键模块授权,一机一期一个文件。续费、换机都要重新部署这个模块 |
11 sdcg1994 2022-08-31 21:31:01 +08:00 via Android @anviod 加暗桩呗,内部埋各种校验,触发也不报错不退出,就是在适当的时候出些恶心的问题,比如 1+1 算成了 3 ,日志莫名其妙消失种种,winhex 就这么干的,市面上的破解就没有完美的 |
12 ragnaroks 2022-09-01 08:25:01 +08:00 道高一尺魔高一丈,这个问题无解;建议把部分功能做成硬件提供的,一张 PCIEx1 的成本就十几块,这样被破解的时间能延长很多 |
13 anviod OP |
14 ijrou 2022-09-06 09:58:45 +08:00 功能的话,全部走服务器,然后你怎么离线授权都可以 |