Advanced Dialer v2.5演算法分析(附序號產生器) (3千字)

看雪資料發表於2002-04-17

物件:Advanced Dialer v2.5
大小:941KB
破解者:fhmdw[BCG]
工具:trw1.22
簡介:很好的自動撥號工具,帶有密碼功能,避免被他人“誤用”;支援斷線自動連線。
下載:http://newhua.infosail.com/down/adsetup.zip

輸入FHMDW和78787878

14下F12,再數下F10來到這裡

=========================>>
4C19B1    LEA     EDX,[EBP+FFFFFDF0]-------->使用者名稱FHMDW
4C19B7    CALL    0046D888--------->F8追入
4C19BC    MOV    EAX,[EBP+FFFFFDF0]


======================>>由4C19B7來到這裡

46D8CD    LEA    EAX,[EBP-08]
46D8D0    CALL    00404178------->deax看到使用者名稱變成FHMDWAdv Dialer v.
1.1.(注意:包括3個空格以及3個小數點*_*)

46D8D5    POP     EDX
46D8D6    CALL    00453678-------->關鍵call,F8追入
46D8DB    MOV    [EBP-04],EAX
46D8DE    LEA    EAX,[EBP-0C]
46D8E1    CALL    00403D2C

==========================>>由46D8D6來到這裡

4536A1    MOV    [EBP-1A]
4536A5    MOV    WORD [EBP-06]
4536AB    MOVZX    EAX,WORD [EBP-06]
4536AF    MOV    EDX,[EBP-10]
4536B2    MOV    AL,[EDX+EAX-01]------>依次送入各個字元的ASC碼到AL
4536B6    MOV    [EBP-07]
4536B9    PUSH    AX
4536BB    PUSH    BX
4536BD    PUSH    CX
4536BF    PUSH    DX
4536C1    MOV    DX,[EBP-02]
4536C5    MOV    BX,[EBP-04]
4536C9    MOV    CX,[EBP-06]
4536CD    XOR    AX,AX--------->AX清零
4536D0    MOV    AL,[EBP-07]
4536D3    XOR    DX,AX------->異或結果送DX
4536D6    MUL    CL-------->AX乘以CL結果送AX
4536D8    ADD    BX,AX-------->結果累加到BX
4536DB    MOV    [EBP-02],DX
4536DF    MOV    [EBP-04],BX
4536E3    POP    DX
4536E5    POP    CX
4536E7    POP    BX
4536E9    POP    AX
4536EB    INC    WORD [EBP-06]
4536EF    DEC    WORD [EBP-1A]
4536F3    JNE    004536AB-------->未取完則繼續
4536F5    MOV    AX,[EBP-04]
4536F9    MOV    [EBP-0C],AX----->送入累加的最終結果4A5D
4536FD    MOV    AX,[EBP-02]
453701    MOV    [EBP-0A],AX----->送入最後字元的異或結果004C
453705    MOV    EAX,[EBP-0C]
453708    MOV    ESP,EBP
45370A    POP    EBP
45370B    RET

=====================>>由45370B返回到這裡

4C19C2    PUSH    EAX--------->下d eax得真碼5D4A4C00
4C19C3    LEA    EDX,[EBP+FFFFFDEC]
4C19C9    MOV    EAX,[EBP-04]
4C19CC    MOV    EAX,[EAX+02D0]
4C19D2    CALL    00433884
4C19D7    MOV    EDX,[EBP+FFFFFDEC]------>假碼78787878
4C19DD    POP    EAX
4C19DE    CALL    004040B8--------->真假比較
4C19E3    JZ    004C1A00--------->相等則註冊成功

總結:
name:fhmdw[BCG]
code:6C700C00

貼上TC序號產生器=============================>>

#include "stdio.h"
#include "string.h"
main()
{
char name[80];
char u[20]="Adv Dialer v. 1.1.";
int i,j=1;
long int a,c,d=0,m[10],n[10],sum=0;
char s[4]="00",k[4]="0";
clrscr();
printf("**********This keygen of Adv Dialer v2.5 is make by
fhmdw[BCG]**********\n");
printf("Please input your name:\n");
gets(name);
for(i=0;name[i]!='\0';i++)
{name[i]-=name[i]>='a'&&name[i]<='z'?'a'-'A':0;}
strcat(name,u);
printf("The regcode is:\n");
for(i=0;name[i]!='\0';i++)
{sum=sum+name[i]*(i+1);
a=name[j-1];
d=d^a;
j++;}
for(j=0,i=0x100;i>=1;i=i/0x100,j++)
{
n[j]=d/i;
m[j]=sum/i;
d=d-n[j]*i;
sum=sum-m[j]*i;
}
for(i=1;i>=0;i--)
{if(m[i]==0) printf("%s",s);
else if(m[i]<0x10)  printf("%s%lX",k,m[i]);
else printf("%lX",m[i]); }

for(i=1;i>=0;i--)
{if(n[i]==0) printf("%s",s);
else if(n[i]<0x10)  printf("%s%lX",k,n[i]);
else printf("%lX",n[i]);}

}


感謝所有幫助過我的朋友^_^

            整理於2002.4.17    0:24

相關文章