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

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

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

19525 次点击
所在节点    程序员
135 条回复
LokiSharp
2019-09-20 16:37:44 +08:00
用个加密狗,加密狗上写死时间
fileinthehole
2019-09-20 16:37:53 +08:00
@buf1024 不太明白,能详细说明一下吗
fileinthehole
2019-09-20 16:38:41 +08:00
@LokiSharp 写死时间是什么操作?我把时间一直改成过去某一时间能破么
lneoi
2019-09-20 16:38:53 +08:00
@fileinthehole 你是一直在更新时间的,多用一分钟记录时间多多跟进一点。
fileinthehole
2019-09-20 16:40:09 +08:00
@lneoi 那还是可以 10 分钟分到 10 天去用··
Buges
2019-09-20 16:40:34 +08:00
@fileinthehole 那再加一条,每次启动记录当前时间戳,如果比上次小则报错。

能挡住小白就行,你要是把用户当成高级逆向工程师那怎么搞都白搭,离线运行怎么着都能破解。
WanzizZ
2019-09-20 16:41:14 +08:00
肯定不会,因为我已经记录了 20 号 12:01:00,第二天再把时间改成 20 号 12:00:10,这样是不是记录的时间比系统时间要大。 不过还是不行,只能记录使用时长。
fileinthehole
2019-09-20 16:42:40 +08:00
@Buges 哈哈哈,这句话我也想拿去怼领导,光让人做一些莫名其妙的活,这软件破解了又不能给自己转账,谁没事破解你的小软件嘛
lneoi
2019-09-20 16:43:23 +08:00
@fileinthehole 你们软件每次只用一分钟的吗?
fileinthehole
2019-09-20 16:44:10 +08:00
@lneoi 举个例子罢了,可能这次用个几分钟,下次用个几小时,再下次就只是打开瞧一眼就关了呢
lneoi
2019-09-20 16:45:07 +08:00
@fileinthehole 对嘛,实际只考虑正常使用状况。除非你们软件主要使用频率就是瞧一眼就关,要不然是没问题的。
imicksoft
2019-09-20 16:45:16 +08:00
电脑上的文件的时间默认是不是不会大于当前时间?那多找几个文件的时间做依据来判断行不行?
比如遍历桌面、windows 目录、临时目录中的文件,取出最大的时间,当成最新的时间,如果这个时间大于你想限定的时间就不让用了。
客户修改了系统的时间设置,但不能修改这些文件的时间,除非客户遍历修改系统中所有文件的时间。
LokiSharp
2019-09-20 16:45:20 +08:00
@fileinthehole #43 你可以在加密狗里记录每次打开的时间,然后估算一下他可能开启的次数,如果发现时间异常或者到达限制就锁死加密狗,提示需要找你们技术支持更新加密狗。
lneoi
2019-09-20 16:46:47 +08:00
还有就是估算使用次数咯。前面翻了翻 win 下的文件,但没找到会实时更新修改时间的文件,不然可以靠读取系统文件的修改时间作为辅助判断
loading
2019-09-20 16:47:27 +08:00
无解
你做过破解就知道,你用 x 天,破解就用 x 分钟。
lneoi
2019-09-20 16:47:48 +08:00
你这情况是纯粹依赖外部输入,让用户一点儿便宜不占太难,只要不要占太多便宜,减少自己误判就行了。
janxin
2019-09-20 16:54:02 +08:00
要求用狗,用狗的时钟就可以了
amaranthf
2019-09-20 16:54:08 +08:00
啧,看来楼主没看懂,比如用户 1 号 9:00 开启了软件,9:01 关闭了,作为一组,记住,然后用户 2 号 9:00 开启了,你开启的时候就知道累计天数+1。然后他 2 号 10:00 又开启,12:00 关闭,那就不累加,只是记下来。
然后你发现用户下次开启时,居然是 2 号 9:00,这特么就不对了,果断累计天数+1 (甚至+2 ),同时也把这一条记下来,每组记录排好序,方便下次比较。
然后下次开启时,你就直接去枚举 C:\Windows\Temp 目录下每一个文件的访问时间,按最晚的来比较。如果发现里面没文件,那再换 c:\$RECYCLE.BIN 之类的,列一个表依次往里面找。
再下次再换 event log,找里面的各种系统事件记录,总能找到的。
l00t
2019-09-20 16:54:20 +08:00
你们软件是开源白盒的吗?如果不是的话,就得默认客户并不清楚你们的计时策略,不用设计得太复杂,能防住简单地修改回时间的就行了。预期客户能搞清你们的策略,还不如预期客户能直接反编译程序在你们判断的位置打个 patch 跳过呢。
amaranthf
2019-09-20 16:58:19 +08:00
最后你要觉得用户可能会去专门找人、甚至花点小钱破解你的软件的话,那就去找个最新版的 VMProtect 之类的软件,把刚才提到的所有校验逻辑保护起来,数据保存时也要挖足够的坑来混淆视线。

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

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

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

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

© 2021 V2EX