V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
fileinthehole
V2EX  ›  程序员

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

  •  
  •   fileinthehole · 2019-09-20 15:57:46 +08:00 · 19561 次点击
    这是一个创建于 1926 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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



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


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




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

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

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

    除非业务逻辑里面加很多暗桩,用来判断是否被修改并加以保护,俗称恶心人。
    hkitdog
        123
    hkitdog  
       2019-09-21 10:04:52 +08:00 via iPhone
    不可能的,大廠的遊戲還不是被逆向,Adobe,jetbrain 還不是一大堆破解,你覺得自己能防住?
    ztcaoll222
        124
    ztcaoll222  
       2019-09-21 10:10:47 +08:00
    你去反编译一下讯飞的 sdk? 我记得那些是有时间限制的
    raptor
        125
    raptor  
       2019-09-21 10:49:00 +08:00
    加硬件吧,用一个 USB 狗限制
    brucewuio
        126
    brucewuio  
       2019-09-21 10:53:32 +08:00
    设置允许使用时常 t,已使用时常 u,然后每次运行软件获取 monotonic clock,退出时 u+使用时常,打开时检查 if u > t
    52coder
        127
    52coder  
       2019-09-21 10:57:20 +08:00
    @kizunai 针对虚拟机快照,这个无解,离线授权,总会有文件落盘,没有什么好的方法
    yankebupt
        128
    yankebupt  
       2019-09-21 12:00:25 +08:00
    windows 当年就是这么干的,就算你用在 ATM 上生产环境半年一年都不打补丁是要闹哪样?给我定时激活!限于内网隔离安全措施 KMS 也行!但是后来有后患……
    现在改成了一段时间不激活就削了你大部分额外功能,基本功能完全不影响保证你不会因为系统罢工闹出这样那样的赔偿损失,但用着肯定不会爽就是了……
    XuanFei990
        129
    XuanFei990  
       2019-09-21 12:16:44 +08:00
    防不胜防的,有利可图怎么都想办法搞了

    有说加密狗的,没用,,加密狗程序花钱也能解决的。

    北京有家做激光打标卡的,连 cpld 程序,加密狗程序,都反向的明明白白的,山寨的满天飞

    最后北京哪家升级版本,做 asic 芯片,算是防住了大部分盗版的人,不过以前版本的已经没办法控制了,

    不一定什么时候利润驱使下,asic 芯片也是可以反向的,就问你怕不怕。。
    yankebupt
        130
    yankebupt  
       2019-09-21 12:17:18 +08:00   ❤️ 1
    @fileinthehole 另外我记得这个离线授权有个笑话……
    某软件离线授权,为了避免硬件狗不透明,送了一张 1 年刮刮卡,一天刮个数,连续运行几天按要求随机刮几个数输进去......
    等用户觉得这 TM 三个月 ghost 一次不就完事了么太好破解了,一次两个月后突然弹出 6 个坐标问你哪几个刮了哪几个没刮不然就自爆……

    逃……(这个笑话很可能是另一个时间线的我编的,不记得了)……
    XuanFei990
        131
    XuanFei990  
       2019-09-21 12:19:44 +08:00
    如果你们公司很强势,满可以不联网不让用,就完了,
    XuanFei990
        132
    XuanFei990  
       2019-09-21 12:22:05 +08:00
    @laravel 那应该是加密狗
    in4
        133
    in4  
       2019-09-21 16:57:46 +08:00
    老板要把用户想想成高级黑客,又要全程离线使用,那感觉这问题就无解了
    cnyang
        134
    cnyang  
       2019-09-21 17:50:37 +08:00
    不联网又不基于时间这就是无解题,所以还得从时间上下手,离线能保证授权的最简便方法就是用自带独立硬件时钟的加密狗
    Befehishaber
        135
    Befehishaber  
       2022-08-19 15:05:01 +08:00
    @newtype0092 exe 在运行没办法修改吧
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2437 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:51 · PVG 23:51 · LAX 07:51 · JFK 10:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.