Autolisp用户程序的保护
c:>secret
INPUT file name: box.1sp 输入原码文件名
output file name:box2.1sp 输入目的文件名
The end.
操作成功显示“The end.”,这时用type命令显示一下box2.1sp的内容,可以发现程序编码排列与box.1sp大不一样了;若显示“Cant open file.”,表示原码文件打开不成功,程序将中断运行,退回到DOS状态;若输入的原码文件名与目的文件名相同,则将破坏原码文件。
该程序的设计原理是:打开需要保护的Autolisp文件,判断是否成功,然后创造一个新文件,从原码文件中读入一串字符,再将它写入新文件中,字符串间需留一个空格,但不换行,经过多次循环,最后形成一个新文件。这样使新文件即能在AutoCAD下正常运行,又不易辨认,起到保护作用。
/* secret.c */
#include<stdio.h>
main()
{
char m,fn1,fn2;
FILE *fpi,*fpo;
printf("Input file name:");
scanf("%s",fn1);
if ((fpi=fopen(fn1,"r"))==NULL) {
printf("Can't open file");
exit(1);
}
else {
printf("Output file name:");
scanf("%s",fn2);
fpo=fopen(fn2,"w");
while(!feof(fpi)) {
fscanf(fpi,"%s",m);
if (feof(fpi)) break;
fprintf(fpo," %s",m);
}
fclose(fpi);
fclose(fpo);
}
puts("The end.");
}
(山东 李英琳)