- UID
 - 2198
 
 注册时间2005-6-29
阅读权限255
最后登录1970-1-1
副坛主 
    
 
 
 
该用户从未签到  
 | 
 
软件大小:1102KB  
软件类别:国产软件/QQ 专区   
下载次数:232211  
软件授权:共享版  
软件语言:简体中文  
运行环境:Win9x/Me/NT/2000/XP/2003  
更新时间:2007-7-18 16:57:16  
华军下载:http://bj.onlinedown.net/soft/52278.htm 
 
      今日无事,下了几个软件测试。软件无壳,反OD,算法分析的时候遇到一些麻烦,但使用了明码比较,无机器码,导致KEY通用,可以认为这类假密强度的软件基本上就是间接让破解者来做宣传的免费软件。建议该软件加壳来保护,不建议采用明码。  By:Nisy 07.19 
 
 
 
00417810   .  6A FF         PUSH -1                                  ;  算法部分从这里开始,我们在这里下断 
00417812   .  68 F85F4600   PUSH QQRecord.00465FF8 
00417817   .  64:A1 0000000>MOV EAX,DWORD PTR FS:[0] 
0041781D   .  50            PUSH EAX 
……………… 
中间代码省略 
……………… 
00417966   > \8D4C24 14     LEA ECX,DWORD PTR SS:[ESP+14] 
0041796A   .  51            PUSH ECX 
0041796B   .  8D4C24 24     LEA ECX,DWORD PTR SS:[ESP+24] 
0041796F   .  E8 4CA6FFFF   CALL QQRecord.00411FC0                   ;  算法CALL,我们F7跟进   
00417974   .  8B4C24 1C     MOV ECX,DWORD PTR SS:[ESP+1C]            ;  送出假码 
00417978   .  33D2          XOR EDX,EDX 
0041797A   .  83C4 04       ADD ESP,4 
0041797D   .  85C9          TEST ECX,ECX 
0041797F   .  0F95C2        SETNE DL 
00417982   .  85D2          TEST EDX,EDX 
00417984   .  75 0A         JNZ SHORT QQRecord.00417990 
00417986   .  68 05400080   PUSH 80004005 
0041798B   .  E8 A0F3FEFF   CALL QQRecord.00406D30 
00417990   >  8B00          MOV EAX,DWORD PTR DS:[EAX]               ;  真码保存到 EAX 可做内存KG 
00417992   .  51            PUSH ECX 
00417993   .  50            PUSH EAX 
00417994   .  E8 44610300   CALL QQRecord.0044DADD 
00417999   .  83C4 08       ADD ESP,8 
0041799C   .  85C0          TEST EAX,EAX 
0041799E   .  8B4424 20     MOV EAX,DWORD PTR SS:[ESP+20] 
004179A2   .  0F94C3        SETE BL 
004179A5   .  83C0 F0       ADD EAX,-10 
004179A8   .  8D50 0C       LEA EDX,DWORD PTR DS:[EAX+C] 
004179AB   .  83C9 FF       OR ECX,FFFFFFFF 
004179AE   .  F0:0FC10A     LOCK XADD DWORD PTR DS:[EDX],ECX         ;  LOCK 前缀 
004179B2   .  49            DEC ECX 
004179B3   .  85C9          TEST ECX,ECX 
004179B5   .  7F 0A         JG SHORT QQRecord.004179C1 
004179B7   .  8B08          MOV ECX,DWORD PTR DS:[EAX] 
004179B9   .  8B11          MOV EDX,DWORD PTR DS:[ECX] 
004179BB   .  50            PUSH EAX 
004179BC   .  8B42 04       MOV EAX,DWORD PTR DS:[EDX+4] 
004179BF   .  FFD0          CALL EAX 
004179C1   >  84DB          TEST BL,BL 
004179C3   .  74 4B         JE SHORT QQRecord.00417A10 
004179C5   .  E8 EFAA0000   CALL QQRecord.004224B9 
004179CA   .  8B4C24 14     MOV ECX,DWORD PTR SS:[ESP+14] 
004179CE   .  8B70 04       MOV ESI,DWORD PTR DS:[EAX+4] 
004179D1   .  51            PUSH ECX 
004179D2   .  68 78334700   PUSH QQRecord.00473378                   ;  userid 
004179D7   .  68 80334700   PUSH QQRecord.00473380                   ;  register 
004179DC   .  8BCE          MOV ECX,ESI 
004179DE   .  E8 C4A30100   CALL QQRecord.00431DA7 
004179E3   .  8B5424 18     MOV EDX,DWORD PTR SS:[ESP+18] 
004179E7   .  52            PUSH EDX 
004179E8   .  68 8C334700   PUSH QQRecord.0047338C                   ;  serial 
004179ED   .  68 80334700   PUSH QQRecord.00473380                   ;  register 
004179F2   .  8BCE          MOV ECX,ESI 
004179F4   .  E8 AEA30100   CALL QQRecord.00431DA7 
004179F9   .  6A 00         PUSH 0 
004179FB   .  6A 00         PUSH 0 
004179FD   .  68 BC3B4700   PUSH QQRecord.00473BBC                   ;  注册成功 
00417A02   .  E8 3D170100   CALL QQRecord.00429144 
00417A07   .  8BCD          MOV ECX,EBP 
00417A09   .  E8 1A190100   CALL QQRecord.00429328 
00417A0E   .  EB 15         JMP SHORT QQRecord.00417A25 
00417A10   >  6A 00         PUSH 0 
00417A12   .  6A 00         PUSH 0 
00417A14   .  68 C83B4700   PUSH QQRecord.00473BC8                   ;  序列号不对! 
 
 
我们来看一下算法CALL 00411FC0 
 
00411FC0   $  6A FF         PUSH -1 
00411FC2   .  68 F6554600   PUSH QQRecord.004655F6 
00411FC7   .  64:A1 0000000>MOV EAX,DWORD PTR FS:[0] 
00411FCD   .  50            PUSH EAX 
00411FCE   .  81EC 24010000 SUB ESP,124 
00411FD4   .  A1 80384800   MOV EAX,DWORD PTR DS:[483880] 
00411FD9   .  33C4          XOR EAX,ESP 
00411FDB   .  898424 200100>MOV DWORD PTR SS:[ESP+120],EAX 
00411FE2   .  53            PUSH EBX 
00411FE3   .  55            PUSH EBP 
00411FE4   .  56            PUSH ESI 
00411FE5   .  57            PUSH EDI 
00411FE6   .  A1 80384800   MOV EAX,DWORD PTR DS:[483880] 
00411FEB   .  33C4          XOR EAX,ESP 
00411FED   .  50            PUSH EAX 
00411FEE   .  8D8424 380100>LEA EAX,DWORD PTR SS:[ESP+138] 
00411FF5   .  64:A3 0000000>MOV DWORD PTR FS:[0],EAX 
00411FFB   .  8B8424 480100>MOV EAX,DWORD PTR SS:[ESP+148] 
00412002   .  8B30          MOV ESI,DWORD PTR DS:[EAX] 
00412004   .  33DB          XOR EBX,EBX 
00412006   .  395E F4       CMP DWORD PTR DS:[ESI-C],EBX             ;  判断用户名是否为空 
00412009   .  8BF9          MOV EDI,ECX 
0041200B   .  897C24 28     MOV DWORD PTR SS:[ESP+28],EDI 
0041200F   .  895C24 20     MOV DWORD PTR SS:[ESP+20],EBX 
00412013   .  75 34         JNZ SHORT QQRecord.00412049 
00412015   .  68 8E094700   PUSH QQRecord.0047098E 
0041201A   .  E8 014FFFFF   CALL QQRecord.00406F20 
0041201F   .  8BC7          MOV EAX,EDI 
00412021   >  8B8C24 380100>MOV ECX,DWORD PTR SS:[ESP+138] 
00412028   .  64:890D 00000>MOV DWORD PTR FS:[0],ECX 
0041202F   .  59            POP ECX 
00412030   .  5F            POP EDI 
00412031   .  5E            POP ESI 
00412032   .  5D            POP EBP 
00412033   .  5B            POP EBX 
00412034   .  8B8C24 200100>MOV ECX,DWORD PTR SS:[ESP+120] 
0041203B   .  33CC          XOR ECX,ESP 
0041203D   .  E8 4BAE0300   CALL QQRecord.0044CE8D 
00412042   .  81C4 30010000 ADD ESP,130 
00412048   .  C3            RETN 
00412049   >  68 05010000   PUSH 105 
0041204E   .  8D4424 30     LEA EAX,DWORD PTR SS:[ESP+30] 
00412052   .  53            PUSH EBX 
00412053   .  50            PUSH EAX 
00412054   .  E8 97D20300   CALL QQRecord.0044F2F0 
00412059   .  83C4 0C       ADD ESP,0C 
0041205C   .  56            PUSH ESI 
0041205D   .  8D4C24 30     LEA ECX,DWORD PTR SS:[ESP+30] 
00412061   .  51            PUSH ECX 
00412062   .  FF15 94734600 CALL DWORD PTR DS:[<&KERNEL32.lstrcpyA>] ;  kernel32.lstrcpyA 
00412068   .  8D4424 2C     LEA EAX,DWORD PTR SS:[ESP+2C] 
0041206C   .  8D50 01       LEA EDX,DWORD PTR DS:[EAX+1] 
0041206F   .  90            NOP 
00412070   >  8A08          MOV CL,BYTE PTR DS:[EAX]                 ;  循环取[12F0AC]处(用户名)的数据 
00412072   .  83C0 01       ADD EAX,1 
00412075   .  84C9          TEST CL,CL 
00412077   .^ 75 F7         JNZ SHORT QQRecord.00412070 
00412079   .  2BC2          SUB EAX,EDX 
0041207B   .  894424 1C     MOV DWORD PTR SS:[ESP+1C],EAX            ;  计算用户名的位数 结果保存在[ESP+1C]中 
0041207F   .  B8 E8234700   MOV EAX,QQRecord.004723E8 
00412084   .  8D50 01       LEA EDX,DWORD PTR DS:[EAX+1] 
00412087   >  8A08          MOV CL,BYTE PTR DS:[EAX]                 ;  循环取[4723E8]处的数据 
00412089   .  83C0 01       ADD EAX,1 
0041208C   .  84C9          TEST CL,CL 
0041208E   .^ 75 F7         JNZ SHORT QQRecord.00412087 
00412090   .  2BC2          SUB EAX,EDX 
00412092   .  894424 24     MOV DWORD PTR SS:[ESP+24],EAX            ;  一共18位哦  结果保存在[ESP+24]中 
00412096   .  B8 FC234700   MOV EAX,QQRecord.004723FC 
0041209B   .  8D50 01       LEA EDX,DWORD PTR DS:[EAX+1] 
0041209E   .  8BFF          MOV EDI,EDI 
004120A0   >  8A08          MOV CL,BYTE PTR DS:[EAX]                 ;  循环取[4723FC]处的数据 
004120A2   .  83C0 01       ADD EAX,1 
004120A5   .  84C9          TEST CL,CL 
004120A7   .^ 75 F7         JNZ SHORT QQRecord.004120A0 
004120A9   .  2BC2          SUB EAX,EDX 
004120AB   .  894424 20     MOV DWORD PTR SS:[ESP+20],EAX            ;  一共12位哦 结果保存在[ESP+20]中 
004120AF   .  33FF          XOR EDI,EDI 
004120B1   .  E8 82040100   CALL QQRecord.00422538 
004120B6   .  33C9          XOR ECX,ECX 
004120B8   .  3BC3          CMP EAX,EBX 
004120BA   .  0F95C1        SETNE CL 
004120BD   .  3BCB          CMP ECX,EBX 
004120BF   .  75 0A         JNZ SHORT QQRecord.004120CB 
004120C1   .  68 05400080   PUSH 80004005 
004120C6   .  E8 654CFFFF   CALL QQRecord.00406D30 
004120CB   >  8B10          MOV EDX,DWORD PTR DS:[EAX] 
004120CD   .  8BC8          MOV ECX,EAX 
004120CF   .  8B42 0C       MOV EAX,DWORD PTR DS:[EDX+C] 
004120D2   .  FFD0          CALL EAX 
004120D4   .  8D68 10       LEA EBP,DWORD PTR DS:[EAX+10] 
004120D7   .  896C24 18     MOV DWORD PTR SS:[ESP+18],EBP 
004120DB   .  33F6          XOR ESI,ESI 
004120DD   .  89B424 400100>MOV DWORD PTR SS:[ESP+140],ESI 
004120E4   .  E8 4F040100   CALL QQRecord.00422538 
004120E9   .  33C9          XOR ECX,ECX 
004120EB   .  3BC6          CMP EAX,ESI 
004120ED   .  0F95C1        SETNE CL 
004120F0   .  3BCE          CMP ECX,ESI 
004120F2   .  75 0A         JNZ SHORT QQRecord.004120FE 
004120F4   .  68 05400080   PUSH 80004005 
004120F9   .  E8 324CFFFF   CALL QQRecord.00406D30 
004120FE   >  8B10          MOV EDX,DWORD PTR DS:[EAX] 
00412100   .  8BC8          MOV ECX,EAX 
00412102   .  8B42 0C       MOV EAX,DWORD PTR DS:[EDX+C] 
00412105   .  FFD0          CALL EAX 
00412107   .  8D48 10       LEA ECX,DWORD PTR DS:[EAX+10] 
0041210A   .  894C24 14     MOV DWORD PTR SS:[ESP+14],ECX 
0041210E   .  837C24 1C 00  CMP DWORD PTR SS:[ESP+1C],0 
00412113   .  C68424 400100>MOV BYTE PTR SS:[ESP+140],1 
0041211B   .  0F86 8F000000 JBE QQRecord.004121B0 
00412121   >  33D2          XOR EDX,EDX                              ;  算法循环从这里开始 
00412123   .  8D47 01       LEA EAX,DWORD PTR DS:[EDI+1] 
00412126   .  F77424 24     DIV DWORD PTR SS:[ESP+24]                ;  除以[ESP+24](第二组数据的位数) 
0041212A   .  8D43 01       LEA EAX,DWORD PTR DS:[EBX+1] 
0041212D   .  8BFA          MOV EDI,EDX 
0041212F   .  33D2          XOR EDX,EDX 
00412131   .  F77424 20     DIV DWORD PTR SS:[ESP+20]                ;  除以[ESP+20](第一组数据的位数) 
00412135   .  8BDA          MOV EBX,EDX 
00412137   .  8A83 FC234700 MOV AL,BYTE PTR DS:[EBX+4723FC]          ;  逐位取第二组数据 
0041213D   .  3287 E8234700 XOR AL,BYTE PTR DS:[EDI+4723E8]          ;  异或第一组数据 
00412143   .  324434 2C     XOR AL,BYTE PTR SS:[ESP+ESI+2C]          ;  异或用户名 
00412147   .  04 13         ADD AL,13                                ;  AL+13 
00412149   .  85F6          TEST ESI,ESI 
0041214B   .  75 08         JNZ SHORT QQRecord.00412155 
0041214D   .  0FBEC0        MOVSX EAX,AL                             ;  带符号位扩展 
00412150   .  99            CDQ                                      ;  双字变四字 
00412151   .  33C2          XOR EAX,EDX                              ;  异或 
00412153   .  2BC2          SUB EAX,EDX                              ;  相减 
00412155   >  3C 40         CMP AL,40                                ;  以下判断AL是否为英文字母 
00412157   .  7E 04         JLE SHORT QQRecord.0041215D              ;  AL<=40 则跳   注意:41=A 
00412159   .  3C 5B         CMP AL,5B                                ;  与5B比较,即判断AL是否为大写字母 5A=Z 
0041215B   .  7C 0A         JL SHORT QQRecord.00412167 
0041215D   >  8AC8          MOV CL,AL                                ;  继续判断是否为小写字母 
0041215F   .  80E9 61       SUB CL,61 
00412162   .  80F9 19       CMP CL,19 
00412165   .  77 10         JA SHORT QQRecord.00412177               ;  若是小写字母  -61H后应小于19H 
00412167   >  0FBED0        MOVSX EDX,AL                             ;  如果是英文字母 则跳到这里 
0041216A   .  52            PUSH EDX 
0041216B   .  68 88254700   PUSH QQRecord.00472588                   ;  ASCII "%c" 
00412170   .  8D4424 20     LEA EAX,DWORD PTR SS:[ESP+20] 
00412174   .  50            PUSH EAX 
00412175   .  EB 0E         JMP SHORT QQRecord.00412185 
00412177   >  0FBEC8        MOVSX ECX,AL 
0041217A   .  51            PUSH ECX 
0041217B   .  68 A01D4700   PUSH QQRecord.00471DA0                   ; ASCII "%d" 
00412180   .  8D5424 20     LEA EDX,DWORD PTR SS:[ESP+20] 
00412184   .  52            PUSH EDX 
00412185   >  E8 56B9FFFF   CALL QQRecord.0040DAE0                   ; 得出最终结果的关键CALL 
0041218A   .  8B6C24 24     MOV EBP,DWORD PTR SS:[ESP+24] 
0041218E   .  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C] 
00412191   .  83C4 0C       ADD ESP,0C 
00412194   .  50            PUSH EAX 
00412195   .  55            PUSH EBP 
00412196   .  8D4C24 1C     LEA ECX,DWORD PTR SS:[ESP+1C] 
0041219A   .  E8 C143FFFF   CALL QQRecord.00406560 
0041219F   .  83C6 01       ADD ESI,1 
004121A2   .  3B7424 1C     CMP ESI,DWORD PTR SS:[ESP+1C] 
004121A6   .^ 0F82 75FFFFFF JB QQRecord.00412121                     ; 继续循环 
004121AC   .  8B4C24 14     MOV ECX,DWORD PTR SS:[ESP+14]            ; 这里得出KEY 
004121B0   >  8B71 F4       MOV ESI,DWORD PTR DS:[ECX-C] 
004121B3   .  8B41 F8       MOV EAX,DWORD PTR DS:[ECX-8] 
004121B6   .  BA 01000000   MOV EDX,1 
004121BB   .  2B51 FC       SUB EDX,DWORD PTR DS:[ECX-4] 
004121BE   .  2BC6          SUB EAX,ESI 
004121C0   .  0BC2          OR EAX,EDX 
004121C2   .  7D 0E         JGE SHORT QQRecord.004121D2 
004121C4   .  56            PUSH ESI 
004121C5   .  8D4C24 18     LEA ECX,DWORD PTR SS:[ESP+18] 
004121C9   .  E8 B24BFFFF   CALL QQRecord.00406D80 
004121CE   .  8B4C24 14     MOV ECX,DWORD PTR SS:[ESP+14] 
004121D2   >  8D46 01       LEA EAX,DWORD PTR DS:[ESI+1] 
004121D5   .  50            PUSH EAX 
004121D6   .  51            PUSH ECX 
004121D7   .  E8 0AC70300   CALL QQRecord.0044E8E6 
004121DC   .  50            PUSH EAX 
004121DD   .  E8 CE48FFFF   CALL QQRecord.00406AB0 
004121E2   .  83C4 0C       ADD ESP,0C 
004121E5   .  85F6          TEST ESI,ESI 
004121E7   .  0F8C E9000000 JL QQRecord.004122D6 
004121ED   .  8B4424 14     MOV EAX,DWORD PTR SS:[ESP+14] 
004121F1   .  3B70 F8       CMP ESI,DWORD PTR DS:[EAX-8] 
004121F4   .  0F8F DC000000 JG QQRecord.004122D6 
004121FA   .  8970 F4       MOV DWORD PTR DS:[EAX-C],ESI 
004121FD   .  8B4C24 14     MOV ECX,DWORD PTR SS:[ESP+14] 
00412201   .  8D5C24 14     LEA EBX,DWORD PTR SS:[ESP+14] 
00412205   .  C6040E 00     MOV BYTE PTR DS:[ESI+ECX],0 
00412209   .  E8 02AAFFFF   CALL QQRecord.0040CC10 
0041220E   .  8BF8          MOV EDI,EAX 
00412210   .  E8 7BAAFFFF   CALL QQRecord.0040CC90 
00412215   .  8B7424 14     MOV ESI,DWORD PTR SS:[ESP+14] 
00412219   .  8B4E F0       MOV ECX,DWORD PTR DS:[ESI-10] 
0041221C   .  8B11          MOV EDX,DWORD PTR DS:[ECX] 
0041221E   .  8B42 10       MOV EAX,DWORD PTR DS:[EDX+10] 
00412221   .  83C6 F0       ADD ESI,-10 
00412224   .  FFD0          CALL EAX 
00412226   .  837E 0C 00    CMP DWORD PTR DS:[ESI+C],0 
0041222A   .  8D4E 0C       LEA ECX,DWORD PTR DS:[ESI+C] 
0041222D   .  7C 11         JL SHORT QQRecord.00412240 
0041222F   .  3B06          CMP EAX,DWORD PTR DS:[ESI] 
00412231   .  75 0D         JNZ SHORT QQRecord.00412240 
00412233   .  8BFE          MOV EDI,ESI 
00412235   .  BA 01000000   MOV EDX,1 
0041223A   .  F0:0FC111     LOCK XADD DWORD PTR DS:[ECX],EDX         ;  LOCK 前缀 
0041223E   .  EB 37         JMP SHORT QQRecord.00412277 
00412240   >  8B4E 04       MOV ECX,DWORD PTR DS:[ESI+4] 
00412243   .  8B10          MOV EDX,DWORD PTR DS:[EAX] 
00412245   .  8B12          MOV EDX,DWORD PTR DS:[EDX] 
00412247   .  6A 01         PUSH 1 
00412249   .  51            PUSH ECX 
0041224A   .  8BC8          MOV ECX,EAX 
0041224C   .  FFD2          CALL EDX 
0041224E   .  8BF8          MOV EDI,EAX 
00412250   .  85FF          TEST EDI,EDI 
00412252   .  75 05         JNZ SHORT QQRecord.00412259 
00412254   .^ E9 C749FFFF   JMP QQRecord.00406C20 
00412259   >  8B46 04       MOV EAX,DWORD PTR DS:[ESI+4] 
0041225C   .  8947 04       MOV DWORD PTR DS:[EDI+4],EAX 
0041225F   .  8B46 04       MOV EAX,DWORD PTR DS:[ESI+4] 
00412262   .  83C0 01       ADD EAX,1 
00412265   .  50            PUSH EAX 
00412266   .  83C6 10       ADD ESI,10 
00412269   .  56            PUSH ESI 
0041226A   .  50            PUSH EAX 
0041226B   .  8D4F 10       LEA ECX,DWORD PTR DS:[EDI+10] 
0041226E   .  51            PUSH ECX 
0041226F   .  E8 DFBC0300   CALL QQRecord.0044DF53 
00412274   .  83C4 10       ADD ESP,10 
00412277   >  8B7424 28     MOV ESI,DWORD PTR SS:[ESP+28] 
0041227B   .  C68424 400100>MOV BYTE PTR SS:[ESP+140],0 
00412283   .  8B4424 14     MOV EAX,DWORD PTR SS:[ESP+14] 
00412287   .  83C7 10       ADD EDI,10 
0041228A   .  83C0 F0       ADD EAX,-10 
0041228D   .  893E          MOV DWORD PTR DS:[ESI],EDI 
0041228F   .  8D50 0C       LEA EDX,DWORD PTR DS:[EAX+C] 
00412292   .  83C9 FF       OR ECX,FFFFFFFF 
00412295   .  F0:0FC10A     LOCK XADD DWORD PTR DS:[EDX],ECX         ;  LOCK 前缀 
00412299   .  49            DEC ECX 
0041229A   .  85C9          TEST ECX,ECX 
0041229C   .  7F 0A         JG SHORT QQRecord.004122A8 
0041229E   .  8B08          MOV ECX,DWORD PTR DS:[EAX] 
004122A0   .  8B11          MOV EDX,DWORD PTR DS:[ECX] 
004122A2   .  50            PUSH EAX 
004122A3   .  8B42 04       MOV EAX,DWORD PTR DS:[EDX+4] 
004122A6   .  FFD0          CALL EAX 
004122A8   >  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10] 
004122AB   .  C78424 400100>MOV DWORD PTR SS:[ESP+140],-1 
004122B6   .  8D48 0C       LEA ECX,DWORD PTR DS:[EAX+C] 
004122B9   .  83CA FF       OR EDX,FFFFFFFF 
004122BC   .  F0:0FC111     LOCK XADD DWORD PTR DS:[ECX],EDX         ;  LOCK 前缀 
004122C0   .  4A            DEC EDX 
004122C1   .  85D2          TEST EDX,EDX 
004122C3   .  7F 0A         JG SHORT QQRecord.004122CF 
004122C5   .  8B08          MOV ECX,DWORD PTR DS:[EAX] 
004122C7   .  8B11          MOV EDX,DWORD PTR DS:[ECX] 
004122C9   .  50            PUSH EAX 
004122CA   .  8B42 04       MOV EAX,DWORD PTR DS:[EDX+4] 
004122CD   .  FFD0          CALL EAX 
004122CF   >  8BC6          MOV EAX,ESI 
004122D1   .^ E9 4BFDFFFF   JMP QQRecord.00412021 
 
JMP到这里: 
 
00412021   > /8B8C24 380100>MOV ECX,DWORD PTR SS:[ESP+138] 
00412028   . |64:890D 00000>MOV DWORD PTR FS:[0],ECX 
0041202F   . |59            POP ECX 
00412030   . |5F            POP EDI 
00412031   . |5E            POP ESI 
00412032   . |5D            POP EBP 
00412033   . |5B            POP EBX 
00412034   . |8B8C24 200100>MOV ECX,DWORD PTR SS:[ESP+120] 
0041203B   . |33CC          XOR ECX,ESP 
0041203D   . |E8 4BAE0300   CALL QQRecord.0044CE8D 
00412042   . |81C4 30010000 ADD ESP,130 
00412048   . |C3            RETN                                    ;  返回 
 
 
我们再来看一下算法中的几处关键数据: 
 
004723E8  0E 3C 2D 4B 5C 4F 98 10 0C 9E AB FE 0F 2D 1B 70  <-K\O?.灚?-p 
004723F8  29 1B 00 00 4D A4 9B CA 2D 39 FC CF D2 CD 2A AC  )..M??9?彝* 
00472408  4C 01                                            L 
 
[4723E8]和[4723E8]这些数据是从何而来呢?是生来就有呢?还是……,我们重新OD载入,然后d 4723E8,呵呵,比较幸运果然是生来就有。是否是固定值呢?恩,如果不是那软件作者在计算KEY的时候可就费事了,因为他只能得到注册者的用户名。 
 
///////////////////////////////////////////////////////// 
 
我们简单的看一下算法中的这个关键CALL:00412185 CALL 0040DAE0  
 
0040DAE0    8B4C24 08       MOV ECX,DWORD PTR SS:[ESP+8]             ; F7跟进后来到这里 
0040DAE4    8D4424 0C       LEA EAX,DWORD PTR SS:[ESP+C] 
0040DAE8    50              PUSH EAX 
0040DAE9    51              PUSH ECX 
0040DAEA    8B4C24 0C       MOV ECX,DWORD PTR SS:[ESP+C] 
0040DAEE    E8 5DFFFFFF     CALL QQRecord.0040DA50                   ; 跟进 
0040DAF3    C3              RETN 
//////////////// 
0040DA9F    E8 1F0C0400     CALL QQRecord.0044E6C3                   ; 这个CALL 
//////////////// 
0044E6D5    E8 63FFFFFF     CALL QQRecord.0044E63D                   ; 继续跟进 
////////////// 
0044E691    E8 DDFEFFFF     CALL QQRecord.0044E573                   ; 继续跟进  
////////// 
0044E5F7    FF55 08         CALL DWORD PTR SS:[EBP+8]                ; 进到这个CALL就看到算法了 
//////// 
 
跟进这个CALL就可以找到算法部分了:先做一个简单运算,然后对结果做满足条件的跳转,最终得出结果。这里比较麻烦,有兴趣的朋友自己跟一下吧。(注意:其他的CALL不要轻易进,否则OD会挂掉。) 
 
///////////////////////////////////////////////////////// 
 
 
提供一组KEY 
 
用户名:Nisy 
注册码:23-14527 
 
对解密不了解的程序员大都不将KEY加密便直接保存放到注册表或某个文件,例如这个软件就将注册信息放到了这里:HKEY_CURRENT_USER\Software\msddr\srecord\qq\QQRecord\Register。 如何得来,进注册表搜索我们的注册码即可,这就是不加密保存的弊端之一。 
 
 
 |   
 
 
 
 |