标签:办公软件技巧,软件测试面试技巧,办公软件使用技巧,http://www.duowen123.com
Autolisp用户程序的保护,
为了解决这个问题,笔者用Turbo C2.0编写了一个小程序secret.c,它能改变Autolisp程序原来的排列格式,剥去编码的多余空白,程序仍然能正常工作,但可读性大大降低,外人难以辨认,并且不便打印,从而起到对程序的保护作用。另外,它还有一个作用就是减少了Autolisp文件的长度,提高了文件的装入速度。Secret.c经过编码和链接后生成EXE文件,可在DOS下直接执行。虽然这不是真正的加密,但能对任何不带有注释的Austolisp程序起到保护作用。例如某用户想对box.isp程序加以保护,生成的目的文件名为boxz.1sp:
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.");
}
(山东 李英琳)
,Autolisp用户程序的保护