如何让试用版程序永不过期
[声明:本文仅供学术研究使用,涉及所有源码按照GPLv3发布,非法使用的后果由使用者自己承担,作者已经相关文章作者不负任何责任]
即使在Linux上,我们有的时候还是不得不使用一些商业收费软件。而这些软件很多只提供了有时间限制的试用版本,试用期过后还想使用的话,要么重新安装,要么去购买使用许可。
对于一个熟练的Cracker或者一个牛B的Hacker来说呢,以稍微破坏一下法律的权威的代价获得一个没有限制的版本并不算太困难。下面提供的两个方法可以在不逆向软件的前提下,在user level做到,适合我等对汇编不感冒的同学使用。
You Xu同学曾通过ptrace的方式拦截时间相关的系统调用,返回一个假的时间来使得这些试用版程序误以为自己还没有过期,从而可以达到这个永远使用该试用版本软件的目的。我先简述他的方法,然后再提供另一个方法。
现在不妨假设存在这么一个程序,以试用期的方式来限制使用。这个程序通过调用time和gettimeofday来获取时间并且加以比较:
#include
#include
#include
int main(){
time_t now;
time(&now);
struct timeval tv;
gettimeofday(&tv, NULL);
printf(“Now 1 : %s”, asctime(localtime(&now)));
printf(“Now 2 : %s”, asctime(localtime(&tv.tv_sec)));
// you can compare time here…
[...]