EditPlus 1.1 for Win95/98/NT Cracked By Hambo.H Write By Hambo.H Set BPX GETWINDOWTEXTA IBP: CS:43D600 - 以下的一段程序是主要的注册码计算程序。 CS:43d658 - 在这里要调用一个Call来计算Registration Key, 用Your Name来算。 Call 47a3cd - 这个是一个读取Name或你输入的Registration Key的Call。 Call 43cf00 - 这个是一个主要的计算Registration Key的Call。 Call 465e80 - 这个是一个将你输入的Registration Key和生成的key进行比较的Call。 unsigned int i,l; unsigned int cx,ax; unsigned char dl,name[256],st[]="8ADF",sn[20]; st数组是一个静态的字符串,可能在改注册算法时,作者只要修改这里就可以达到 注册码的改变。 cx=0; for(i=0;i= 0x0a) dl = dl + 0x37; else dl = dl + 0x30; sn[i]=dl; cx =cx +i; cx = cx + dl + 1; } 变化的注册码生成部分,这里将用到st数组。 for(i=0;i<4;i++) { ax = cal_reg(cx); cx = ax; ax = ax & 0x0f; dl = st[i]; sn[ax]=dl; ax = cx + i + 1; cx = ax; } for(i=16;i>8;i--) sn[i]=sn[i-1]; sn[8] = 0x2d; sn[17] = 0; 这里是一个数值的计算,没什么好说的。 unsigned int cal_reg(unsigned long int tt) { unsigned long int ecx,edx,eax; ecx = tt; edx = ecx*2+ecx; edx = edx*4+ecx; edx = edx <<4; edx = edx +ecx; edx = edx <<8; edx = edx -ecx; eax = edx*4+ecx+0x269ec3; eax = eax >> 0x10; return(eax & 0x7fff); }