不联网的情况下,怎么控制一个软件的过期不准使用?

2019-09-20 15:57:46 +08:00
 fileinthehole

如题,想请教各位业界大佬,一个软件给到客户处,客户不联网,时间不会跟着网络时间更新,根据本地时间的话,他可以私自改动时间导致控制不住,开服务的话,服务也可能被关掉吧。想请教一下有没有什么好的控制方式?

19525 次点击
所在节点    程序员
135 条回复
iorilu
2019-09-20 21:08:46 +08:00
定时监控系统时间, 发现时间比上一次靠前就知道改了, 然后退出
kizunai
2019-09-20 22:44:22 +08:00
你们上面说的方法能对付使用 虚拟机快照 的用户吗?
第一次使用之前创建快照
之后每次使用都恢复到最初的快照
charseer
2019-09-20 23:10:31 +08:00
我到蛮想知道上面的读硬盘 s.m.a.r.t 信息的方案怎么读的。
freelancher
2019-09-20 23:35:08 +08:00
我来了。直接按打开软件次数计时。例如打开 9 次。就直接锁定。要激活码就好了。到时如果还要用,就远程输一下激活码。反正也是加密的。
churchmice
2019-09-20 23:46:15 +08:00
除非联网或者额外加硬件,不然无解
大不了客户找台机器改个时间重新装下你的软件
或者直接镜像系统,你一个软件是无法跳出这个局限的
GeruzoniAnsasu
2019-09-21 00:12:48 +08:00
V2EX › 程序员
不联网的情况下,怎么控制一个软件的过期不准使用?

.............................
果然都是程序员



其实 2b 的产品,控制使用授权还相对简单,license 绑定硬件,然后卖东西出去的时候许可证定了那么长,到时间让商务联系对方续期就完事了。如果对方拒绝续费私下继续用,对产品方来说并没有什么区别,反正第一期的钱已经收了,绑定硬件的东西他也没法转手出去。2b 产品卖的就是个持续更新和售后支持,要么就建议对方买永久 license,原价打个折,一般不会抠这点预算的。私下使用是违背合同的行为,对于商业客户来说还是挺致命的,解决授权问题不必全从技术上考虑。


企业客户一般不会自己重装更不会尝试破解,一是不一定有专业能力,二是会跟自身公司的审批流程和管理部门相关,很复杂,三是数据对他们来说很重要,回滚代价会很大。




如果你们主要用户是 C 端的,那最好的方法是把产品做成 web app,第二是 硬件 key, 第三是搞一堆复杂的联网认证离网不可使用,第四是,不赚软件的钱。
hst001
2019-09-21 00:23:53 +08:00
什么办法都是防不住的,具体情况具体对策。几百几千的软件根本就不用防,你一直出新功能总有一天会来找你买新版本的
ylrshui
2019-09-21 00:40:22 +08:00
每次启动软件到关闭软件,记录时间差,每次叠加,达到一定值,破坏软件。需要把时间差记录在你的 exe 上,才可能使人不会发现配置更改,也就是每次启动后都会更新你的 exe

配合其他方法一起使用,比如每次启动随机性的成功失败,失败则破坏掉你的 exe
ylrshui
2019-09-21 00:42:32 +08:00
重要的是随机破坏 exe,让用户找不到头脑,无法分析限制使用的方法
ylrshui
2019-09-21 00:44:38 +08:00
当然这是在备份有限的情况下才有用。如果有无数个备份,如虚拟机快照那种,怎么都没办法
neetrorschach
2019-09-21 02:43:29 +08:00
加密狗啊,自带时钟。很多国产企业软件都是这么干的。
iceheart
2019-09-21 02:50:15 +08:00
让程序的运行对时间产生依赖,修改时间就会运行异常。
msg7086
2019-09-21 03:05:36 +08:00
没有硬件辅助的话没法防。
上面说的虚拟机快照恢复是一个很典型的手段。
至于时间检测,与变速齿轮类似的软件就可以破。直接让你软件读到的时间慢无数倍。
billlee
2019-09-21 03:08:22 +08:00
然后客户使用了 sandbox/虚拟机 /全盘备份
icekingcy
2019-09-21 03:30:03 +08:00
不联网无解。本地任何地方存记录都解决不了,使用者直接删除记录或者把初始版做 N 个副本,拷贝到新电脑里继续使用
Greatshu
2019-09-21 03:42:33 +08:00
和朋友讨论过这个问题,大概有这些想法
1、最基本的,反虚拟机,反调试
2、如果能用自己的硬盘,用 VeraCrypt 或 BitLocker 给整个硬盘加密,并在加密的硬盘上启动软件。绑定硬件,检测到未绑定的硬件就关机。系统自带一个 HIPS,阻止除系统程序和你的程序以外的所有软件启动。
3、加密狗
EugeneYWang
2019-09-21 03:53:50 +08:00
你这个问题不就是游戏正版验证问题嘛, 一个游戏行业和一个微软已经想了几十年都搞不通最终还是只能靠 DRM 机制联网认证(游戏行业)或者基本不防(微软)。。。你们觉得还能有什么百分百的方法。。。

不如向上面的网友说的,To B 的就直接让商务交流,To C 就只能靠 Web App, 还有总的来说就是一直更新,他们自然会找你买新的(可恶的 Parallel )
gtlions
2019-09-21 07:03:20 +08:00
1、程序文件生成 MD5
2、将步骤 1 结果进行加密存储
3、获取运行环境硬件信息生成 MD5
4、将步骤 3 结果进行加密存储
5、程序执行时候分别使用步骤 2、4 内容比对
6、签发授权文件,基于步骤 4 的内容
7、程序执行时候比对授权
8、程序执行时比对时间,基于授权文件
azuginnen
2019-09-21 08:07:56 +08:00
v2ex 有个老哥提供过一个思路的,过期不是不让用,是搞些错误数据出来,把正确数据寄到 xlog 里面,等到他们发现了之后再收钱解密。
azuginnen
2019-09-21 08:13:37 +08:00
@gtlions 第三步下断点,每次 cmp 一个目标环境就行了。
@freelancher 肯定有一步需要 compare 9 的,那个地方条件逆转就行

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

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

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

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

© 2021 V2EX