首页
社区
课程
招聘
[讨论]获取当前时间防破解的方法探讨
发表于: 2014-4-21 08:21 14937

[讨论]获取当前时间防破解的方法探讨

2014-4-21 08:21
14937
最近给公司的软件加授权,主要是加时间限制,软件自身是不需要联网的。自己思考了2个获取时间的方式:
1.最简单的是利用time这些系统提供的函数来获取当前系统时间,但破解太容易了,改改本地时间即可。
2.通过NTP协议或者请求网页的方式去获取网络时间,这个破解也简单,只要断网,然后继续修改本地时间即可。

反复想来,也没有找到一个针对我这种软件来获取当前时间的方法,不知道各位大牛是否有更好的见解

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (38)
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
加密与解密上面提供了好几种思路。你翻一翻。

比如检查系统核心 文件的访问时间。

检查用户账户目录下文件的修改时间。

BTW:本地破解只要花时间,基本都能搞定,没有完全OK的东西,加个SDK什么的,加大难度就差不多了。
2014-4-21 09:06
0
雪    币: 3901
活跃值: (6150)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
3
如果不考虑暴破的话。。可以使用加密锁(时钟锁).写一个初始时间到锁内..然后每次软件启动时获取锁内时间与之对比..
2014-4-21 09:07
0
雪    币: 209
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
有个办法:
1 获取csrss进程的启动时间或类似systeminfo命令得出的开机时间(这两者至少有一个是不依赖相对时间算出来的,可用)
2 获取GetTickcount同以上时间相加,得到一个不随系统时间改变而改变的当前时间

优点:
无需联网,不受修改系统时间影响,无需自行维护定时器(精确度不随系统运行时间增加而降低),较隐蔽(除非获知原理,否则一般不会去针对性的挂钩这些函数来使方法无效)

缺点:
关机后修改时间防不住
系统休眠一段时间后或虚拟机暂停后恢复,GetTickcount的值加上上述时间点的值不一定是当前时间
2014-4-21 09:20
0
雪    币: 94
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我有考虑过检测系统的虚拟内存文件的访问时间,可是发现过一段时间后,这个文件的时间也被修改为假的时间了。换句话说,那种需要频繁访问的时间,都会很快被假的时间修改。而那些不常访问的文件对应的时间,也离真实时间相差很大了,所以感觉不是很方便
2014-4-22 10:46
0
雪    币: 94
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个对虚拟机使用软件的人来说,使用软件前做一个快照,每次使用都恢复快照,这样子似乎这种方法就行不通了
2014-4-22 10:47
0
雪    币: 94
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
正如您所说,重启后效果就不好了
2014-4-22 10:49
0
雪    币: 1042
活跃值: (500)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
指定一个文件,这个文件为注册文件,里面存放到期时间.加密存放,联网对比.
2014-4-22 11:37
0
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
所以说,本地验证,只能尽力,不可能保证。
2014-4-22 12:26
0
雪    币: 3901
活跃值: (6150)
能力值: ( LV13,RANK:550 )
在线值:
发帖
回帖
粉丝
10
有定时检测的吧。现加上时间搞在锁内。。。恢复快照 有神马用呢???
2014-4-22 14:34
0
雪    币: 81
活跃值: (100)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
11
你通过网络获取时间不加密一样随便破,本地就更惨了,无法直视
想要不被破的话首先肯定要从网络获取时间,其次通讯一定要是加密的,再来加密代码和判断代码都要vm掉
其他花花绿绿的小手脚都没什么太大用
2014-4-22 17:02
0
雪    币: 94
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
到期时间好存储,关键是我要获取当前时间啊,这样才能跟到期时间比较,来判断是否过期啊
2014-4-23 08:09
0
雪    币: 94
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
如果能联网获取时间的话,我就没那么头疼了。现在最让我头疼的就是我这个软件的运行和使用根本不需要联网,换句话说断网情况下也可以使用。我现在就是想找一个在断网情况下正确获取时间的方法。我知道不可能万能,也不可能绝对防止破解,但是想至少基本上可以对一些菜鸟破解者管用的方法
2014-4-23 08:12
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
14
话说,smss.exe的启动时间是很难作假的,如果只是限制日期的话~
不过人家CMOS时间改掉的话,这个也是假的了。
2014-4-25 14:10
0
雪    币: 285
活跃值: (16)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
15
直接用rdtsc指令,记录本次程序一共运行了多久,然后藏个地方,下次接着计时。
2014-4-25 14:25
0
雪    币: 204
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
我也想知道这种怎么来搞,不过好像 有软件比如试用7天 无论你怎么改时间 他剩余时间都不变的  不知道人家怎么做的。
2014-4-25 15:36
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
每次运行时记下当前时间,校验如果本次运行时的时间比上次早。。呵呵在硬盘上做上标记,然后以后就别想启动了 。。。。。
一般想到要改时间都是等过期之后,这个方法应该是可以的
2014-4-25 16:11
0
雪    币: 11155
活跃值: (3110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
请教如何获取smss.exe的启动时间?
2014-4-26 14:15
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
PEPROCESS -》CreateTime  
2014-4-26 18:28
0
雪    币: 11155
活跃值: (3110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
度娘一下PEPROCESS是结构体,小菜再请教下 如何得到这个结构体,可否有API?
2014-4-26 21:19
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
PsLookupProcessByProcessId
或者爆搜
2014-4-26 22:34
0
雪    币: 188
活跃值: (631)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
楼主好纠结,这个怕破,那个怕解。
2014-4-26 23:48
0
雪    币: 94
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
感谢您的答复,综合看来,确实如您所说SMSS这个方法可能是我这种条件下最可行的办法了。还有rqqeq大大提的这个方法,我觉得也可行。两种方法结合起来应该可以防止一些菜鸟了
2014-4-28 07:55
0
雪    币: 94
活跃值: (465)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
感谢您的耐心回复,您正好解答了我的疑问。我觉得您的方法和V大的方法结合起来,应该是目前看来比较好的解决方案了。虽然也不是万能的,但是对于一些初级破解者还是有效的
2014-4-28 07:58
0
雪    币: 11155
活跃值: (3110)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
PsLookupProcessByProcessId 是R0,有没有R3的方法可以取到smss.exe的PEPROCESS结构体?
2014-5-13 19:20
0
游客
登录 | 注册 方可回帖
返回
//