首页
社区
课程
招聘
[分享]ZD Soft Game Recorder 2.0.0.0注册分析
发表于: 2007-5-29 00:35 8771

[分享]ZD Soft Game Recorder 2.0.0.0注册分析

2007-5-29 00:35
8771

【文章标题】: ZD Soft Game Recorder 2.0.0.0注册分析
  【文章作者】: 坚持到底
  【软件名称】: ZD Soft Game Recorder 2.0.0.0
  【下载地址】: http://www.newhua.com/soft/50899.htm
  【加壳方式】: 无
  【软件介绍】: 游戏截图器+录像机+基准测试工具,支持几乎所有的
  【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
  --------------------------------------------------------------------------------
  【详细过程】
    输入注册名 insist
    注册码    1111 2222 3333 4444
    弹出
    The license code you entered is invalid!
    Please correct it and try again.
   
    下BP MessageBoxA 断下
   
    返回到用户代码区。。。 找到最顶端下断。。。。
   
    重新再来 来到这里
   
    00407646   .  6A FF                  push -1
    00407648   .  68 E0EE4600            push grecorde.0046EEE0
    0040764D   .  50                     push eax
    0040764E   .  64:8925 00000000       mov dword ptr fs:[0],esp
    00407655   .  83EC 08                sub esp,8
    00407658   .  53                     push ebx
    00407659   .  56                     push esi
    0040765A   .  57                     push edi
    0040765B   .  6A 01                  push 1
    0040765D   .  8BF1                   mov esi,ecx
    0040765F   .  E8 B85A0600            call <jmp.&MFC42.#6334>
    00407664   .  8DBE 98000000          lea edi,dword ptr ds:[esi+98]
    0040766A   .  8BCF                   mov ecx,edi
    0040766C   .  E8 A35C0600            call <jmp.&MFC42.#6282>
    00407671   .  8BCF                   mov ecx,edi
    00407673   .  E8 965C0600            call <jmp.&MFC42.#6283>
    00407678   .  8B07                   mov eax,dword ptr ds:[edi]                                   ;  //name
    0040767A   .  8B48 F8                mov ecx,dword ptr ds:[eax-8]
    0040767D   .  85C9                   test ecx,ecx                                                 ;  //name是否为空
    0040767F   .  75 0E                  jnz short grecorde.0040768F
    00407681   .  6A FF                  push -1
    00407683   .  6A 10                  push 10
    00407685   .  68 FA2A0000            push 2AFA
    0040768A   .  E9 1F010000            jmp grecorde.004077AE
    0040768F   >  8B8E 9C000000          mov ecx,dword ptr ds:[esi+9C]
    00407695   .  8B41 F8                mov eax,dword ptr ds:[ecx-8]
    00407698   .  85C0                   test eax,eax
    0040769A   .  0F84 05010000          je grecorde.004077A5                                         ;  //测试注册码是否为空
    004076A0   .  8B96 A0000000          mov edx,dword ptr ds:[esi+A0]
    004076A6   .  8B42 F8                mov eax,dword ptr ds:[edx-8]
    004076A9   .  85C0                   test eax,eax
    004076AB   .  0F84 F4000000          je grecorde.004077A5
    004076B1   .  8B86 A4000000          mov eax,dword ptr ds:[esi+A4]
    004076B7   .  8B48 F8                mov ecx,dword ptr ds:[eax-8]
    004076BA   .  85C9                   test ecx,ecx
    004076BC   .  0F84 E3000000          je grecorde.004077A5
    004076C2   .  8B8E A8000000          mov ecx,dword ptr ds:[esi+A8]
    004076C8   .  8B41 F8                mov eax,dword ptr ds:[ecx-8]
    004076CB   .  85C0                   test eax,eax
    004076CD   .  0F84 D2000000          je grecorde.004077A5
    004076D3   .  55                     push ebp
    004076D4   .  E8 53590600            call <grecorde.loc_46D02C>                                   ;  jmp to MFC42.#1168
    004076D9   .  8B8E A8000000          mov ecx,dword ptr ds:[esi+A8]                                ;  //假码第4部分
    004076DF   .  8B96 A4000000          mov edx,dword ptr ds:[esi+A4]                                ;  //假码第3部分
    004076E5   .  8BAE A0000000          mov ebp,dword ptr ds:[esi+A0]                                ;  //假码第2部分
    004076EB   .  8B40 04                mov eax,dword ptr ds:[eax+4]
    004076EE   .  8B1F                   mov ebx,dword ptr ds:[edi]                                   ;  //name
    004076F0   .  51                     push ecx                                                     ; /Arg5
    004076F1   .  8B8E 9C000000          mov ecx,dword ptr ds:[esi+9C]                                ; |
    004076F7   .  52                     push edx                                                     ; |Arg4
    004076F8   .  55                     push ebp                                                     ; |Arg3
    004076F9   .  51                     push ecx                                                     ; |Arg2
    004076FA   .  53                     push ebx                                                     ; |Arg1
    004076FB   .  8D88 84010000          lea ecx,dword ptr ds:[eax+184]                               ; |
    00407701   .  E8 6A840000            call grecorde.0040FB70                                       ; \//关键 call1
    00407706   .  85C0                   test eax,eax
    00407708   .  5D                     pop ebp
    00407709   .  75 0E                  jnz short grecorde.00407719                                  ;  //关键跳 跳就成功了。。。
    0040770B   .  6A FF                  push -1
    0040770D   .  6A 10                  push 10
    0040770F   .  68 FC2A0000            push 2AFC
    00407714   .  E9 95000000            jmp grecorde.004077AE
    00407719   >  8D4C24 10              lea ecx,dword ptr ss:[esp+10]
    0040771D   .  E8 F2580600            call <grecorde.loc_46D014>                                   ;  jmp to MFC42.#540
    00407722   .  33DB                   xor ebx,ebx
    00407724   .  8D4C24 0C              lea ecx,dword ptr ss:[esp+C]
    00407728   .  895C24 1C              mov dword ptr ss:[esp+1C],ebx
    0040772C   .  E8 E3580600            call <grecorde.loc_46D014>                                   ;  jmp to MFC42.#540
    00407731   .  68 FD2A0000            push 2AFD
    00407736   .  8D4C24 14              lea ecx,dword ptr ss:[esp+14]
    0040773A   .  C64424 20 01           mov byte ptr ss:[esp+20],1
    0040773F   .  E8 0A5B0600            call <grecorde.loc_46D24E>                                   ;  jmp to MFC42.#4160
    00407744   .  8B17                   mov edx,dword ptr ds:[edi]
   
    //////////////////////////////////////////////////////////////////////////////////////////////
    //F7来到 关键CALL1
    //////////////////////////////////////////////////////////////////////////////////////////////
   
    0040FB70  /$  6A FF                  push -1
    0040FB72  |.  68 21F64600            push grecorde.0046F621                                 ;  SE 句柄安装
    0040FB77  |.  64:A1 00000000         mov eax,dword ptr fs:[0]
    0040FB7D  |.  50                     push eax
    0040FB7E  |.  64:8925 00000000       mov dword ptr fs:[0],esp
    0040FB85  |.  83EC 24                sub esp,24
    0040FB88  |.  8A4424 38              mov al,byte ptr ss:[esp+38]
    0040FB8C  |.  56                     push esi
    0040FB8D  |.  57                     push edi
    0040FB8E  |.  894C24 08              mov dword ptr ss:[esp+8],ecx
    0040FB92  |.  6A 00                  push 0
    0040FB94  |.  8D4C24 10              lea ecx,dword ptr ss:[esp+10]
    0040FB98  |.  884424 10              mov byte ptr ss:[esp+10],al
    0040FB9C  |.  FF15 D4044700          call dword ptr ds:[<&MSVCP60.std::basic_string<char,st>;  MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy
    0040FBA2  |.  8B4C24 40              mov ecx,dword ptr ss:[esp+40]
    0040FBA6  |.  8D5424 0C              lea edx,dword ptr ss:[esp+C]
    0040FBAA  |.  51                     push ecx
    0040FBAB  |.  52                     push edx
    0040FBAC  |.  C74424 3C 00000000     mov dword ptr ss:[esp+3C],0
    0040FBB4  |.  E8 C7BDFFFF            call grecorde.0040B980
    0040FBB9  |.  A1 E4044700            mov eax,dword ptr ds:[<&MSVCP60.std::basic_string<char>
    0040FBBE  |.  8B5424 1C              mov edx,dword ptr ss:[esp+1C]
    0040FBC2  |.  8B3D F4044700          mov edi,dword ptr ds:[<&MSVCP60.std::_Xlen>]           ;  MSVCP60.std::_Xlen
    0040FBC8  |.  83C4 08                add esp,8
    0040FBCB  |.  8B08                   mov ecx,dword ptr ds:[eax]
    0040FBCD  |.  2BCA                   sub ecx,edx
    0040FBCF  |.  83F9 01                cmp ecx,1
    0040FBD2  |.  77 02                  ja short grecorde.0040FBD6
   。。。。。
   省略了 一些代码 个人觉的与算法没甚么关系的其实也就是我看不懂的。。。。。
   
    0040FD48  |.  49                     dec ecx
    0040FD49  |.  51                     push ecx
    0040FD4A  |.  8D4C24 10              lea ecx,dword ptr ss:[esp+10]
    0040FD4E  |.  52                     push edx
    0040FD4F  |.  FF15 10054700          call dword ptr ds:[<&MSVCP60.std::basic_string<char,st>;  MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::append
    0040FD55  |>  8B4424 10              mov eax,dword ptr ss:[esp+10]                          ;  //假码用"-"连接
    0040FD59  |.  85C0                   test eax,eax
    0040FD5B  |.  75 05                  jnz short grecorde.0040FD62
    0040FD5D  |.  A1 E0044700            mov eax,dword ptr ds:[<&MSVCP60.`std::basic_string<cha>
    0040FD62  |>  8B4C24 08              mov ecx,dword ptr ss:[esp+8]
    0040FD66  |.  50                     push eax                                               ; /Arg2
    0040FD67  |.  8B4424 40              mov eax,dword ptr ss:[esp+40]                          ; |
    0040FD6B  |.  50                     push eax                                               ; |//name
    0040FD6C  |.  E8 8F020000            call grecorde.00410000                                 ; \//关键CALL2
    0040FD71  |.  8BF0                   mov esi,eax
    0040FD73  |.  8B4424 10              mov eax,dword ptr ss:[esp+10]
    0040FD77  |.  85C0                   test eax,eax
    0040FD79  |.  74 1C                  je short grecorde.0040FD97
    0040FD7B  |.  8A48 FF                mov cl,byte ptr ds:[eax-1]
    0040FD7E  |.  48                     dec eax
    0040FD7F  |.  84C9                   test cl,cl
    0040FD81  |.  74 0B                  je short grecorde.0040FD8E
    0040FD83  |.  80F9 FF                cmp cl,0FF
    0040FD86  |.  74 06                  je short grecorde.0040FD8E
    0040FD88  |.  FEC9                   dec cl
    0040FD8A  |.  8808                   mov byte ptr ds:[eax],cl
    0040FD8C  |.  EB 09                  jmp short grecorde.0040FD97
    0040FD8E  |>  50                     push eax                                               ; /block
    0040FD8F  |.  E8 86D20500            call <grecorde.loc_46D01A>                             ; \free
    0040FD94  |.  83C4 04                add esp,4
   
    //////////////////////////////////////////////////////////////////////////////////////////////
    //F7来到 关键CALL2
    //////////////////////////////////////////////////////////////////////////////////////////////
   
    00410000  /$  6A FF                  push -1
    00410002  |.  68 6AF64600            push grecorde.0046F66A                                 ;  SE 句柄安装
    00410007  |.  64:A1 00000000         mov eax,dword ptr fs:[0]
    0041000D  |.  50                     push eax
    0041000E  |.  64:8925 00000000       mov dword ptr fs:[0],esp
    00410015  |.  83EC 24                sub esp,24
    00410018  |.  53                     push ebx
    00410019  |.  55                     push ebp
    0041001A  |.  56                     push esi
    0041001B  |.  8B7424 40              mov esi,dword ptr ss:[esp+40]
    0041001F  |.  57                     push edi
    00410020  |.  8D4424 14              lea eax,dword ptr ss:[esp+14]
    00410024  |.  8BF9                   mov edi,ecx
    00410026  |.  56                     push esi                                               ; /Arg2
    00410027  |.  50                     push eax                                               ; |Arg1
    00410028  |.  897C24 18              mov dword ptr ss:[esp+18],edi                          ; |
    0041002C  |.  E8 0FF4FFFF            call grecorde.0040F440                                 ; \//关键CALL3
    00410031  |.  8B6C24 48              mov ebp,dword ptr ss:[esp+48]
    00410035  |.  C74424 3C 00000000     mov dword ptr ss:[esp+3C],0
    0041003D  |.  55                     push ebp
    0041003E  |.  50                     push eax
    0041003F  |.  FF15 20054700          call dword ptr ds:[<&MSVCP60.std::operator==>]         ;  MSVCP60.std::operator==
    00410045  |.  8AD8                   mov bl,al
    00410047  |.  8B4424 20              mov eax,dword ptr ss:[esp+20]
    0041004B  |.  83C4 08                add esp,8
    0041004E  |.  C74424 3C FFFFFFFF     mov dword ptr ss:[esp+3C],-1
    00410056  |.  85C0                   test eax,eax
    00410058  |.  74 1C                  je short grecorde.00410076
    0041005A  |.  8A48 FF                mov cl,byte ptr ds:[eax-1]
    0041005D  |.  48                     dec eax
    0041005E  |.  84C9                   test cl,cl
    00410060  |.  74 0B                  je short grecorde.0041006D
    00410062  |.  80F9 FF                cmp cl,0FF
    00410065  |.  74 06                  je short grecorde.0041006D
    00410067  |.  FEC9                   dec cl
    00410069  |.  8808                   mov byte ptr ds:[eax],cl
    0041006B  |.  EB 09                  jmp short grecorde.00410076
    0041006D  |>  50                     push eax                                               ; /block
    0041006E  |.  E8 A7CF0500            call <grecorde.loc_46D01A>                             ; \free
    00410073  |.  83C4 04                add esp,4
   
   
   
    //////////////////////////////////////////////////////////////////////////////////////////////
    //F7来到 关键CALL3
    //////////////////////////////////////////////////////////////////////////////////////////////
   
   
    0040F440  /$  6A FF                  push -1
    0040F442  |.  68 46F54600            push grecorde.0046F546                                   ;  SE 句柄安装
    0040F447  |.  64:A1 00000000         mov eax,dword ptr fs:[0]
    0040F44D  |.  50                     push eax
    0040F44E  |.  64:8925 00000000       mov dword ptr fs:[0],esp
    0040F455  |.  81EC F0000000          sub esp,0F0
    0040F45B  |.  56                     push esi
    0040F45C  |.  57                     push edi
    0040F45D  |.  8BBC24 0C010000        mov edi,dword ptr ss:[esp+10C]
    0040F464  |.  8BF1                   mov esi,ecx
    0040F466  |.  85FF                   test edi,edi
    0040F468  |.  C74424 1C 00000000     mov dword ptr ss:[esp+1C],0
    0040F470  |.  75 1B                  jnz short grecorde.0040F48D
    0040F472  |.  81C6 3C010000          add esi,13C
    0040F478  |.  56                     push esi
    0040F479  |.  8BB424 0C010000        mov esi,dword ptr ss:[esp+10C]
    0040F480  |.  8BCE                   mov ecx,esi
    0040F482  |.  FF15 18054700          call dword ptr ds:[<&MSVCP60.std::basic_string<char,std:>;  MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >
    0040F488  |.  E9 F1010000            jmp grecorde.0040F67E
    0040F48D  |>  8D4C24 60              lea ecx,dword ptr ss:[esp+60]
    0040F491  |.  E8 8AE6FFFF            call grecorde.0040DB20                                   ;  //md5常数
    0040F496  |.  83C6 04                add esi,4
    0040F499  |.  6A 5B                  push 5B
    0040F49B  |.  8D4424 34              lea eax,dword ptr ss:[esp+34]
    0040F49F  |.  56                     push esi
    0040F4A0  |.  50                     push eax
    0040F4A1  |.  E8 FA010000            call grecorde.0040F6A0
    0040F4A6  |.  57                     push edi
    0040F4A7  |.  8D4C24 60              lea ecx,dword ptr ss:[esp+60]
    0040F4AB  |.  50                     push eax
    0040F4AC  |.  51                     push ecx
    0040F4AD  |.  C78424 18010000 010000>mov dword ptr ss:[esp+118],1
    0040F4B8  |.  E8 F3020000            call grecorde.0040F7B0
    0040F4BD  |.  6A 5D                  push 5D
    0040F4BF  |.  8D5424 3C              lea edx,dword ptr ss:[esp+3C]
    0040F4C3  |.  50                     push eax
    0040F4C4  |.  52                     push edx
    0040F4C5  |.  C68424 24010000 02     mov byte ptr ss:[esp+124],2
    0040F4CD  |.  E8 CE010000            call grecorde.0040F6A0
    0040F4D2  |.  83C4 24                add esp,24
    0040F4D5  |.  6A 01                  push 1
    0040F4D7  |.  8D4C24 54              lea ecx,dword ptr ss:[esp+54]
    0040F4DB  |.  C68424 04010000 05     mov byte ptr ss:[esp+104],5
    0040F4E3  |.  FF15 D4044700          call dword ptr ds:[<&MSVCP60.std::basic_string<char,std:>;  MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy
    0040F4E9  |.  6A 01                  push 1
    0040F4EB  |.  8D4C24 34              lea ecx,dword ptr ss:[esp+34]
    0040F4EF  |.  C68424 04010000 04     mov byte ptr ss:[esp+104],4
    0040F4F7  |.  FF15 D4044700          call dword ptr ds:[<&MSVCP60.std::basic_string<char,std:>;  MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy
    0040F4FD  |.  8B4424 24              mov eax,dword ptr ss:[esp+24]                            ;  //name和字符串连接由insist到11643-1[insist]
    0040F501  |.  85C0                   test eax,eax
    0040F503  |.  75 05                  jnz short grecorde.0040F50A
    0040F505  |.  A1 E0044700            mov eax,dword ptr ds:[<&MSVCP60.`std::basic_string<char,>
    0040F50A  |>  8B4C24 28              mov ecx,dword ptr ss:[esp+28]
    0040F50E  |.  53                     push ebx
    0040F50F  |.  55                     push ebp
    0040F510  |.  51                     push ecx
    0040F511  |.  50                     push eax
    0040F512  |.  8D4C24 70              lea ecx,dword ptr ss:[esp+70]
    0040F516  |.  E8 65E6FFFF            call grecorde.0040DB80
    0040F51B  |.  8D5424 48              lea edx,dword ptr ss:[esp+48]
    0040F51F  |.  8D4C24 68              lea ecx,dword ptr ss:[esp+68]
    0040F523  |.  52                     push edx                                                 ; /Arg1
    0040F524  |.  E8 17E7FFFF            call grecorde.0040DC40                                   ; \//md5("11643-1[insist]")
    0040F529  |.  8A4424 23              mov al,byte ptr ss:[esp+23]
    0040F52D  |.  6A 00                  push 0
    0040F52F  |.  8D4C24 14              lea ecx,dword ptr ss:[esp+14]
    0040F533  |.  884424 14              mov byte ptr ss:[esp+14],al
    0040F537  |.  FF15 D4044700          call dword ptr ds:[<&MSVCP60.std::basic_string<char,std:>;  MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy
    0040F53D  |.  C68424 08010000 06     mov byte ptr ss:[esp+108],6
    0040F545  |.  33FF                   xor edi,edi
    0040F547  |>  8B2D F4044700          /mov ebp,dword ptr ds:[<&MSVCP60.std::_Xlen>]            ;  MSVCP60.std::_Xlen
    0040F54D  |.  85FF                   |test edi,edi
    0040F54F  |.  7E 56                  |jle short grecorde.0040F5A7
    0040F551  |.  8BCF                   |mov ecx,edi
    0040F553  |.  81E1 03000080          |and ecx,80000003
    0040F559  |.  79 05                  |jns short grecorde.0040F560
    0040F55B  |.  49                     |dec ecx
    0040F55C  |.  83C9 FC                |or ecx,FFFFFFFC
    0040F55F  |.  41                     |inc ecx
    0040F560  |>  75 45                  |jnz short grecorde.0040F5A7
    0040F562  |.  8B15 E4044700          |mov edx,dword ptr ds:[<&MSVCP60.std::basic_string<char,>;  MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::npos
    0040F568  |.  8B02                   |mov eax,dword ptr ds:[edx]
    0040F56A  |.  8B5424 18              |mov edx,dword ptr ss:[esp+18]
    0040F56E  |.  2BC2                   |sub eax,edx
    0040F570  |.  83F8 01                |cmp eax,1
    0040F573  |.  77 02                  |ja short grecorde.0040F577
    0040F575  |.  FFD5                   |call ebp
    0040F577  |>  8B4C24 18              |mov ecx,dword ptr ss:[esp+18]
    0040F57B  |.  6A 00                  |push 0
    0040F57D  |.  8D71 01                |lea esi,dword ptr ds:[ecx+1]
    0040F580  |.  8D4C24 14              |lea ecx,dword ptr ss:[esp+14]
    0040F584  |.  56                     |push esi
    0040F585  |.  FF15 FC044700          |call dword ptr ds:[<&MSVCP60.std::basic_string<char,std>;  MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Grow
    0040F58B  |.  84C0                   |test al,al
    0040F58D  |.  74 18                  |je short grecorde.0040F5A7
    0040F58F  |.  8B5424 18              |mov edx,dword ptr ss:[esp+18]
    0040F593  |.  8B4424 14              |mov eax,dword ptr ss:[esp+14]
    0040F597  |.  03C2                   |add eax,edx
    0040F599  |.  56                     |push esi
    0040F59A  |.  8D4C24 14              |lea ecx,dword ptr ss:[esp+14]
    0040F59E  |.  C600 2D                |mov byte ptr ds:[eax],2D
    0040F5A1  |.  FF15 0C054700          |call dword ptr ds:[<&MSVCP60.std::basic_string<char,std>;  MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Eos
    0040F5A7  |>  33C0                   |xor eax,eax
    0040F5A9  |.  B9 1A000000            |mov ecx,1A                                              ;  //1A(就是十进制的26)
    0040F5AE  |.  8A443C 48              |mov al,byte ptr ss:[esp+edi+48]                         ;  //取md5("11643-1[insist]")的hash值第一位
    0040F5B2  |.  99                     |cdq
    0040F5B3  |.  F7F9                   |idiv ecx                                                ;  //md5("11643-1[insist]")的hash值第一位%1a
    0040F5B5  |.  8BDA                   |mov ebx,edx
    0040F5B7  |.  8B15 E4044700          |mov edx,dword ptr ds:[<&MSVCP60.std::basic_string<char,>;  MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::npos
    0040F5BD  |.  80C3 41                |add bl,41                                               ;  //取md5("11643-1[insist]")的hash值第一位%1A+0x41
    0040F5C0  |.  8B02                   |mov eax,dword ptr ds:[edx]
    0040F5C2  |.  8B5424 18              |mov edx,dword ptr ss:[esp+18]
    0040F5C6  |.  2BC2                   |sub eax,edx
    0040F5C8  |.  83F8 01                |cmp eax,1
    0040F5CB  |.  77 02                  |ja short grecorde.0040F5CF
    0040F5CD  |.  FFD5                   |call ebp
    0040F5CF  |>  8B4C24 18              |mov ecx,dword ptr ss:[esp+18]
    0040F5D3  |.  6A 00                  |push 0
    0040F5D5  |.  8D71 01                |lea esi,dword ptr ds:[ecx+1]
    0040F5D8  |.  8D4C24 14              |lea ecx,dword ptr ss:[esp+14]
    0040F5DC  |.  56                     |push esi
    0040F5DD  |.  FF15 FC044700          |call dword ptr ds:[<&MSVCP60.std::basic_string<char,std>;  MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Grow
    0040F5E3  |.  84C0                   |test al,al
    0040F5E5  |.  74 1C                  |je short grecorde.0040F603
    0040F5E7  |.  8B5424 18              |mov edx,dword ptr ss:[esp+18]
    0040F5EB  |.  8B4424 14              |mov eax,dword ptr ss:[esp+14]
    0040F5EF  |.  0FBECB                 |movsx ecx,bl
    0040F5F2  |.  03C2                   |add eax,edx
    0040F5F4  |.  8AE9                   |mov ch,cl
    0040F5F6  |.  56                     |push esi
    0040F5F7  |.  8808                   |mov byte ptr ds:[eax],cl
    0040F5F9  |.  8D4C24 14              |lea ecx,dword ptr ss:[esp+14]
    0040F5FD  |.  FF15 0C054700          |call dword ptr ds:[<&MSVCP60.std::basic_string<char,std>;  MSVCP60.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Eos
    0040F603  |>  47                     |inc edi
    0040F604  |.  83FF 10                |cmp edi,10
    0040F607  |.^ 0F8C 3AFFFFFF          \jl grecorde.0040F547
    0040F60D  |.  8BB424 10010000        mov esi,dword ptr ss:[esp+110]                           ;  //产生注册码
   
   
    注册码保存在
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\User Apps\grecorder
    删掉还可以玩一次。。。。
   
   
  --------------------------------------------------------------------------------
  【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
  
                                                         2007年05月29日 0:04:06
  
--------------------------------------------------------------------------------
【经验总结】

  有很多函数看不懂 。。。晕。。。。
  
  keygen代码如下
  
  #include<stdio.h>
  #include<string.h>
  #include "md5c.c"
  main()
  {
  MD5_CTX md5;
  char data[64]={0};
  char name[64]="11643-1[";
  char MD5Hash[16] = {0};
  int temp[64]={0};
  int i,j,name_len;
  printf("name:");
  gets(data);
  strcat(name,data);
  name_len=strlen(name);
  strcat(name,"]");
  name_len=strlen(name);
  MD5Init(&md5);
  MD5Update(&md5, name, name_len);
  MD5Final(MD5Hash, &md5);
  printf("serial:");
  for(i=0;i<16;i++)
  printf("%c",(MD5Hash[i]&0xff)%26+0x41);
  getch();
  }
  
  没甚么测试  在自己机子上算了几组注册码都可以通过 。。。 失误之处请大家指出。。。
  
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (9)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不知道楼主有没有破过重启验证的软件啊?
怎么处理呢
2007-5-29 00:37
0
雪    币: 538
活跃值: (460)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
3
有解过一些,一般都是下注册表断点或者下读取文件断点。。。。
2007-5-29 00:43
0
雪    币: 1919
活跃值: (901)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
4
[QUOTE=;]...[/QUOTE]
不错,支持哈 ~~~
2007-5-29 12:04
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5
支持一下,没用的函数就略过就可以了
2007-5-29 13:27
0
雪    币: 242
活跃值: (1664)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
6
支持好文,学习一下
2007-5-29 14:20
0
雪    币: 333
活跃值: (116)
能力值: ( LV9,RANK:570 )
在线值:
发帖
回帖
粉丝
7
又是一篇精品呀,我顶!
2007-5-30 11:45
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
嘿嘿,跟随学习~~
2007-5-31 00:48
0
雪    币: 167
活跃值: (1574)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
9
不错,今天来了有收获,下一个调试下~~
2007-6-1 08:38
0
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
10
顶顶,真的很不错
2007-6-2 17:42
0
游客
登录 | 注册 方可回帖
返回
//