PC端软件加密:低配“加密狗”

98 阅读2分钟

内部开发的PC端工具,需要绑定目标计算机,并添加使用时长的限制。为此,为工具增加了许可验证模块。因该模块能满足基本需求,且实现简单,特做记录。

许可验证模块基本逻辑如下:

许可验证模块

(emmm,不太会画流程图)

具体地,用户安装工具后初次启动时,需要生成请求文件并发送给管理员。请求文件中包含了用户计算机系统信息。管理员收到请求文件后,解析并返还给用户一个许可文件。许可文件携带如下信息:

  1. 用户计算机系统信息
  2. 许可文件有效时长:某个确定的时间点
  3. 许可有效时长:天数

请求文件和许可文件均为加密过的压缩文件。

加载许可文件,如果许可文件中用户计算机系统信息与当前计算机一致,则生成用户配置文件,并在其中写入如下字段:

  1. 许可有效时长:天数
  2. 许可使用时长:天数
  3. 许可生效事件:当前时间
  4. 许可失效事件:许可生效事件+许可有效时长
  5. 上次打开时间:当前时间

之后每次启动时,都会进行如下验证:

  1. 如果许可生效时间大于当前时间,则认为篡改时间,许可失效
  2. 如果许可失效时间小于当前时间,则认为许可过期,许可失效
  3. 如果当前时间小于上次打开时间,则认为篡改时间,许可失效
  4. 如果当前使用时长(当前时间-许可生效时间)小于许可使用时长,则认为篡改时间,许可失效
  5. 如果跨越时间(当前使用时长-许可使用时长)不小于1,则修改许可使用时长为当前使用时长。注:自然时间流逝时跨越时间必然等于1。

此外,工具启动同时会启动一个定时器,定期验证许可,防止工具一直打开的情况。