• 标 题:Advanced Dialer v2.5算法分析(附注册机) (3千字)
  • 作 者:fhmdw
  • 时 间:2002-4-17 9:01:16
  • 链 接:http://bbs.pediy.com

对象: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