16,816
社区成员




各位网友,大家好,鄙人想做一个功能,给用户一段时间的体验体验权限,当体验到期之后,不让用户在使用了,除非用户完成授权。
我目前做法:
1、用户首次安装软件,将首次安装的日期写到数据库中去。并默认30天使用权限。
2、用户再次运行软件时,需要用首次安装日期和当前日期做对比,如果在体验日期之内,用户继续使用。如果超出体验时间(30天),则不让用户使用,提示需要完成授权才可使用。
对于这一方案,首次安装的日期不管是写到注册表,还是数据库,都有被用户删除的风险,一旦被用户删除,认为是首次安装,又开始30天的体验,当用户得知这一规律,那么可永远使用,
想请教大家的是:应用程序的数据如何防止被用户删除?或者大家有什么方案,即便是用户删除数据,也不影响30天体验权限的限制。
这种要防止逆向工程,还是挺难的。首先,你的EXE要加壳,防止反汇编,让人找到关键的比较语句的位置。但这个在专业的破解工程师那里都不是事,DUMP内存分析的话也可以破解。存储日期的地方要加密且隐蔽。如果用在线激活和限制使用,稍微好一点。只要服务器端记住客户端的UUID,并进行计数即可。总之是防君子不防小人。
最靠谱的方法是使用USB加密狗和证书。USB狗很便宜,分为管理端和客户端,有的还可以分级别(如专业版、标准版)管理。
这个我曾经做过,程序启动时会先查找注册文件,若没有,则不允许使用,并提示用户输入激活码。输入激活码后程序根据激活码(激活码中包含使用期限的信息)和当前时间,生成注册文件(文件是加密的二进制文件,用户无法手动篡改)。每次启动会读取注册文件,计算剩余使用时间。此方法唯一的缺陷就是若用户更改系统时间,则变相增加使用期限。我能做的只有判断当前系统时间是否超前于当初注册时间,若比注册时间更早则删除注册文件,提示激活。
做运行时间限制就行,就是打开软件后开始计时,超过30分钟弹窗提示