有一个需求,需要实现内网激活功能,目前使用的是加密机器码和到期时间去进行匹配,但是无法防住修改系统时间去进行延长使用时间,请问大家有什么解决方案
1
wheat0r 332 天前 1
不懂技术,我知道一般软件企业解决这个问题一般是使用一套法务部门
|
2
7lQM1uTy635LOmbu 332 天前 via iPhone
记录起始 timestamp 保存到某个地方,并且将文件加密。程序每过 3600 秒打印当前 timestamp 到文件,然后计算当前每条记录的差值,如果是 3600 秒左右,代表系统时间没有人为修改过,然后计算起始差值,如果差值达到了授权期限就报错。
|
3
kkk9 332 天前
定制一个单片机 usb 加密狗呗,授权和时间都从片上拿,内置干电池保持时钟。
|
4
belite 332 天前 10
TOTP 倒过来用 把 TOTP 的 6 位验证码公开比如放在你们公司首页上 程序内置 sed 和你们首页用的 sed 一样 程序启动时要求输入 TOTP 验证码 若是通过验证那么他必须把时间调整的和你们服务器时间一致...哈哈哈
|
5
belite 332 天前
本质上是通过某种途径将第三方可信平台的时间传递至客户端且中途不可更改 没有第三方可信平台或模块是做不到的
|
6
zzNaLOGIC 332 天前
其实工业软件很多年之前就一直在用硬件加密狗,类似 U 盘。
优点是破解周期相对长 缺点是对于老版本没办法停用,尤其是技术大升级之后,老版本破解之后会损失很多存量用户,人家就不升级一直用老版,除非新版有一些老版本做不到而又刚需的东西才会重复购买。 有点类似游戏机了。 |
8
githmb 332 天前
总所周知,时间是不会倒退的,所以可以把上一次正常工作时间加密保存到注册表里,如果发现时间倒退就摆烂
|
9
Ayanokouji 332 天前
如果有业务数据,也跟着时间存和查?这样即使改时间了,业务数据也错乱了。不知这个思路可行不。
|
10
txzh007 OP @Ayanokouji 桌面软件 相当于一个启动器,只是启动器需要有特殊的命令才能启动关联应用
|
11
7lQM1uTy635LOmbu 332 天前 via iPhone
@starlz 当他修改之后一小时就不能用了,下一次 check 会发现本次时间间隔不是一小时
|
12
qviqvi 332 天前
开个热点可以吗?
|
13
HitouchiMi 332 天前 via Android
软件上只要不联网,就不可能防住盗版。任何纯软件的反盗版被破解只是时间问题,在这方面死磕没有意义。软件上越复杂的反盗版机制只会让软件用起来越糟糕,而且越来越不稳定。目前比较好的防盗版只有借助难以逆向实现的硬件加密狗来做或者全程联网。与其和盗版磕,不如做好服务。可以联网的软件做好在线服务,不能联网的做好按照合同、授权的支持服务。
|
14
chairuosen 332 天前
totp 的思路?
|
16
7lQM1uTy635LOmbu 332 天前 via iPhone
@flyqie 害,这不技术支持费用就来了?[手动狗头]
|
17
7lQM1uTy635LOmbu 332 天前 via iPhone
而且,现在的计算机,很少见硬件时钟出问题,如果一台机器用到了 cmos 没电,那估计也该计划报废了。
|
18
kkk9 332 天前
|
19
ic3z 332 天前 via iPhone
记录下启动和关闭的时间戳。下次启动时间不对就退出呗
|
20
IvanLi127 332 天前 via Android
你这个需求,直接把当前时间写文件就行了。楼上还真搞防破解啊?我感觉真要防应该不会问这个问题...
|
22
tangtang369 331 天前
给你一个不一样的思路,机器码直接用 jwt token ,假设一个 token 有效期是 1 个月,如果授权一年,将 token 自动续签次数设置为 12 次就行。
|
24
murmur 331 天前
解决不了,windows 、adobe ,这些哪个解决了破解问题
|
25
zyxcompany 331 天前
每个软件安装后根据电脑信息生成机器码,通过机器码在官网获取授权码,软件与官网的加密方式一致时,校验成功,否则失败
|
26
zyxcompany 331 天前
授权时间的话就分两种呗,一次是年授权,一次的永久授权
|
27
zyxcompany 331 天前
授权成功后,会记录授权的时间,每次打开软件会记录时间同时校验,如果当前时间<记录的时候 则修改了系统时间,既然有这个条件,就可以提示或者去除授权
|
28
belite 331 天前
@cndenis 脑洞开了一下 实际上只要记住正确的时间 t1 和公开的验证码 code1 把客户端时间调到 t1 再输入 code1 就验证通过了
还是那个问题 技术上需要和可信平台交互信息来确保时间正确性 要是只有你能对客户端的时间进行操作 那么客户端也可是为可信的 但现实情况可能不是这样 除非提供软硬件的整套解决方案做成一个黑盒 所以需要一个第三方的可信平台 比如前面几个说的带时钟的加密狗和联网的加密狗 还有就是成本 技术门槛就可以挡住一部分人 投入多 时间长 怕被告(好像没什么用) 一起吃饭的时候抹不开面子(这个可能效果更好,那谁谁谁还没验收就把我们项目破解了兄弟们以后还怎么一起洗脚啊) 这些成本明显大于收益的时候也能达到防破解的效果 结论: 用加密狗! |
29
belite 331 天前
楼上 记录时间的... 刷 bios 让时钟频率慢 60 或 600 倍 现实中是有的时钟不准不过没这么离谱 真实时间过去 60s 客户端增加 1s 你怎么区分时间是不对的?都不用这么麻烦 写个小程序每 0.1 秒重置一次时间 600 次循环后就是 60 秒后把客户端时间增加 1 秒 相当一给他 1 年的授权 但是他的时钟要跑 60 年才过期 而且时间一直也是往前走的 你只要从客户端上取时间这就无解
|
30
7lQM1uTy635LOmbu 331 天前
@belite 唔。。。确实,刷 bios 这么逆天的操作还真没想到。
op 说是桌面软件,不知道可不可以内网造一个自己的 license 服务器(客户没有任何权限),每隔一段时间和内网机器同步时间,类似于微软 KMS 那种。 |
31
jstony 331 天前
op 的应用既然跟时间相关联,直接买个内置 sim 卡的加密狗,软件从加密狗读系统时间,再更进一步,可以把部分算法直接放在加密狗里。
|
32
kermitlee 331 天前
思路一样,计算软件运行时间,如果运行时间大于授权使用时间也可以算为失效
|
33
gamexg 331 天前
检查一些可能的时间,例如 windows 日志每个条目的时间,硬盘上各个文件创建\修改时间,拿最新的时间的和当前时间比较,如果有问题则认为时间有修改.
不过如果价值大,还是搞加密狗比较省事. |
35
belite 331 天前
客户端少就加搞几个密狗 多的话可以考虑部署一个激活服务像 nevadax 提的 激活服务器能联网最好不能联网就在激活服务器上插个加密狗
所有直接或间接调用客户端时间的都是扯淡 根本原因还是那个 客户端的时间不可信 不借助第三方无解 记录程序运行时长 esxi 快照恢复或者找到你记录运行时长的文件注、册表数、据库备份还原一下 查看系统日志时间 若是客户将时间调到 2025 年产生了日志 时间校准后 发现被"回拨"了 这一年都用不了 记录程序打开时间 更是扯淡 |
36
fyxtc 331 天前
找几个可用的时间戳 api 1-n ,启动的时候校验 apix 和本地时间的差值,然后随机时间随机调用 apix 和本地时间的差值,破解需要 hook 所有 api ,但是每次运行只会暴露当前使用的 api ,也就是你 api 集合越大越好,api 字符串不要使用常量,可以乱序拼接,可以走一层加密。这是确保客户端时间戳没有篡改的一种方式。
|
37
forty 331 天前
搞个带 SIM 卡的加密狗就行了
|
39
forty 331 天前
@cndenis OP 是卖软件的, 不是买软件的, 你觉得他的软件可以卖到保密单位的话, 还能是盗版吗? 直接解除限制不就好了? 保密单位应该盗版 OP 的软件, 这个概率就不用考虑了吧
|
41
kice 330 天前 via Android
如果是需要完全离线,那基本上没啥办法。只能增加破解难度,例如各种加壳什么的。
或者换一个思路,想办法让用户“更新”你的软件,例如推出新功能,或者一开始只能买阉割版。更新软件就相当于变相联网了。 |
42
shuimugan 330 天前
作为初中就开始自学破解的人,一瞬间脑子想过 N 种方案,同时想到的是更多破解思路和技巧……我建议就是简单搞搞就行了,防盗版一般靠新功能迭代和售后维护这种策略。你看 IDA Pro 这种专业搞反编译的逆向软件,自己还是被破解了。
|