zoukankan      html  css  js  c++  java
  • keygenme5

    分析:

    00401650  /.  55            push ebp
    00401651  |.  8BEC          mov ebp,esp
    00401653  |.  83E4 F8       and esp,0xFFFFFFF8
    00401656  |.  81EC 9C000000 sub esp,0x9C
    0040165C  |.  A1 20504000   mov eax,dword ptr ds:[0x405020]
    00401661  |.  53            push ebx
    00401662  |.  56            push esi
    00401663  |.  57            push edi
    00401664  |.  8BF1          mov esi,ecx
    00401666  |.  898424 A40000>mov dword ptr ss:[esp+0xA4],eax
    0040166D  |.  33C0          xor eax,eax
    0040166F  |.  C64424 20 FF  mov byte ptr ss:[esp+0x20],0xFF
    00401674  |.  B9 1F000000   mov ecx,0x1F
    00401679  |.  8D7C24 21     lea edi,dword ptr ss:[esp+0x21]
    0040167D  |.  F3:AB         rep stos dword ptr es:[edi]
    0040167F  |.  66:AB         stos word ptr es:[edi]
    00401681  |.  6A 01         push 0x1
    00401683  |.  8BCE          mov ecx,esi
    00401685  |.  897424 20     mov dword ptr ss:[esp+0x20],esi
    00401689  |.  AA            stos byte ptr es:[edi]
    0040168A  |.  E8 27040000   call <jmp.&MFC71.#6236>		     ;  输入 账号 密码
    0040168F  |.  8D4E 74       lea ecx,dword ptr ds:[esi+0x74]
    00401692  |.  FF15 9C314000 call dword ptr ds:[<&MFC71.#876>]        ;  MFC71.#3397
    00401698  |.  8D5424 20     lea edx,dword ptr ss:[esp+0x20]
    0040169C  |.  8D6424 00     lea esp,dword ptr ss:[esp]
    004016A0  |>  8A08          /mov cl,byte ptr ds:[eax]
    004016A2  |.  40            |inc eax
    004016A3  |.  880A          |mov byte ptr ds:[edx],cl
    004016A5  |.  42            |inc edx
    004016A6  |.  84C9          |test cl,cl
    004016A8  |.^ 75 F6         jnz XCRECKME_.004016A0		     ;存入缓冲区
    004016AA  |.  33C0          xor eax,eax
    004016AC  |.  B1 30         mov cl,0x30
    004016AE  |.  8BFF          mov edi,edi
    004016B0  |>  384C04 20     /cmp byte ptr ss:[esp+eax+0x20],cl
    004016B4      0F84 97000000 |je CRECKME_.00401751
    004016BA  |.  40            |inc eax
    004016BB  |.  83F8 07       |cmp eax,0x7
    004016BE  |.^ 7C F0         jl XCRECKME_.004016B0		     ;看是否为6位
    004016C0  |.  8A4424 26     mov al,byte ptr ss:[esp+0x26]
    004016C4  |.  84C0          test al,al
    004016C6      0F85 85000000 jnz CRECKME_.00401751
    004016CC  |.  8A4424 25     mov al,byte ptr ss:[esp+0x25]
    004016D0  |.  84C0          test al,al
    004016D2      74 7D         je XCRECKME_.00401751
    004016D4  |.  8B4E 7C       mov ecx,dword ptr ds:[esi+0x7C]
    004016D7  |.  85C9          test ecx,ecx
    004016D9  |.  8B56 78       mov edx,dword ptr ds:[esi+0x78]
    004016DC      7C 73         jl XCRECKME_.00401751
    004016DE      7F 08         jg XCRECKME_.004016E8
    004016E0  |.  81FA A0860100 cmp edx,0x186A0                          ;  jiama
    004016E6      72 69         jb XCRECKME_.00401751
    004016E8  |>  0FBE4424 22   movsx eax,byte ptr ss:[esp+0x22]         ;  c
    004016ED  |.  0FBE7C24 21   movsx edi,byte ptr ss:[esp+0x21]         ;  b
    004016F2  |.  0FBE7424 24   movsx esi,byte ptr ss:[esp+0x24]         ;  e
    004016F7  |.  0FAFF8        imul edi,eax                             ;  b * c
    004016FA  |.  0FBE4424 20   movsx eax,byte ptr ss:[esp+0x20]         ;  a
    004016FF  |.  0FAFF8        imul edi,eax                             ;  b*c*a
    00401702  |.  0FBE4424 23   movsx eax,byte ptr ss:[esp+0x23]         ;  d
    00401707  |.  0FAFC6        imul eax,esi                             ;  d*e
    0040170A  |.  6A 00         push 0x0
    0040170C  |.  68 A0860100   push 0x186A0
    00401711  |.  51            push ecx                                 ;  0
    00401712  |.  52            push edx                                 ;  jiama16进制
    00401713  |.  D1E7          shl edi,1                                ;  b*c*a <<1  这里的*2 是说 初始化为2
    00401715  |.  8D3440        lea esi,dword ptr ds:[eax+eax*2]         ;  esi= 3*d*e  这里也是初始化位3
    00401718  |.  E8 A3040000   call CRECKME_.00401BC0		     ;  重要的算法
    {
    00401BC0  /$  57            push edi
    00401BC1  |.  56            push esi
    00401BC2  |.  55            push ebp
    00401BC3  |.  33FF          xor edi,edi
    00401BC5  |.  33ED          xor ebp,ebp
    00401BC7  |.  8B4424 14     mov eax,dword ptr ss:[esp+0x14]
    00401BCB  |.  0BC0          or eax,eax
    00401BCD  |.  7D 15         jge XCRECKME_.00401BE4
    00401BCF  |.  47            inc edi
    00401BD0  |.  45            inc ebp
    00401BD1  |.  8B5424 10     mov edx,dword ptr ss:[esp+0x10]
    00401BD5  |.  F7D8          neg eax
    00401BD7  |.  F7DA          neg edx
    00401BD9  |.  83D8 00       sbb eax,0x0
    00401BDC  |.  894424 14     mov dword ptr ss:[esp+0x14],eax
    00401BE0  |.  895424 10     mov dword ptr ss:[esp+0x10],edx
    00401BE4  |>  8B4424 1C     mov eax,dword ptr ss:[esp+0x1C]
    00401BE8  |.  0BC0          or eax,eax
    00401BEA  |.  7D 14         jge XCRECKME_.00401C00
    00401BEC  |.  47            inc edi
    00401BED  |.  8B5424 18     mov edx,dword ptr ss:[esp+0x18]
    00401BF1  |.  F7D8          neg eax
    00401BF3  |.  F7DA          neg edx
    00401BF5  |.  83D8 00       sbb eax,0x0
    00401BF8  |.  894424 1C     mov dword ptr ss:[esp+0x1C],eax
    00401BFC  |.  895424 18     mov dword ptr ss:[esp+0x18],edx
    00401C00  |>  0BC0          or eax,eax
    00401C02  |.  75 28         jnz XCRECKME_.00401C2C
    00401C04  |.  8B4C24 18     mov ecx,dword ptr ss:[esp+0x18]          ;  100000
    00401C08  |.  8B4424 14     mov eax,dword ptr ss:[esp+0x14]          ;  0
    00401C0C  |.  33D2          xor edx,edx
    00401C0E  |.  F7F1          div ecx
    00401C10  |.  8BD8          mov ebx,eax
    00401C12  |.  8B4424 10     mov eax,dword ptr ss:[esp+0x10]          ;  123456
    00401C16  |.  F7F1          div ecx
    00401C18  |.  8BF0          mov esi,eax                              ;  esi = 除数
    00401C1A  |.  8BC3          mov eax,ebx
    00401C1C  |.  F76424 18     mul dword ptr ss:[esp+0x18]
    00401C20  |.  8BC8          mov ecx,eax
    00401C22  |.  8BC6          mov eax,esi                              ;  eax = 除数 * 100000
    00401C24  |.  F76424 18     mul dword ptr ss:[esp+0x18]
    00401C28  |.  03D1          add edx,ecx
    00401C2A  |.  EB 47         jmp XCRECKME_.00401C73
    00401C2C  |>  8BD8          mov ebx,eax
    00401C2E  |.  8B4C24 18     mov ecx,dword ptr ss:[esp+0x18]
    00401C32  |.  8B5424 14     mov edx,dword ptr ss:[esp+0x14]
    00401C36  |.  8B4424 10     mov eax,dword ptr ss:[esp+0x10]
    00401C3A  |>  D1EB          /shr ebx,1
    00401C3C  |.  D1D9          |rcr ecx,1
    00401C3E  |.  D1EA          |shr edx,1
    00401C40  |.  D1D8          |rcr eax,1
    00401C42  |.  0BDB          |or ebx,ebx
    00401C44  |.^ 75 F4         jnz XCRECKME_.00401C3A
    00401C46  |.  F7F1          div ecx
    00401C48  |.  8BF0          mov esi,eax
    00401C4A  |.  F76424 1C     mul dword ptr ss:[esp+0x1C]
    00401C4E  |.  8BC8          mov ecx,eax
    00401C50  |.  8B4424 18     mov eax,dword ptr ss:[esp+0x18]
    00401C54  |.  F7E6          mul esi
    00401C56  |.  03D1          add edx,ecx
    00401C58  |.  72 0E         jb XCRECKME_.00401C68
    00401C5A  |.  3B5424 14     cmp edx,dword ptr ss:[esp+0x14]
    00401C5E  |.  77 08         ja XCRECKME_.00401C68
    00401C60  |.  72 0F         jb XCRECKME_.00401C71
    00401C62  |.  3B4424 10     cmp eax,dword ptr ss:[esp+0x10]
    00401C66  |.  76 09         jbe XCRECKME_.00401C71
    00401C68  |>  4E            dec esi
    00401C69  |.  2B4424 18     sub eax,dword ptr ss:[esp+0x18]
    00401C6D  |.  1B5424 1C     sbb edx,dword ptr ss:[esp+0x1C]
    00401C71  |>  33DB          xor ebx,ebx
    00401C73  |>  2B4424 10     sub eax,dword ptr ss:[esp+0x10]          ;  100000-123456
    00401C77  |.  1B5424 14     sbb edx,dword ptr ss:[esp+0x14]
    00401C7B  |.  4D            dec ebp
    00401C7C  |.  79 07         jns XCRECKME_.00401C85
    00401C7E  |.  F7DA          neg edx
    00401C80  |.  F7D8          neg eax                                  ;  取反   就得到  余数23456
    00401C82  |.  83DA 00       sbb edx,0x0                              ;  带借位减法 肯定有借位
    00401C85  |>  8BCA          mov ecx,edx
    00401C87  |.  8BD3          mov edx,ebx
    00401C89  |.  8BD9          mov ebx,ecx
    00401C8B  |.  8BC8          mov ecx,eax
    00401C8D  |.  8BC6          mov eax,esi
    00401C8F  |.  4F            dec edi
    00401C90  |.  75 07         jnz XCRECKME_.00401C99
    00401C92  |.  F7DA          neg edx
    00401C94  |.  F7D8          neg eax
    00401C96  |.  83DA 00       sbb edx,0x0
    00401C99  |>  5D            pop ebp
    00401C9A  |.  5E            pop esi
    00401C9B  |.  5F            pop edi
    00401C9C  .  C2 1000       retn 0x10
    }
    0040171D  |.  894C24 10     mov dword ptr ss:[esp+0x10],ecx          ;  23456
    00401721  |.  8BC8          mov ecx,eax
    00401723  |.  895C24 14     mov dword ptr ss:[esp+0x14],ebx
    00401727  |.  8BC7          mov eax,edi
    00401729  |.  8BDA          mov ebx,edx
    0040172B  |.  99            cdq
    0040172C  |.  3BC1          cmp eax,ecx                              ;  E5C26 * 2 =1CB84C
    0040172E      75 21         jnz XCRECKME_.00401751
    00401730  |.  3BD3          cmp edx,ebx
    00401732      75 1D         jnz XCRECKME_.00401751
    00401734  |.  8B4C24 10     mov ecx,dword ptr ss:[esp+0x10]
    00401738  |.  8BC6          mov eax,esi
    0040173A  |.  99            cdq
    0040173B  |.  3BC1          cmp eax,ecx
    0040173D      75 12         jnz XCRECKME_.00401751                   ;  23456
    0040173F  |.  3B5424 14     cmp edx,dword ptr ss:[esp+0x14]
    00401743      75 0C         jnz XCRECKME_.00401751
    00401745  |.  8B4C24 1C     mov ecx,dword ptr ss:[esp+0x1C]
    00401749  |.  8B11          mov edx,dword ptr ds:[ecx]
    0040174B  |.  FF92 54010000 call dword ptr ds:[edx+0x154]
    00401751  |>  8B8C24 A40000>mov ecx,dword ptr ss:[esp+0xA4]
    00401758  |.  E8 4C040000   call CRECKME_.00401BA9
    0040175D  |.  5F            pop edi
    0040175E  |.  5E            pop esi
    0040175F  |.  5B            pop ebx
    00401760  |.  8BE5          mov esp,ebp
    00401762  |.  5D            pop ebp
    00401763  .  C3            retn
    


     char cTmep[128] = {0xFF};
      int iCount1 =2,iCount2 =3;
      UpdateData(true);
      int i =0;
      _tcscpy(cTmep, m_Name);  
                   for(int i=0;i<7;i++)
                  {
         if(cTmep[i] == _T('0'))  
        return;
                    }
                    if(cTmep[6] != 0x00 || cTmep[5] == 0x00) //用于判断长度,故意不用你API的GETLENGTH
         return;
      if(m_Serial< 100000)
        return;
      for(i=0;i< 3;i++)
        iCount1 *= cTmep[i];  
      for(i= 3;i< 5;i++)
        iCount2 *= cTmep[i];  
      if(iCount1 == m_Serial/100000 && iCount2 == (m_Serial % 100000))//密码可以做成想要的样子
      {
        OnOK();
      }
      else
        return;


  • 相关阅读:
    bzoj1648:奶牛野餐
    bzoj1650:跳石子
    bzoj1643:贝西的秘密草坪
    bzoj1639:月度开支
    bzoj1636:Balanced Lineup
    bzoj1634:护花
    .
    bzoj1620:时间管理
    bzoj1611:流星雨
    bzoj1609:麻烦的聚餐
  • 原文地址:https://www.cnblogs.com/zcc1414/p/3982481.html
Copyright © 2011-2022 走看看