- UID
 - 2198
 
 注册时间2005-6-29
阅读权限255
最后登录1970-1-1
副坛主 
    
 
 
 
该用户从未签到  
 | 
 
Cool CD Ripper  V1.26 
官方网站:http://www.magicutils.com/ 
 
Cool CD Ripper  V1.26同MouseStar  V3.55是同一公司的作品。软件的算法在形式上几乎没什么变化,调换了一些简单的字符串,在保存KEY上做了小小的修整,使暴破后写入假码。软件可搜索到注册失败的ASCII字符串,所以下断简单。UPX壳我们就直接带壳调试OD开始分析。 
 
 
 
004C3129    51              push    ecx 
004C312A    51              push    ecx 
004C312B    51              push    ecx 
004C312C    51              push    ecx 
004C312D    51              push    ecx 
004C312E    53              push    ebx 
004C312F    56              push    esi 
004C3130    8BD8            mov     ebx, eax 
004C3132    33C0            xor     eax, eax 
004C3134    55              push    ebp 
004C3135    68 90324C00     push    004C3290 
004C313A    64:FF30         push    dword ptr fs:[eax] 
004C313D    64:8920         mov     dword ptr fs:[eax], esp 
004C3140    8D55 F4         lea     edx, dword ptr [ebp-C] 
004C3143    8B83 0C030000   mov     eax, dword ptr [ebx+30C] 
004C3149    E8 C62CF8FF     call    00445E14                          ; 计算用户名的位数 
004C314E    8B45 F4         mov     eax, dword ptr [ebp-C] 
004C3151    8D55 F8         lea     edx, dword ptr [ebp-8] 
004C3154    E8 DF5EF4FF     call    00409038 
004C3159    8B55 F8         mov     edx, dword ptr [ebp-8] 
004C315C    A1 C41A4E00     mov     eax, dword ptr [4E1AC4] 
004C3161    E8 FE19F4FF     call    00404B64 
004C3166    8D55 EC         lea     edx, dword ptr [ebp-14] 
004C3169    8B83 14030000   mov     eax, dword ptr [ebx+314] 
004C316F    E8 A02CF8FF     call    00445E14 
004C3174    8B45 EC         mov     eax, dword ptr [ebp-14] 
004C3177    8D55 F0         lea     edx, dword ptr [ebp-10] 
004C317A    E8 B95EF4FF     call    00409038 
004C317F    8B55 F0         mov     edx, dword ptr [ebp-10] 
004C3182    A1 0C194E00     mov     eax, dword ptr [4E190C] 
004C3187    E8 D819F4FF     call    00404B64 
004C318C    A1 C41A4E00     mov     eax, dword ptr [4E1AC4] 
004C3191    8338 00         cmp     dword ptr [eax], 0 
004C3194    0F84 9C000000   je      004C3236 
004C319A    A1 0C194E00     mov     eax, dword ptr [4E190C] 
004C319F    8338 00         cmp     dword ptr [eax], 0 
004C31A2    0F84 8E000000   je      004C3236 
004C31A8    B2 01           mov     dl, 1 
004C31AA    A1 98C94600     mov     eax, dword ptr [46C998] 
004C31AF    E8 E498FAFF     call    0046CA98 
004C31B4    8BF0            mov     esi, eax 
004C31B6    BA 01000080     mov     edx, 80000001 
004C31BB    8BC6            mov     eax, esi 
004C31BD    E8 7699FAFF     call    0046CB38 
004C31C2    B1 01           mov     cl, 1 
004C31C4    BA A8324C00     mov     edx, 004C32A8                     ; \Software\Cool CD Ripper 
004C31C9    8BC6            mov     eax, esi 
004C31CB    E8 CC99FAFF     call    0046CB9C 
004C31D0    84C0            test    al, al 
004C31D2    74 28           je      short 004C31FC 
004C31D4    8B0D C41A4E00   mov     ecx, dword ptr [4E1AC4]           ; CoolCDRi.004E3428 
004C31DA    8B09            mov     ecx, dword ptr [ecx] 
004C31DC    BA CC324C00     mov     edx, 004C32CC                     ; user 
004C31E1    8BC6            mov     eax, esi 
004C31E3    E8 509BFAFF     call    0046CD38 
004C31E8    8B0D 0C194E00   mov     ecx, dword ptr [4E190C]           ; CoolCDRi.004E342C 
004C31EE    8B09            mov     ecx, dword ptr [ecx] 
004C31F0    BA DC324C00     mov     edx, 004C32DC                     ; Key 
004C31F5    8BC6            mov     eax, esi 
004C31F7    E8 3C9BFAFF     call    0046CD38 
004C31FC    8BC6            mov     eax, esi 
004C31FE    E8 A10BF4FF     call    00403DA4 
004C3203    A1 C41A4E00     mov     eax, dword ptr [4E1AC4] 
004C3208    8338 00         cmp     dword ptr [eax], 0 
004C320B    74 29           je      short 004C3236 
004C320D    8D55 FC         lea     edx, dword ptr [ebp-4] 
004C3210    A1 C41A4E00     mov     eax, dword ptr [4E1AC4] 
004C3215    8B00            mov     eax, dword ptr [eax] 
004C3217    E8 74640000     call    004C9690                          ; 软件的算法CALL在这里 
004C321C    8B45 FC         mov     eax, dword ptr [ebp-4] 
004C321F    8B15 0C194E00   mov     edx, dword ptr [4E190C]           ; CoolCDRi.004E342C 
004C3225    8B12            mov     edx, dword ptr [edx] 
004C3227    E8 E01CF4FF     call    00404F0C                          ; 这里进行明码比较EXA即为真码 
004C322C    75 08           jnz     short 004C3236 
004C322E    A1 98184E00     mov     eax, dword ptr [4E1898] 
004C3233    C600 01         mov     byte ptr [eax], 1 
004C3236    A1 98184E00     mov     eax, dword ptr [4E1898] 
004C323B    8038 00         cmp     byte ptr [eax], 0 
004C323E    74 0C           je      short 004C324C 
004C3240    B8 E8324C00     mov     eax, 004C32E8                     ; Thanks for your registration! 
004C3245    E8 92C3F7FF     call    0043F5DC 
004C324A    EB 0A           jmp     short 004C3256 
004C324C    B8 10334C00     mov     eax, 004C3310                     ; The registration infomation is not correct! 
 
 
==================软件的算法CALL 004C9690 F7跟进================== 
 
004C9690    55              push    ebp 
004C9691    8BEC            mov     ebp, esp 
004C9693    33C9            xor     ecx, ecx 
004C9695    51              push    ecx 
004C9696    51              push    ecx 
004C9697    51              push    ecx 
004C9698    51              push    ecx 
004C9699    51              push    ecx 
004C969A    51              push    ecx 
004C969B    51              push    ecx 
004C969C    53              push    ebx 
004C969D    8BDA            mov     ebx, edx 
004C969F    8945 FC         mov     dword ptr [ebp-4], eax 
004C96A2    8B45 FC         mov     eax, dword ptr [ebp-4] 
004C96A5    E8 06B9F3FF     call    00404FB0 
004C96AA    33C0            xor     eax, eax 
004C96AC    55              push    ebp 
004C96AD    68 33974C00     push    004C9733 
004C96B2    64:FF30         push    dword ptr fs:[eax] 
004C96B5    64:8920         mov     dword ptr fs:[eax], esp 
004C96B8    8D55 E4         lea     edx, dword ptr [ebp-1C] 
004C96BB    8B45 FC         mov     eax, dword ptr [ebp-4] 
004C96BE    E8 75F9F3FF     call    00409038 
004C96C3    8B45 E4         mov     eax, dword ptr [ebp-1C] 
004C96C6    8D55 E8         lea     edx, dword ptr [ebp-18] 
004C96C9    E8 1AF7F3FF     call    00408DE8                          ; 该CALL将用户名转化为大写 
004C96CE    8B55 E8         mov     edx, dword ptr [ebp-18] 
004C96D1    8D45 F8         lea     eax, dword ptr [ebp-8] 
004C96D4    B9 48974C00     mov     ecx, 004C9748                     ; ASCII "zhiyuan" 
004C96D9    E8 36B7F3FF     call    00404E14 
004C96DE    8D45 F4         lea     eax, dword ptr [ebp-C] 
004C96E1    BA 58974C00     mov     edx, 004C9758                     ; ASCII "MagicUtils" 
004C96E6    E8 BDB4F3FF     call    00404BA8 
004C96EB    8D45 F0         lea     eax, dword ptr [ebp-10] 
004C96EE    BA 6C974C00     mov     edx, 004C976C                     ; ASCII "Cool_CD_Converter" 
004C96F3    E8 B0B4F3FF     call    00404BA8 
004C96F8    8D45 EC         lea     eax, dword ptr [ebp-14] 
004C96FB    BA 88974C00     mov     edx, 004C9788                     ; ASCII "1.15" 
004C9700    E8 A3B4F3FF     call    00404BA8 
004C9705    8B45 EC         mov     eax, dword ptr [ebp-14] 
004C9708    50              push    eax 
004C9709    53              push    ebx 
004C970A    8B4D F0         mov     ecx, dword ptr [ebp-10] 
004C970D    8B55 F4         mov     edx, dword ptr [ebp-C] 
004C9710    8B45 F8         mov     eax, dword ptr [ebp-8] 
004C9713    E8 68A0FFFF     call    004C3780                          ; 软件的算法CALL 
004C9718    33C0            xor     eax, eax 
004C971A    5A              pop     edx 
004C971B    59              pop     ecx 
004C971C    59              pop     ecx 
004C971D    64:8910         mov     dword ptr fs:[eax], edx 
004C9720    68 3A974C00     push    004C973A 
004C9725    8D45 E4         lea     eax, dword ptr [ebp-1C] 
004C9728    BA 07000000     mov     edx, 7 
004C972D    E8 02B4F3FF     call    00404B34 
004C9732    C3              retn 
 
==================将用户名转为大写的代码(高手飘过)================== 
 
00408E05    85DB            test    ebx, ebx 
00408E07    74 15           je      short 00408E1E 
00408E09    8A02            mov     al, byte ptr [edx]              ; 把用户名的字母依次放AL中 
00408E0B    3C 61           cmp     al, 61                          ; AL和61H比较,和a比较 
00408E0D    72 06           jb      short 00408E15                  ; 小于则飞走 
00408E0F    3C 7A           cmp     al, 7A                          ; 7A=z 
00408E11    77 02           ja      short 00408E15 
00408E13    2C 20           sub     al, 20                          ; AL-20 这里就是小写变大写 
00408E15    8806            mov     byte ptr [esi], al              ; AL放入[ESI]中,将用户名转化为大写后的数据地址 
00408E17    42              inc     edx 
00408E18    46              inc     esi 
00408E19    4B              dec     ebx 
00408E1A    85DB            test    ebx, ebx 
00408E1C  ^ 75 EB           jnz     short 00408E09 
00408E1E    5F              pop     edi 
00408E1F    5E              pop     esi 
00408E20    5B              pop     ebx 
00408E21    C3              retn 
 
==================软件的算法CALL 004C3780 部分================== 
 
 
004C3780    55              push    ebp 
004C3781    8BEC            mov     ebp, esp 
004C3783    83C4 EC         add     esp, -14 
004C3786    53              push    ebx 
004C3787    33DB            xor     ebx, ebx                          ; EBX清零 
004C3789    895D EC         mov     dword ptr [ebp-14], ebx 
004C378C    895D F0         mov     dword ptr [ebp-10], ebx 
004C378F    894D F4         mov     dword ptr [ebp-C], ecx 
004C3792    8955 F8         mov     dword ptr [ebp-8], edx 
004C3795    8945 FC         mov     dword ptr [ebp-4], eax 
004C3798    8B45 FC         mov     eax, dword ptr [ebp-4] 
004C379B    E8 1018F4FF     call    00404FB0 
004C37A0    8B45 F8         mov     eax, dword ptr [ebp-8] 
004C37A3    E8 0818F4FF     call    00404FB0 
004C37A8    8B45 F4         mov     eax, dword ptr [ebp-C] 
004C37AB    E8 0018F4FF     call    00404FB0 
004C37B0    8B45 0C         mov     eax, dword ptr [ebp+C] 
004C37B3    E8 F817F4FF     call    00404FB0 
004C37B8    33C0            xor     eax, eax 
004C37BA    55              push    ebp 
004C37BB    68 26384C00     push    004C3826 
004C37C0    64:FF30         push    dword ptr fs:[eax] 
004C37C3    64:8920         mov     dword ptr fs:[eax], esp 
004C37C6    FF75 FC         push    dword ptr [ebp-4] 
004C37C9    FF75 F8         push    dword ptr [ebp-8] 
004C37CC    FF75 F4         push    dword ptr [ebp-C] 
004C37CF    FF75 0C         push    dword ptr [ebp+C] 
004C37D2    8B45 0C         mov     eax, dword ptr [ebp+C] 
004C37D5    50              push    eax 
004C37D6    8D45 EC         lea     eax, dword ptr [ebp-14] 
004C37D9    50              push    eax 
004C37DA    8B4D F4         mov     ecx, dword ptr [ebp-C] 
004C37DD    8B55 F8         mov     edx, dword ptr [ebp-8] 
004C37E0    8B45 FC         mov     eax, dword ptr [ebp-4] 
004C37E3    E8 80FDFFFF     call    004C3568                          ; 得到第五个字符串(这里太复杂了,汗) 
004C37E8    FF75 EC         push    dword ptr [ebp-14] 
004C37EB    8D45 F0         lea     eax, dword ptr [ebp-10] 
004C37EE    BA 05000000     mov     edx, 5 
004C37F3    E8 9016F4FF     call    00404E88                          ; 将这5个字符串连接 
004C37F8    8B55 08         mov     edx, dword ptr [ebp+8] 
004C37FB    8B45 F0         mov     eax, dword ptr [ebp-10] 
004C37FE    E8 31000000     call    004C3834                          ; 软件的算法CALL,我们F7跟进 
004C3803    33C0            xor     eax, eax 
004C3805    5A              pop     edx 
004C3806    59              pop     ecx 
004C3807    59              pop     ecx 
004C3808    64:8910         mov     dword ptr fs:[eax], edx 
004C380B    68 2D384C00     push    004C382D 
004C3810    8D45 EC         lea     eax, dword ptr [ebp-14] 
004C3813    BA 05000000     mov     edx, 5 
004C3818    E8 1713F4FF     call    00404B34 
004C381D    8D45 0C         lea     eax, dword ptr [ebp+C] 
004C3820    E8 EB12F4FF     call    00404B10 
004C3825    C3              retn 
 
==================关键算法CALL 004C3568 这里得到第五个字符串================== 
这一部分太烦琐了跟的我头疼,有兴趣的话,大家自己跟一下吧。 
用户名(大写)+zhiyuan为第一个字符串; 
MagicUtils为第二个字符串; 
Cool_CD_Converter为第三个字符串; 
1.15为第四个字符串;(汗,这样的话启不每个版本都要换算法?) 
第五个字符串由以上四个字符串计算得出: "5(oPkgO_~" 
 
五个字符串连接后的数值:ASCII "NISYzhiyuanMagicUtilsCool_CD_Converter1.15!5(oPkgO_~" 
 
==================软件算法CALL 004C3834 这里得到最终的KEY================== 
 
 
004C3834    55              push    ebp 
004C3835    8BEC            mov     ebp, esp 
004C3837    83C4 F4         add     esp, -0C 
004C383A    53              push    ebx 
004C383B    56              push    esi 
004C383C    33C9            xor     ecx, ecx 
004C383E    894D F4         mov     dword ptr [ebp-C], ecx 
004C3841    8955 F8         mov     dword ptr [ebp-8], edx 
004C3844    8945 FC         mov     dword ptr [ebp-4], eax 
004C3847    8B45 FC         mov     eax, dword ptr [ebp-4] 
004C384A    E8 6117F4FF     call    00404FB0 
004C384F    33C0            xor     eax, eax 
004C3851    55              push    ebp 
004C3852    68 D3384C00     push    004C38D3 
004C3857    64:FF30         push    dword ptr fs:[eax] 
004C385A    64:8920         mov     dword ptr fs:[eax], esp 
004C385D    33DB            xor     ebx, ebx                          ; EBX清零 
004C385F    8B45 FC         mov     eax, dword ptr [ebp-4] 
004C3862    E8 6115F4FF     call    00404DC8 
004C3867    85C0            test    eax, eax 
004C3869    7E 2C           jle     short 004C3897 
004C386B    BE 01000000     mov     esi, 1                            ; ESI赋初值1 
004C3870    8B55 FC         mov     edx, dword ptr [ebp-4]            ; 字符串地址进EDX 
004C3873    8A5432 FF       mov     dl, byte ptr [edx+esi-1]          ; 依次取字符串中的字符放到DL中 
004C3877    32D3            xor     dl, bl                            ; DL和BL相异或 
004C3879    81E2 FF000000   and     edx, 0FF                          ; EDX与0FF做与运算 
004C387F    8B1495 680A4E00 mov     edx, dword ptr [edx*4+4E0A68]     ; EDX*4+4E0A68 存放到EDX中 
004C3886    C1EB 08         shr     ebx, 8                            ; 逻辑右移8位 
004C3889    81E3 FFFFFF00   and     ebx, 0FFFFFF                      ; EBX同0FFFFFF相异或 
004C388F    33D3            xor     edx, ebx                          ; EDX和EBX相异或 
004C3891    8BDA            mov     ebx, edx                          ; EDX数值放EBX中 
004C3893    46              inc     esi                               ; ESI+1 
004C3894    48              dec     eax                               ; EAX中存放的是字符串的长度 
004C3895  ^ 75 D9           jnz     short 004C3870                    ; 开始循环 
004C3897    8BC3            mov     eax, ebx                          ; 次时EDX中数值(转化为小写后)即为软件KEY 
004C3899    33D2            xor     edx, edx 
004C389B    52              push    edx 
004C389C    50              push    eax 
004C389D    8D55 F4         lea     edx, dword ptr [ebp-C] 
004C38A0    B8 08000000     mov     eax, 8 
004C38A5    E8 4A5AF4FF     call    004092F4 
004C38AA    8B45 F4         mov     eax, dword ptr [ebp-C] 
004C38AD    8B55 F8         mov     edx, dword ptr [ebp-8] 
004C38B0    E8 6F55F4FF     call    00408E24                          ; 该CALL将上方计算结果转化为小写 
004C38B5    33C0            xor     eax, eax 
004C38B7    5A              pop     edx 
004C38B8    59              pop     ecx 
004C38B9    59              pop     ecx 
004C38BA    64:8910         mov     dword ptr fs:[eax], edx 
004C38BD    68 DA384C00     push    004C38DA 
004C38C2    8D45 F4         lea     eax, dword ptr [ebp-C] 
004C38C5    E8 4612F4FF     call    00404B10 
004C38CA    8D45 FC         lea     eax, dword ptr [ebp-4] 
004C38CD    E8 3E12F4FF     call    00404B10 
004C38D2    C3              retn 
 
 
PS:软件重启时候,调用相同的算法部分进行验证,在这里也可做内存注册机: 
 
004C9603    E8 88000000     call    004C9690                         ; 重启验证时的CALL 
004C9608    8B45 FC         mov     eax, dword ptr [ebp-4] 
004C960B    8B15 2C344E00   mov     edx, dword ptr [4E342C] 
004C9611    E8 F6B8F3FF     call    00404F0C                         ; 这里进行明码比较EXA即为真码 
004C9616    75 07           jnz     short 004C961F 
 
软件作者在加密上做了稍微的修改,在向注册表保存信息时候做了多重验证,写入的是我们输入的假码,修正了将真码保存的BUG。 
注册信息保存在这里:HKEY_USERS\S-1-5-21-746137067-838170752-725345543-500\Software\Cool CD Ripper 
 
算法分析中,还有一部分没有完整写出(生成第五部分字符串的算法部分),一是水平有限,看那的时候已经头大了,另一点就是得吃晚饭了,那位兄弟能补充下的话,哦一会过来学习下. 
 
提供一组可用信息 
Name:Nisy 
Key   :fbdf40e1 |   
 
 
 
 |