使用WinLicense过程中踩过的坑

WinLicense使用过程中踩过的坑

在这里插入图片描述

之前为了给软件做授权加密,试用了各种加密库,最终选择了WinLicense,花了几千大洋购买版权。经过一段时间使用之后不得不放弃原先的授权机制,最终采用C/S架构及微服务形式的授权机制。然后为了把加密代码删除干净,几十万行代码的清理和测试又花我了一个月的时间。真应了那句话“人生苦短慎用加密!”

放弃的主要原因

  1. 当使用加密库之后,整个Release版的文件大小翻了近5倍,视加密强度而有所区别。
  2. 加密后DLL加载真的很慢,慢到难以忍受的地步。DLL运行时它要先加载虚拟机以接管后续操作,从而造成低效,这导至我对虚拟机存在的必要性产生了怀凝。
  3. 当你使用加密库后你还得考虑加密库本身的反破解手段、使用机制、关键注意点。这加重了软件开发工作量,拖慢了开发进度。
  4. 由于WinLicense的开发商是国外的,导致沟通起来真的很麻烦,超级低效。如果你一定要用加密库,选国内的吧。
    1. 开发商的服务器邮箱会设置一些屏蔽功能,导致加密过的代码副本传不上去,还得绕道GitHub来上传代码。
    2. 即便你成功上传代码,可是他们使用的编译器设置可能跟你有所区别,这导致Bug无法重现,问题无解。
    3. 如果你开发的是某个软件的插件,他们没有相关二次开发SDK和主体软件安装包,也就不会测试你上传的代码。
    4. 对于英文不好的我来说,翻译沟通文本也是件痛苦的事情。
    5. 一个Bug提交到回复至少需要2天时间,这中间导致你很多代码编写得暂停。

以下是使用过程中需要要注意和比较坑人的地方

  1. WinLicense 对 DLL 加壳时,不能选择 Application 选项,会导致 exe 文件在加载 dll 时不成功。
  2. DLL的入口点不能虚拟化,会否导致宿主软件(exe主体)启动时卡死
  3. 一个函数内的VM虚拟机宏不能嵌套
  4. VM 宏不能把 switch 语句包含在内,可以把switch语句改为if else if else if …格式
  5. 宏内尽量少用循环
  6. DLL不能压缩App,也不能虚拟化入口点
  7. 插件类DLL的EntryPoint中不能有虚拟化宏,会导致全局对象加载有问题
  8. 宏尽量不要放在函数的第一行
  9. RegIstered 宏中不能包含检测宏,检测宏只能包含在 VM 中
  10. 如果多个DLL共享一个许可证,则软件的执行次数是每个DLL打开时都记录一次,多个DLL则记录多次。
  11. 打开试用功能时,DLL加载时可能会卡死,需要测试看看是新版还有没有这个问题
  12. xBundler中嵌入dll会出错
  13. SDK中没有手动开启或停止试用/注册的功能,只能通过GUI来开启保护设置
  14. 软件被保护后体积超大

最后:没有破解不了的软件,一切都只是破解成本和破解收益的问题,放弃过度保护,把精力放在核心业务上,把功能做细做强才是要点。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值