【求教】单机版软件限制使用日期的方法,大家都来讨论下!



------
RT,
做单机版的,怕的就是用户修改系统时间,或BIOS时间,
有什么好的方法,希望牛人们启发下。
------
Mark
------
在系统里面找个地方自己保存一下软件的上次使用时间和最后到期时间,每次打开软件,如果时间不在这两个时间范围内,就退出
比如上次使用时间和到期时间分别是A和B,B的值是在软件安装的时候就记录的,永远不会改变。如果他改成小于A,那就退出了,每使用一次,A的值就更靠近B,他没办法做手脚

为了防止用户找到你记录时间的文件删除或者修改它,你可以加密,在每次程序启动的时候都判断这个文件在不在,是否被修改,有任何异常就退出



------
日期加密写入一个自己的配置文件等,每次程序解密读取...
------
如果每次运行软件前,把时间都改成A,怎么办?
------
加密等方式防止被修改
------
方法本质也就是一个,将时间变量存储在某个机密的地方.然后每次启动时检测时间变量是否符合要求.
不同的是可以将时间变量存储在不同的地方,例:配置文件,数据库,组册表,甚至存储在以太网中.
------
引用 5 楼 oyljerry 的回复:
加密等方式防止被修改

------
LS大哥,单机版,就不会又网络。
防止人家改系统时间,总改到A的时间上,就不好判断了
------
要是采用 拦截获取系统时间的api破解方法 ,保存就没啥意思了
------
判断时间这些不是好办法。
不如获得网卡和MAC地址,运行一个注册授权程序,然后你程序记录使用次数就是了。
------
你的软件中处理的数据是否有日期相关的信息。如果有就利用数据中的日期不能大于一定的日期来控制。
------
引用 11 楼 qiangorqiang 的回复:
你的软件中处理的数据是否有日期相关的信息。如果有就利用数据中的日期不能大于一定的日期来控制。

------
引用 1 楼 wfx_net 的回复:
Mark

------
引用 4 楼 fqzlala 的回复:
如果每次运行软件前,把时间都改成A,怎么办?

------
引用 12 楼 fqzlala 的回复:
引用 11 楼 qiangorqiang 的回复:
你的软件中处理的数据是否有日期相关的信息。如果有就利用数据中的日期不能大于一定的日期来控制。

有,当然有,就是怕人家就把时间改在你安装的日期,怎么也大不了

------
引用 14 楼 bobob 的回复:
引用 4 楼 fqzlala 的回复:
如果每次运行软件前,把时间都改成A,怎么办?

这还不简单啊!每次程序关闭的时候肯定更新一下这个配置文件,这个时间就成了A1了,而且肯定比A大,更靠近B
你还可以再综合当前系统时间做判断,还可以用个定时器实时检测,办法很多,就看你的精力多,还是破解的人精力多了


------
引用 15 楼 oyljerry 的回复:
引用 12 楼 fqzlala 的回复:
引用 11 楼 qiangorqiang 的回复:
你的软件中处理的数据是否有日期相关的信息。如果有就利用数据中的日期不能大于一定的日期来控制。

有,当然有,就是怕人家就把时间改在你安装的日期,怎么也大不了

可以读取服务器等返回的时间...

------
安装时记录一个时间,假设为A,每次运行之后关闭时将当前时间记录下来,假设为B,运行时判断当前时间,如果时间值在A到B之间,或是在A之前,就说明修改了时间。
------
引用 14 楼 bobob 的回复:
引用 4 楼 fqzlala 的回复:
如果每次运行软件前,把时间都改成A,怎么办?

这还不简单啊!每次程序关闭的时候肯定更新一下这个配置文件,这个时间就成了A1了,而且肯定比A大,更靠近B
你还可以再综合当前系统时间做判断,还可以用个定时器实时检测,办法很多,就看你的精力多,还是破解的人精力多了


------
引用 19 楼 fqzlala 的回复:
引用 14 楼 bobob 的回复:
引用 4 楼 fqzlala 的回复:
如果每次运行软件前,把时间都改成A,怎么办?

这还不简单啊!每次程序关闭的时候肯定更新一下这个配置文件,这个时间就成了A1了,而且肯定比A大,更靠近B
你还可以再综合当前系统时间做判断,还可以用个定时器实时检测,办法很多,就看你的精力多,还是破解的人精力多了


还有个问题,比如最后退出程序时间为12月5号12点1分5秒,记录这个时间,今天12月20号,在登录前,修改系统时间到12月5号13点,还是可以用的。。。。。。

------
备份下配置文件不就白更新了?
------
每启动一次记录一次时间,与上次记录的时间比较,如果不在同一天,则天数加1,这样可以防止修改系统时间使软件天数限制不起作用的问题
------
引用 12 楼 fqzlala 的回复:
引用 11 楼 qiangorqiang 的回复:
你的软件中处理的数据是否有日期相关的信息。如果有就利用数据中的日期不能大于一定的日期来控制。

有,当然有,就是怕人家就把时间改在你安装的日期,怎么也大不了

------
楼上,数据中的日期,从系统来,这是单机版。
------
没有服务器的话。。。不是很好搞。。。。
破解比较容易点


------
限制软件使用次数
------
写文件?可以用OD下断CreateFile获取文件名。写注册表?可以用OD下断RegOpenKey取键名。
就算你手段再高明,我装完后备份一下你加密的文件或注册表,然后做一个Loader,此Loader功能是首先还原你的加密文件(这样什么时间接不接近的都白搭),然后以暂停方式启动原Exe,ApiHook掉你取系统时间的函数,做一个时间差再返回,最后Resume,这样一切时间判断都白搭了,而且还不用去破解Exe。
单机的想做到完全防破是不可能的,找个硬壳加上算啦,可以干掉很多人。

------
弄个加密狗算啦,也可以干掉很多人,那天有人发私信跟俺说加密狗5元一支。。。。。。。。

------
保存一个总时间T1(有效时间段),
每次程序开始运行时开始计时,程序结束时计算进程用了多少时间T2,T1 = T1-T2,将新的T1保存起来
好像最后一次有点问题,要不每小时取一次还剩余多少时间

还有就是限制下使用次数,可用50次,每用一次减掉一次
------
引用 29 楼 rayyear 的回复:
保存一个总时间T1(有效时间段),
每次程序开始运行时开始计时,程序结束时计算进程用了多少时间T2,T1 = T1-T2,将新的T1保存起来
好像最后一次有点问题,要不每小时取一次还剩余多少时间

还有就是限制下使用次数,可用50次,每用一次减掉一次

------
单机版的确不好做这个工作,如果有人非要搞破解,你怎么做不好使。
看我们中国的破解的软件的质量和数量就知道,这种限制使用时限的模式在我国走不通的。
------
引用 28 楼 jennyvenus 的回复:
弄个加密狗算啦,也可以干掉很多人,那天有人发私信跟俺说加密狗5元一支。。。。。。。。


------
up
------
// 记录退出的时间。然后写下本次运行的总时间。
// 和退出时间、安装时间比较。
// 反正就是多搞几个时间点,如果现在系统时间不在正常的逻辑范围之内,就是错误的,直接退出。
------
这么难不会啊 学习一下吧
------
记录程序运行的时间,比如运行了100个小时之后失效
------
隐藏
------
道高一尺,魔高一丈
------
没办法
------
要是能做到程序运行过程中修改自身镜像数据的话……
------
fwgwg
------
修改镜像也没用,用原始的恢复就可以了

我觉得还是驱动吧,内核做点事拦截也困难点。
------
mark,这个将来有用
------
很不错,顶一个,强顶.
------
看看详细的技巧
------
.
------
谢谢大家,帮忙给出这么多的好方法。
也谢谢版主,推荐了,肯定结贴,就是时间会长一点。
------
破解 最有效的方法 哈~
------
期待好的解决方法。
------
引用 32 楼 w_anthony 的回复:
引用 28 楼 jennyvenus 的回复:
弄个加密狗算啦,也可以干掉很多人,那天有人发私信跟俺说加密狗5元一支。。。。。。。。



有加密狗,但没有加壳照样极容易被人破,不过一般情况下破解者可能需要先购买一只加密狗把正常流程跟踪一遍。


------
学习学习在学习
------
我认为去时间加校验不是一个好的方法,你一没有介入GPS,二没有网络等进行时间校准。
可以考虑采取限定次数的方法,将当前剩余次数写入注册表或者别的地方,不过写入注册表现在很多防火墙都会有提示,很容易定位到,所以写入的时候最好也做一个运算处理或者写到程序目录的程序文件中,条件是别人用ULTRAEDIT等文本软件打开难以发现的,比如系统配置参数等一起。
可以考虑获得网卡和MAC地址加密,或者硬盘序列号等,这些都能否唯一标示一个客户端授权。当然人家用更换硬件的方法你就没辙了。
然后就是一个加密算法了,现在网络上的加密都可以,定义你的加密key就是了。
呵呵,这些是个人所见。
------
日期加密写入一个自己的配置文件等,每次程序解密读取...
------
受教了,刚开始接触软件,谢谢分享
------
引用 2 楼 bobob 的回复:
在系统里面找个地方自己保存一下软件的上次使用时间和最后到期时间,每次打开软件,如果时间不在这两个时间范围内,就退出
比如上次使用时间和到期时间分别是A和B,B的值是在软件安装的时候就记录的,永远不会改变。如果他改成小于A,那就退出了,每使用一次,A的值就更靠近B,他没办法做手脚

为了防止用户找到你记录时间的文件删除或者修改它,你可以加密,在每次程序启动的时候都判断这个文件在不在,是否被修改,有任何异常就退出




------
这种东西用来讨论,你首先要提出你的目标用户的电脑水平;
因为软件不可能完全不被破解,而是你想防止什么程度的用户;
如果说你的目标用户大部分,90%,最多只会修改系统时间,那上面存文件的方法可行;但是如果是CSDN的用户是你的目标用户,呵呵....
------
学习了
------
还好 

------
没有那么弱吧,加密狗要执行核心运算的,没狗就不是整个程序了。 

/;^]
确实是那么弱,像脱壳时可以带上 解密不了的区段一样也可以带上狗里的代码执行。

用VM加密关键代码段罢,不过关键代码的思路还是关键,VM了的代码功能被猜出来的情况比 被逆出来的 情况多一些。
而最关键的还是 和用户良好的关系,当cracker告诉你 危险代码的位置时不要忘了 给他个终生 正式版的权利。 /:^]
------
单机版,如果既没有加密锁又没有网络验证的话,那真是泼出去的水收不回,在别人眼皮底下的CPU上执行,有心人加点经验和耐心,被破是迟早的吧
------
改时间的问题其实也好解决,加个时钟记录软件运行的总时长,到时候算一下,总时长要是大于一天了,时间却还是那样,不就是被改了
关于软件安全的问题,可以去www.pediy.com看雪软件安全去看看
------
第一次使用时将日期写入软件本身预置的区域,以后只判断这个日期差
如此,即便是软件被复制。时间限制依然有效
------
学习了!!!
------
mark
------
看看
------
不要太执着了。

能防住一般的用户就行了。

再说,高手,

能破解的,大概也能自己写一下出来。




时间限制的东西,

用CE弄不好,就能找到地址,把值改了。

或者,用个Ghost、用个虚拟机的,

你能怎么样?
------
先加壳
然后安装的时候多向秘密的地方(system32)写几个文件,
启动的时候判断这几个文件的时间是否一致,一直且在可以运行的时间范围内,
程序正常启动并向这几个文件更新日期
否则退出

想到一个简单点的就是修改boot.ini的做成日期=安装日期

------

关键是别人有没有兴趣破解你的软件。

写得臭的软件开源送钱也没人用。
------
备份相关数据库,重装该软件
------
学习了
------
如果是硬狗,给狗加一个不能修改的时钟源。

------
看看
------
等最好的方案
------
dengdai
------
不要用时间,用运行次数来限制。
不过单机版确实很麻烦,再怎么样,人家把系统重装一遍,改了系统时间,也就什么都没了。
------
学习了~
------
不知道
------
学习了
------
引用 13 楼 fffanpei 的回复:
引用 1 楼 wfx_net 的回复:
Mark


这个方法好

------
引用 79 楼 george_solo 的回复:
引用 13 楼 fffanpei 的回复:
引用 1 楼 wfx_net 的回复:
Mark


这个方法好

哇塞 ,巴斯特耶!

------
学习了


--------------
把注册日期和相关信息写到一图片中,隐藏很小的位置,
每次启动时,再读取它,应该不影响速度。。。



------
在程序安装的时候保存安装日期为只读的保存到文件中,然后根据这个日期设置一个使用期限,最好写两个文件放在两个不同的位置,每次程序加载时读取并equal这俩文件,双保险,就算是客户改了系统日期或是BIOS日期都没用的。
------
单机限制无论是日期还是次数都要在电脑上留下印记,方便下次使用时进行对比。
留下印记,无外乎就是注册表、系统文件、数据库、软件配置文件等,顶多在配个加密。

有心的人想打破限制最终会找到规律的……
------
路过
------
使用加密狗吧,推荐一个 HASP,以色列的,很好用!!
------
做个标记,以后会用到
------




这个方法好
------
加壳,,省的浪费时间
------
记录每次的使用时间到加密文件, 当时间累计满后 过期.
------
mark
------
引用 28 楼 jennyvenus 的回复:
弄个加密狗算啦,也可以干掉很多人,那天有人发私信跟俺说加密狗5元一支。。。。。。。。


------
。。
------
.
------
up
------
加密狗,我同事就能破解,只要了解通讯的流程,就可以了
------
一个折中的处理方法:
你限制为总共使用多少多少小时,这样你每次减去已经使用的小时,这个数据你进行加密(可能还要进行特殊的处理,比如程序运行中用到这个数字等)
为了防止用户在使用时通过调整系统时间来减少已经使用的时间,你需要自己维护一个计时器。

------
我也来学习下
------
可以这样,系统安装的时候写下两个时间到配置文件,安装时间A,到期时间B,每次使用,如果使用时间C>A,则A=C,,这样当C与B之间间隔为1的时候就提示使用到期,这样,他无论再怎么改C,都不灵了。
这种适合,客户还没有到期的时候,没有去改使用时间,事实上没有提醒的时候,客户不可能每次使用都去改使用时间
------
用狗吧!
------
使用加密狗一定要把一部分的代码放到狗里去执行然后PC端取结果。
最好再带有芯片支持硬件加密的MCU。
这样的芯片能破但是难度大,硬件破解和软件破解相比,那工具可不是一般人能拥有的。