微信公众号 
图码生活

每天发布有五花八门的文章,各种有趣的知识等,期待您的订阅与参与
电脑报 1992-2001 十年文章全集
电脑报 1992-2001 十年文章全集
包含从 1992 年 - 2001 年间,两万余篇期刊文章,查询最少输入两个字符
随便看看
读取中
读取中
标题Autolisp用户程序的保护
栏目软件操作与技巧
作者山东 李英琳
发布1994-09-30
  为了解决这个问题,笔者用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.");
  }
  (山东 李英琳)