注册机,感谢gfh[CCG],yeah2000[CCG]两位师兄指点^_^! (2千字)
//编译方法 cl ace_jm.c user32.lib#include<windows.h>
#include<stdio.h>
#include<math.h>
#include<string.h>
char *dpoint,*dpoint1,*point,*point1,charstr[100],covert[100],username[100],char1,convertname[100];
DWORD k,wwf,wwf2,rtn2,len,number,i,j,rtn,lena,charmm;
char *rtww;
//机器注册码字符集合
LPSTR machine="FJ7ESTYULPVBNMCRY567AA8234452734";
void main(void)
{
//第一部分程序是在ace1.30中用户名的变换算法,在程序中把用户名的变换字符跟注册码的数据交换
//算法进行比较,如果正确则注册成功。它只是把用户名字符串的长度进行截取。根据长度算出的间隔长
//度,取出比较字符。
///////////////////////////////////////////////////////////////////////////////////////////
printf("please input big characters:\n");
scanf("%s",charstr);
getchar();
strcpy(username,charstr);
/*********************************************************************************/
//把输入的小写变成大写字符,这个程序第一次出
number=lstrlen(username);
if(number<5)
{printf("please input user name characters can 't lower 5 NULL\n");
return;
}
point=&char1;
point1=convertname;
for(i=0;i<number;i++)
{
point=&username[i];
rtn=IsCharAlpha(*point);
if(rtn==0)
{printf("IsCharAlpha error");
return;
}
CharUpper(point);
*point1=*point;
point1=point1+1;
}
/*********************************************************************************/
//下面的这段程序是把用户输入的用户名在密码字符集合中进行查表,如用户名字符在密码字符集合中存
//在就把该字符保存在数组convert中,并把其后的空间顺序用密码字符集合添加满24个字符。
strcpy(charstr,convertname);
printf("%s",convertname);
len=strlen(charstr);
point=charstr;
k=0;
for (i=0;i<=len;i++,point++)
{rtww=strchr(machine,*point);
if(rtww!=0)
{
covert[k++]=*point;}
}
lena=lstrlen(covert);
strncpy(&covert[lena],machine,24-lena);
//printf("\nthe string is:%s\n",covert);
/*********************************************************************************/
//下面的程序段是在字符集中定位字符,并按6个一组进行分组排列成注册码。
point=covert;
point1=machine;
dpoint1=username;
wwf2=0;
for (i=0;i<24;i++,point++,dpoint1++)
{
rtww=strchr(machine,*point);
if(rtww!=0)
{ wwf=rtww-point1+1;
number=(wwf*wwf-wwf+wwf2)%0x20+1;
wwf2=number;
dpoint=point1+wwf2-1;
*dpoint1=*dpoint;
if((i+1)%6==0&&i<23)
*(++dpoint1)=0x2d;
}
}
printf("\nresult string:%s\n",username);
}
