程序“自杀”——一种新的软件保护技术
该例程规定必须在机器时间落在每个小时的前半个小时内启动系统,否则该使用为非法。一旦检测到非法使用时,它立即将程序删除。由于仅将程序作简单的删除,在目前许多优秀的软件工具面前,并不能给侵权者制造多少麻烦,因此,在删除之前,该例程首先将它本身的执行程序的长度截止为零,这样即使恢复了被删程序,得到的也不过是一个长度为零的空文件,毫无用处!
例程在TURBO C 2.0集成环境下编译及运行成功。
#include "dos.h"
#include "dir.h"
#include "stdio.h"
#include "stat.h"
main(int argc,char *arbv[])
{struct time now;
FILE *fp;
int errno;
gettime(&now);
if(now.ti-min>30)
/*如非当使用系统则删除程序*/
errno=CHMOD(argv[0],S-IWRITE);
/*修改本程序存盘文件为可写属性*/
fp=FOPEN(arbv[0],"W")
if((errno&&(fp!=NULL))
{ FCLOSE(fp);
/*将文件长度截止为0*/
UNLINK(argv[0]);exit(0);
/*然后删除本文件退出*/
else{
/*如不能删除打印错误退出*/
printf("\NSYSTEM RUN ERROR!\007\N");exit(1);}
/*合法使用,于此进入系统执行*/
/*程序主体部分*/