盘绰网教程:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

怎么在程序中完成电子注册技巧

时间:2024/2/27作者:未知来源:盘绰网教程人气:


[摘要]O_BINARY))==-1)    printf("File %s open error!",argv[1]);    exit(1);       lseek(fp,0xf...
O_BINARY))==-1){

   printf("File %s open error!",argv[1]);
   exit(1);
   }
   lseek(fp,0xf040L,SEEK_SET);//ROM 10个数据地址+200H

   read(fp,keyrom,0xaL); //读取数据

   readser1(); //读文件中的注册密钥

   } else readser(); //读机器中的注册密钥

  }

  void readser(void)

  {
   sum=0x2020;
   for(sumj=0;sumj<4;sumj++){//形成16位密钥
   for(sumi=0;sumi<5;sumi++)
   sum-=(*(pt+sumi)-0x2020);//形成解密密钥

   sum^=0x0404<sprintf(Buff+4*sumj,"%04x",sum);
   }
   printf(Buff);
  }
  void readser1(void)

  {
   sum=0x2020;
   for(sumj=0;sumj<4;sumj++){//形成16位密钥
   for(sumi=0;sumi<5;sumi++)

   sum-=keyrom[sumi]; //形成解密密钥

   sum^=0x0404<sprintf(Buff+4*sumj,"%04x",sum);
   }
   printf(Buff);
  }

  四、应用程序中密钥的读取及限制

  当应用程序进行电子注册之后,安装程序会将注册密钥写入到应用程序中。在应用程序中,判断是否进行注册的方法就是重新生成注册密钥并进行判断处理。注册密钥的读取函数如下:

  void ImeCmpkey(void)

  {//Windows下注册密钥的读取函数

   static unsigned int sum,sumi,sumj;

   static BOOL flag;

   static unsigned int far *pt;

   static UINT Sel1,Sel2;

   static WORD Seg,Off,Start;

   static DWORD Bas,Lim;

   flag=TRUE;

   sum=0x2020;

   __asm mov Sel1,ds; //将DS作为模板

   Sel2=AllocSelector(Sel1); //分配一个新选择符

   if(Sel2==NULL){

   flag=FALSE;

   pt=(unsigned int far*)0xf000fff0L;

   } else {

   Seg=0xffff; //绝对地址段址

   Off=0x10; //绝对地址偏移

   Start=0x0;

   Bas=((unsigned long)Seg)<<4

关键词:  如何在程序中完成电子注册技巧





Copyright © 2012-2018 盘绰网教程(http://www.panchuo.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版