程序“自杀”——一种新的软件保护技术 湖南 罗辉 1992-10-30 为增加侵权者的侵权难度,我认为,适当给系统增加一点日本式的“武士道”精神,使系统一旦检测到非法使用时,立即“自杀”,将自己毁灭无遗,可以大大加强软件的自己保护能力。由于一般侵权者非法拷贝后,一般要急不可耐地非法试运行系统,这样将使程序莫明其妙地消失,使侵权者前功尽弃,不给他们以再去跟踪分析系统的机会;或者如果他已作了备份,至少也可以使他在进行频繁的系统复制过程中徒添许多的厌烦情绪而最终放弃努力。有如下面所演示的例程。 该例程规定必须在机器时间落在每个小时的前半个小时内启动系统,否则该使用为非法。一旦检测到非法使用时,它立即将程序删除。由于仅将程序作简单的删除,在目前许多优秀的软件工具面前,并不能给侵权者制造多少麻烦,因此,在删除之前,该例程首先将它本身的执行程序的长度截止为零,这样即使恢复了被删程序,得到的也不过是一个长度为零的空文件,毫无用处! 例程在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);} /*合法使用,于此进入系统执行*/ /*程序主体部分*/