• 标 题:Seekyou v4.32 注册算法 给CRACKABC一个交代 (2千字)
  • 作 者:XF[BCG]
  • 时 间:2003-09-10 10:39:45
  • 链 接:http://bbs.pediy.com

Seekyou v4.32 注册算法
工具:TRW 1.23
作者:XF[BXG][CCG]

写这个文章是为了给CRACKABC一个交代,我很早就答应给他写一个,可是一直没有写,今天因为一些事,就写了这个,也算是一个交待吧...

运行程序,只有输入注册码的地方,其他没有...
输入任意注册码,没有反映,跟了一下:在41c1d2开始处现在比较,注册码限制为:A-Z,12位。
因为主要是讲算法,写注册机,就不详写了...

输入:ABCDEFGHIJKL,注意下面是关键:
* Reference To: MFC42.Ordinal:0320, Ord:0320h
                                  |
:0041C2CD E8C25B0000              Call 00421E94
:0041C2D2 8B7C241C                mov edidword ptr [esp+1C]
:0041C2D6 8B6C2418                mov ebpdword ptr [esp+18]
:0041C2DA 8B742420                mov esidword ptr [esp+20]
:0041C2DE 8B5C2414                mov ebxdword ptr [esp+14] //取位置
:0041C2E2 8A0F                    mov clbyte ptr [edi]
:0041C2E4 8A5500                  mov dlbyte ptr [ebp+00]
:0041C2E7 8A06                    mov albyte ptr [esi]
:0041C2E9 8A1B                    mov blbyte ptr [ebx//取相对位置的注册
:0041C2EB 0FBED2                  movsx edxdl //取G
:0041C2EE 0FBEC9                  movsx ecxcl //取D
:0041C2F1 2BCA                    sub ecxedx   //相减 D-G
:0041C2F3 0FBED0                  movsx edxal //取A
:0041C2F6 0FBEC3                  movsx eaxbl //取J
:0041C2F9 03CA                    add ecxedx //相加 D-G+A
:0041C2FB 40                      inc eax //加1,J+1
:0041C2FC 3BC8                    cmp ecxeax //是否相同
:0041C2FE 740B                    je 0041C30B
:0041C300 C644243004              mov [esp+30], 04
:0041C305 8D4C2414                lea ecxdword ptr [esp+14]
:0041C309 EB5D                    jmp 0041C368

下面的也是分别对各个注册码位置的提出,并进行比较,分析如下:
设字符为K,各位为0-11,则注册码要符合以下公式:
k[3]-k[6]+k[0]=k[9]+1
k[7]-k[1]=k[10]-k[4]
k[8]-k[5]+k[2]=k[11]-1

注册机如下:TC2.0通过
#include 
#include 
#include 
main()
{
 char k[]={"AAAAAAAAAAAA"};
 unsigned long a,b;
 clrscr();
 printf("Seeyou V4.32 Keygen by: CHINA\n\n");
 randomize();
 /*printf("%d\n", random(100) );*/
 a=random(100);
 b=a%25;
 k[6]=k[6]+b;
 k[3]=k[6];
 b=a%24;
 k[0]=k[0]+b+1;
 k[9]=k[0]-1;
 a=random(122);
 b=a%25;
 k[7]=k[7]+b;
 k[10]=k[7];
 a=random(133);
 b=a%25;
 k[1]=k[1]+b;
 k[4]=k[1];
 a=random(144);
 b=a%24;
 k[8]=k[8]+b;
 k[11]=k[8]+1;
 a=random(155);
 b=a%25;
 k[2]=k[2]+b;
 k[5]=k[2];
 printf("Your Reglist sn : %s\n",k);
}