Seekyou v4.32 註冊演算法 給CRACKABC一個交代 (2千字)

看雪資料發表於2015-11-15

標 題:Seekyou v4.32 註冊演算法 給CRACKABC一個交代 (2千字)

發信人:XF[BCG]  [發短訊息]

時 間:2003-09-10 10:39:45

詳細資訊:



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);
}

相關文章