• 标 题:Outlook Express Backup v3.0 (9千字)
  • 作 者:lancelot[CCG]
  • 时 间:2001-9-26 18:49:07
  • 链 接:http://bbs.pediy.com

下载:http://gwbn.onlinedown.net/down/OEBackup.exe
================================================================================================
* Referenced by a CALL at Addresses:
|:00405723  , :00409901  , :0040A930  , :0040B0B1  , :0041A18D 
|
:004074C0 6AFF                    push FFFFFFFF
:004074C2 6870C94100              push 0041C970
:004074C7 64A100000000            mov eax, dword ptr fs:[00000000]
:004074CD 50                      push eax
:004074CE 64892500000000          mov dword ptr fs:[00000000], esp
:004074D5 83EC10                  sub esp, 00000010
:004074D8 53                      push ebx
:004074D9 55                      push ebp
:004074DA 56                      push esi
:004074DB 8BF1                    mov esi, ecx
:004074DD 8B44242C                mov eax, dword ptr [esp+2C]<-----------输入的注册码,12345678ABCD
:004074E1 C744242400000000        mov [esp+24], 00000000
:004074E9 8B40F8                  mov eax, dword ptr [eax-08]<-----------注册码的长度
:004074EC 85C0                    test eax, eax<-------------------------不能为0
:004074EE 0F8426010000            je 0040761A
:004074F4 83F80C                  cmp eax, 0000000C<---------------------要为12
:004074F7 0F851D010000            jne 0040761A
:004074FD 57                      push edi
:004074FE 8D4C2410                lea ecx, dword ptr [esp+10]

* Reference To: MFC42.Ordinal:021C, Ord:021Ch
                                  |
:00407502 E8F13A0100              Call 0041AFF8
:00407507 8B4C2430                mov ecx, dword ptr [esp+30]<-----------输入的注册码
:0040750B C644242801              mov [esp+28], 01
:00407510 8A11                    mov dl, byte ptr [ecx]<----------------取第1位,'1'
:00407512 8D4C2410                lea ecx, dword ptr [esp+10]
:00407516 88542414                mov byte ptr [esp+14], dl
:0040751A 8B442414                mov eax, dword ptr [esp+14]
:0040751E 50                      push eax

* Reference To: MFC42.Ordinal:035B, Ord:035Bh
                                  |
:0040751F E8EC3D0100              Call 0041B310
:00407524 8B4C2410                mov ecx, dword ptr [esp+10]
:00407528 83C604                  add esi, 00000004
:0040752B 51                      push ecx
:0040752C 8BCE                    mov ecx, esi<-------------------------表一

* Reference To: MFC42.Ordinal:0ACC, Ord:0ACCh
                                  |
:0040752E E8953D0100              Call 0041B2C8<------------------------查第1位'1'在表中的位置
:00407533 99                      cdq                                  序号放在 al 中,al==0x1a
:00407534 B907000000              mov ecx, 00000007                                        ~~~~
:00407539 BB0A000000              mov ebx, 0000000A
:0040753E F7F9                    idiv ecx<-----------------------------0x1a%0x7==0x5
:00407540 B905000000              mov ecx, 00000005                    ~~~~      ~~~
:00407545 BD05000000              mov ebp, 00000005
:0040754A 8D7C1208                lea edi, dword ptr [edx+edx+08]<------0x5+0x5+0x8==0x12 <==(2)
:0040754E 8BC7                    mov eax, edi                          ~~~ ~~~      ~~~~
:00407550 99                      cdq
:00407551 F7F9                    idiv ecx<-----------------------------0x12%0x5==0x3
:00407553 8BCA                    mov ecx, edx                          ~~~~      ~~~
:00407555 C1E102                  shl ecx, 02<--------------------------0x3<<0x2==0xc <======(3)
:00407558 8BC1                    mov eax, ecx                          ~~~      ~~~
:0040755A 99                      cdq
:0040755B F7FB                    idiv ebx<-----------------------------0xc%0xa==0x2
:0040755D BB05000000              mov ebx, 00000005                    ~~~      ~~~
:00407562 8D0452                  lea eax, dword ptr [edx+2*edx]<-------0x2+2*0x2==0x6
:00407565 99                      cdq                                  ~~~  ~~~  ~~~
:00407566 F7FB                    idiv ebx<-----------------------------0x6%0x5==0x1 <=======(4)
:00407568 8BDA                    mov ebx, edx                          ~~~      ~~~
:0040756A 8D049D05000000          lea eax, dword ptr [4*ebx+00000005]<--4*0x1+0x5==0x9 <=====(7)
:00407571 89442414                mov dword ptr [esp+14], eax            ~~~      ~~~
:00407575 99                      cdq                                 
:00407576 F7FD                    idiv ebp<-----------------------------0x9%0x5==0x4
:00407578 BD0D000000              mov ebp, 0000000D                    ~~~      ~~~
:0040757D 8D04D503000000          lea eax, dword ptr [8*edx+00000003]<--8*0x4+0x3==0x23 <====(9)
:00407584 89442418                mov dword ptr [esp+18], eax            ~~~      ~~~~
:00407588 99                      cdq                                 
:00407589 F7FD                    idiv ebp<-----------------------------0x23%0xd==0x9 <======(10)
:0040758B 8B6C2430                mov ebp, dword ptr [esp+30]          ~~~~      ~~~
:0040758F 8B06                    mov eax, dword ptr [esi]
:00407591 8954241C                mov dword ptr [esp+1C], edx
:00407595 8A5501                  mov dl, byte ptr [ebp+01]<------------取第(2)位,'2'
:00407598 3A1438                  cmp dl, byte ptr [eax+edi]<-----------应该等于表中第0x12位
:0040759B 5F                      pop edi                                            ~~~~
:0040759C 756E                    jne 0040760C
:0040759E 8A5502                  mov dl, byte ptr [ebp+02]<------------取第(3)位,'3'
:004075A1 3A1408                  cmp dl, byte ptr [eax+ecx]<-----------应该等于表中第0xc位
:004075A4 7566                    jne 0040760C                                        ~~~
:004075A6 8A4D03                  mov cl, byte ptr [ebp+03]<------------取第(4)位,'4'
:004075A9 8A1418                  mov dl, byte ptr [eax+ebx]<-----------应该等于表中第0x1位
:004075AC 3ACA                    cmp cl, dl
:004075AE 755C                    jne 0040760C
:004075B0 8B542410                mov edx, dword ptr [esp+10]
:004075B4 8A4D06                  mov cl, byte ptr [ebp+06]<------------取第(7)位,'7'
:004075B7 3A0C10                  cmp cl, byte ptr [eax+edx]<-----------应该等于表中第0x9位
:004075BA 7550                    jne 0040760C                                        ~~~
:004075BC 8B542414                mov edx, dword ptr [esp+14]
:004075C0 8A4D08                  mov cl, byte ptr [ebp+08]<------------取第(9)位,'A'
:004075C3 3A0C10                  cmp cl, byte ptr [eax+edx]<-----------应该等于表中第0x23位
:004075C6 7544                    jne 0040760C                                        ~~~~
:004075C8 8B542418                mov edx, dword ptr [esp+18]
:004075CC 8A4D09                  mov cl, byte ptr [ebp+09]<------------取第(10)位,'B'
:004075CF 3A0C10                  cmp cl, byte ptr [eax+edx]<-----------应该等于表中第0x9位
:004075D2 7538                    jne 0040760C                                        ~~~
:004075D4 8D4C240C                lea ecx, dword ptr [esp+0C]
:004075D8 C644242400              mov [esp+24], 00

* Reference To: MFC42.Ordinal:0320, Ord:0320h
                                  |
:004075DD E80A3A0100              Call 0041AFEC
:004075E2 8D4C242C                lea ecx, dword ptr [esp+2C]
:004075E6 C7442424FFFFFFFF        mov [esp+24], FFFFFFFF

* Reference To: MFC42.Ordinal:0320, Ord:0320h
                                  |
:004075EE E8F9390100              Call 0041AFEC
:004075F3 5E                      pop esi
:004075F4 5D                      pop ebp
:004075F5 B801000000              mov eax, 00000001
:004075FA 5B                      pop ebx
:004075FB 8B4C2410                mov ecx, dword ptr [esp+10]
:004075FF 64890D00000000          mov dword ptr fs:[00000000], ecx
:00407606 83C41C                  add esp, 0000001C
:00407609 C20400                  ret 0004
===============================================================================================
表一:  ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890

注册码:1SMB - **J* - 0J** (*为任意数字或字母)

===============================================================================================
keygen:

#include <stdio.h>

void main()
{
    char Table[36]={'A','B','C','D','E','F','G','H','I','J','K','L',
                    'M','N','O','P','Q','R','S','T','U','V','W','X',
                    'Y','Z','1','2','3','4','5','6','7','8','9','0'};
    int Code[12];
    int n=0;

    printf("******* Outlook Express Backup v3.0's KeyGen *******\n");
    printf("*******      by lancelot [CCG] [FCG]        *******\n\n");
    printf("Please enter the first character of the code: ");

    Code[0]=getchar();

    for (int i=0; i<36; i++)
    {
        if (Code[0]==Table[i])
        { n=i;
          n=(2*(n%7)+8);
          Code[1]=Table[n];
          n=(n%5)<<2;
          Code[2]=Table[n];
          n=(3*(n%10))%5;
          Code[3]=Table[n];
          Code[4]=0x30;
          Code[5]=0x30;
          n=4*n+5;
          Code[6]=Table[n];
          Code[7]=0x30;
          n=8*(n%5)+3;
          Code[8]=Table[n];
          n=n%0xd;
          Code[9]=Table[n];
          Code[10]=0x30;
          Code[11]=0x30;
          printf(" \nyour register code is: ");
          for(int j=0; j<12; j++)
          {
              if (j==4 || j==8) printf("- ");
              printf("%c ",Code[j]);
          }
          printf("\n\n");
          break;
        }
        else if (i==35)
          printf("\n Error format, Please use 26 English letters or numeric\n");
    }   
}


            ,;~;,
                /\_
              (  /
              (()      //)
              | \\  ,,;;'\
          __ _(  )m=(lancelot(================--------
        /'  ' '()/~' '.(, |
      ,;(      )||    |  ~
    ,;' \    /-(.;,  )            兰斯洛特[CCG][FCG]
          ) /      ) /
        //        ||                      2001.09.26
        )_\        )_\
=======================================================