d61K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3I4G2L8X3N6Y4j5h3#2W2i4K6u0W2j5$3!0E0i4K6u0r3k6X3W2D9k6i4y4Q4x3V1k6%4j5i4c8W2M7Y4y4U0M7X3g2W2L8Y4y4S2N6X3g2J5i4K6u0W2P5X3W2H3
//注册码(仅供测试)
name=User
key=ad4ac571264de6f682941d413c3b2ed6e0eddcd8fb9afc94
//注册机(仅供参考)
#include "string.h"
#include "stdlib.h"
unsigned char deal_char(unsigned char ch,int mode)
{
unsigned char c;
c=mode?ch>>4:ch&0x0F;
c=c<10?c+'0':c-10+'a';
return c;
}
void deal_key(char *name,char *key)
{
unsigned char c,m1,m2,m3,b1[256],*p,*t;
unsigned long sum=0;
unsigned int i,j,len=40;
if(!name||!key) return;
strlwr(name); //lower name
for(i=0;i<len;i++)
key[i]=rand()%2?'0'+rand()%10:'a'+rand()%6;
c=rand();
key[0]=deal_char(c,1); key[1]=deal_char(c,0);
m1=((c+0x15)*12+c)*12;
key[24]=deal_char(m1,1); key[25]=deal_char(m1,0);
m2=0x60+((c+0x15)*13+c)*13;
key[26]=deal_char(m2,1); key[27]=deal_char(m2,0);
m3=len+strlen(name)*2+((c+0x15)*14+c)*14;
key[28]=deal_char(m3,1); key[29]=deal_char(m3,0);
for(i=0,j=1;i<len/2;i++,j+=2){ p=b1+i; t=(unsigned char *)key+j;
*p=((*(t-1)+(*(t-1)<=0x57?0xD0:0xA9))<<4)+(*t+(*t<=0x57?0xD0:0xA9)); }
p=b1;
memcpy(b1+len/2,name,strlen(name));
for(i=0;i<strlen(name);i++){ c=(b1[len/2+i]>>4)+((b1[len/2+i]&0x0F)<<4); //change order
c+=((*p+0x15)*(len/2+i)+*p)*(len/2+i);
b1[len/2+i]+=((*p+0x15)*(len/2+i)+*p)*(len/2+i);
key[40+i*2]=deal_char(c,1);
key[40+i*2+1]=deal_char(c,0);}
len+=strlen(name)*2;
for(i=0;i<len/2;i++){ if(i) *(p+i)-=((*p+0x15)*i+*p)*i;
if(i<15||i>16) sum+=(*(p+i)>>4)+(*(p+i)&0x0F);}
m1=(((unsigned char)sum&0x0F)<<4)+((unsigned char)(sum>>4)&0x0F)+((*p+0x15)*15+*p)*15;
key[30]=deal_char(m1,1); key[31]=deal_char(m1,0);
m2=(((unsigned char)(sum>>8)&0x0F)<<4)+((unsigned char)(sum>>12)&0x0F)+((*p+0x15)*16+*p)*16;
key[32]=deal_char(m2,1); key[33]=deal_char(m2,0);
key[len]='\0'; //end of key
}
int main(int argc, char* argv[])
{
char * str="User";
char name[256];
char key[256];
strcpy(name,str);
deal_key(name,key);
printf("name=%s\nkey=\n",str,key);
return 0;
}
BTW: 机子显卡烂,看不到屏保效果,哪位兄弟贴个图?