在看了上回的SitMan v2.0的注册机后,不会用,好像作者是写成QB的一个Function函数吧!:-)
自己跟踪了一下,然后用TC2.0写了一个,支持中文注册名哟。
下面是注册机:
===========================================
#include <stdio.h>
#include <math.h>
main()
{ int SL; /* edi is SL as NamestrLength*/
unsigned long int ecx,esi,edi; /*这里一定要是 unsigned long int型,否则将不支持中文注册名*/
unsigned long int edx,ebx,eax; /*同上*/
unsigned char Namestr[20]; /*定义一个长20的数组来存放注册名,下面的数组是程序提供的一个字符串*/
static unsigned char Conststr[37]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','\0'};
unsigned char SNstr[19]={'h','s','F','9','8','0','2','1','4','m','e','e','t','M','i','s','s','Y'};/*假注册码*/
/* 这个假注册码的4-9位必需是数字,其它可以为数字也可为字母,我随便写了一个,由于这4-9位将是你*/
/* 的正确的注册码中的数字,而且它影响后面的9位注册码,你可以改成你喜欢的数字,而不用我的*/
/* 这个软件的注册码生成很怪吧?它先用你的注册名算出注册码的前3位,然后再用你的假注册码的4-9位*/
/* (一定要是数字)和前3位组成新的字符串来算出注册码的后9位,注册码一共是18位*/
printf ("This is a CrAck program for ----\n SitMan v2.0 Beta \n");
input:
printf("Your Name is: "); /* 支持中文名,当然也支持英文名*/
gets(Namestr); /*得到你的注册名
*/
SL=strlen(Namestr); /*
注册名的长度 */
if(SL<3)
/* 注册名长度小于3 ,提示重新输入*/
{printf("Name 's Length MUST great than 3\n Try Again ");
goto input;};
if (SL>20)
{printf("Why you like such a long Name? \n Try Short Name Again ");
goto input;};
/*开始计算你的注册码*/
ecx=1 ; /* mov ecx,01 */
esi=1 ; /* mov esi,01 b62f */
do
{
ebx=1;/*mov ebx,01*/
edi=SL; /* mov edi,eax */
ecx=1; /* mov ecx,01 */
/* b64c */do
{
eax=Namestr[ecx-1];
eax=eax*ebx;
edx=0;
eax=eax+esi;
eax=eax+ecx;
ebx=0x165;
edx=eax&0xffff0000; /*cdq */
/*edx=(int)eax%(int)ebx;eax=eax/ebx;*/
edx=eax-eax/ebx*ebx;
ebx=edx;
ecx=ecx+1;
edi=edi-1;}
while (edi>0);
eax=ebx;
ecx=0x24;
edx=eax&0xffff0000; /*cdq */
/*edx=(int)eax%(int)ecx;eax=eax/ecx; idiv ecx*/
edx=eax-eax/ecx*ecx;
eax=Conststr[edx];
SNstr[esi-1]=eax;
esi=esi+1;
}while (esi<4); /* jnz b634 esi<4? */
/*上面是计算你的注册码的前3位,下面的将计算你的注册码的后9位*/
ebx=1; /*mov ebx,01*/
esi=10; /*mov esi.0a */
do{
ecx=1;
do{
eax=SNstr[ecx-1];
eax=eax*ebx; edx=0; /* imul ebx*/
eax=eax+ecx;
eax=eax+esi;
ebx=0x179;
edx=eax&0xffff0000; /*cdq*/
edx=eax-eax/ebx*ebx;
ebx=edx;
ecx=ecx+1;}
while(ecx<10);
eax=ebx;
ecx=0x24;
edx=eax&0xffff0000; /*cdq*/
edx=eax-eax/ecx*ecx;
eax=Conststr[edx];
SNstr[esi-1]=eax;
esi=esi+1;}
while(esi<19);
/*算完了,大功告成,打个Kiss! */
printf("Your SN is:%s \n ",SNstr); /*这就是你的注册码*/
printf(" \n Enjoy it! \n");
printf(" ----Cracked By HSF(hsFang) 2001.10.28\n");
}
=============================================
大功告成,打个Kiss!
hsf0214
- 标 题:SitMan v2.0 beta版的注册机(TC2.0编译) (3千字)
- 作 者:hsf0214
- 时 间:2001-10-28 14:36:44
- 链 接:http://bbs.pediy.com