飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 6946|回复: 9

[原创] 快速看算法之钢琴***的注册解码分析实录

[复制链接]
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2011-2-20 01:15:14 | 显示全部楼层 |阅读模式
    本帖最后由 GGLHY 于 2011-2-20 01:16 编辑

    快速看算法之钢琴***的注册解码分析实录

        在病房里陪护实在无聊,看到这个软件顺便弄了下它的算法。比较简单,就贴出来了。
        之所以说快速看算法,呵呵,是因为略去了一些不是很重要的CALL,毕竟那些CALL连看带猜都**不离十。也算是偷了点懒吧。
        本文如有错误,敬请指正!




    现在进入正文:
    在软件目录下,看到这个文件musicreg.exe。运行下,确实是注册的
    硬件ID:WD-WCAT11223415
    好,OD载入,我们F9,输入注册假码15987530



    我们直接来到:
    00481D55  |.  837D EC 00    cmp     dword ptr [ebp-14], >;  判断是否输入了注册码
    00481D59  |.  75 0F         jnz     short 00481D6A
    00481D5B  |.  B8 601E4800   mov     eax, 00481E60
    00481D60  |.  E8 BB74FAFF   call    00429220
    00481D65  |.  E9 AA000000   jmp     00481E14
    00481D6A  |>  8B55 F8       mov     edx, [ebp-8]         ;  假码15987530
    00481D6D  |.  8B45 FC       mov     eax, [ebp-4]         ;  硬件ID:WD-WCAT11223415
    00481D70  |.  E8 FFF8FFFF   call    00481674             ;  寻宝之旅,我们F7
    00481D75  |.  84C0          test    al, al               ;  标志位判断!
    00481D77  |.  0F84 8D000000 je      00481E0A             ;  关键跳
    00481D7D  |.  E8 3EF8FFFF   call    004815C0             ;  写注册信息到注册表
    00481D82  |.  84C0          test    al, al               ;  是否写入成功!
    00481D84  |.  74 78         je      short 00481DFE       ;  注册发生无法预测的错误!



    00481D70 这里 call   00481674处的寻宝之旅,我们F7进入:
    00481674  /$  55            push    ebp                  本地调用来自 0048152A(重起验证), 00481D70(注册)
    00481675  |.  8BEC          mov     ebp, esp
    00481677  |.  B9 0A000000   mov     ecx, 0A
    0048167C  |>  6A 00         /push    0
    0048167E  |.  6A 00         |push    0
    00481680  |.  49            |dec     ecx
    00481681  |.^ 75 F9         \jnz     short 0048167C
    00481683  |.  53            push    ebx
    00481684  |.  56            push    esi
    00481685  |.  57            push    edi
    00481686  |.  8955 F8       mov     [ebp-8], edx         ;  假码15987530
    00481689  |.  8945 FC       mov     [ebp-4], eax         ;  硬件ID:WD-WCAT11223415
    0048168C  |.  8B45 FC       mov     eax, [ebp-4]
    0048168F  |.  E8 C42DF8FF   call    00404458
    00481694  |.  8B45 F8       mov     eax, [ebp-8]         ;  假码15987530
    00481697  |.  E8 BC2DF8FF   call    00404458
    0048169C  |.  33C0          xor     eax, eax
    0048169E  |.  55            push    ebp
    0048169F  |.  68 591A4800   push    00481A59
    004816A4  |.  64:FF30       push    dword ptr fs:[eax]
    004816A7  |.  64:8920       mov     fs:[eax], esp
    004816AA  |.  33DB          xor     ebx, ebx
    004816AC  |.  8D45 F4       lea     eax, [ebp-C]
    004816AF  |.  8B55 FC       mov     edx, [ebp-4]         ;  硬件ID:WD-WCAT11223415
    004816B2  |.  E8 8929F8FF   call    00404040
    004816B7  |.  8B45 F4       mov     eax, [ebp-C]
    004816BA  |.  E8 A92BF8FF   call    00404268
    004816BF  |.  8BF0          mov     esi, eax             ;  硬件ID的长度
    004816C1  |.  85F6          test    esi, esi
    004816C3  |.  7E 33         jle     short 004816F8
    004816C5  |.  BF 01000000   mov     edi, 1               ;  EDI=1
    004816CA  |>  8D45 E0       /lea     eax, [ebp-20]
    004816CD  |.  50            |push    eax
    004816CE  |.  B9 01000000   |mov     ecx, 1
    004816D3  |.  8BD7          |mov     edx, edi
    004816D5  |.  8B45 F4       |mov     eax, [ebp-C]        ;  硬件ID:WD-WCAT11223415
    004816D8  |.  E8 EB2DF8FF   |call    004044C8
    004816DD  |.  8B45 E0       |mov     eax, [ebp-20]
    004816E0  |.  E8 832DF8FF   |call    00404468
    004816E5  |.  8A00          |mov     al, [eax]           ;  依次取硬件ID每一位ASC
    004816E7  |.  25 FF000000   |and     eax, 0FF
    004816EC  |.  03D8          |add     ebx, eax            ;  累加(EBX初始为0)
    004816EE  |.  81C3 04040000 |add     ebx, 404            ;  再+404
    004816F4  |.  47            |inc     edi
    004816F5  |.  4E            |dec     esi
    004816F6  |.^ 75 D2         \jnz     short 004816CA
    004816F8  |>  D1EB          shr     ebx, 1               ;  累加的结果 / 2
    004816FA  |.  81F3 DA870C00 xor     ebx, 0C87DA          ;  商 XOR常数0C87DA
    00481700  |.  03DB          add     ebx, ebx             ;  和 * 2
    00481702      81CB 94850C00 or      ebx, 0C8594          ;  积 OR 常数0C8594
    00481708  |.  D1EB          shr     ebx, 1               ;  结果 / 2
    0048170A  |.  81C3 BA040000 add     ebx, 4BA             ;  商 + 4BA
    00481710  |.  81F3 E0E00800 xor     ebx, 8E0E0           ;  和 XOR 常数8E0E0
    00481716  |.  8D55 F0       lea     edx, [ebp-10]        ;  本例得到的结果EBX=63F55,设为S1
    00481719  |.  8BC3          mov     eax, ebx             ;  S1
    0048171B  |.  E8 B469F8FF   call    004080D4             ;  f7!
    00481720  |.  8B45 F0       mov     eax, [ebp-10]        ;  S2
    00481723  |.  33DB          xor     ebx, ebx
    00481725  |.  8A58 05       mov     bl, [eax+5]          ;  S2的第6位ASC
    00481728  |.  8BC3          mov     eax, ebx
    0048172A  |.  8B55 F0       mov     edx, [ebp-10]        ;  S2
    0048172D  |.  33C9          xor     ecx, ecx
    0048172F  |.  8A4A 02       mov     cl, [edx+2]          ;  S2的第3位ASC
    00481732  |.  03C1          add     eax, ecx             ;  二者相加
    00481734  |.  03C3          add     eax, ebx             ;  和 + S2的第6位ASC
    00481736  |.  BE 05000000   mov     esi, 5               ;  ESI=5
    0048173B  |.  99            cdq
    0048173C  |.  F7FE          idiv    esi                  ;  /5
    0048173E  |.  80C2 61       add     dl, 61               ;  余数 + 61
    00481741  |.  8855 E6       mov     [ebp-1A], dl         ;  其和(及其对应的字符)保存到[EBP-1A]
    00481744  |.  8B45 F0       mov     eax, [ebp-10]        ;  S2
    00481747  |.  0FB670 01     movzx   esi, byte ptr [eax+1>;  S2的第2位
    0048174B  |.  8BC6          mov     eax, esi
    0048174D  |.  03C6          add     eax, esi             ;  * 2
    0048174F  |.  BF 05000000   mov     edi, 5               ;  EDI=5
    00481754  |.  99            cdq
    00481755  |.  F7FF          idiv    edi                  ;   / 5
    00481757  |.  80C2 61       add     dl, 61               ;  余数 + 61
    0048175A  |.  8855 E7       mov     [ebp-19], dl         ;  其和(及其对应的字符)保存到[EBP-19]
    0048175D  |.  8BC3          mov     eax, ebx             ;  S2的第6位ASC
    0048175F  |.  8B55 F0       mov     edx, [ebp-10]        ;  S2
    00481762  |.  0FB63A        movzx   edi, byte ptr [edx]  ;  S2的第1位ASC
    00481765  |.  03C7          add     eax, edi             ;  S2的第1位 + 第6位
    00481767  |.  51            push    ecx
    00481768  |.  B9 05000000   mov     ecx, 5
    0048176D  |.  99            cdq
    0048176E  |.  F7F9          idiv    ecx                  ;  / 5
    00481770  |.  59            pop     ecx
    00481771  |.  80C2 61       add     dl, 61               ;  余数 + 61
    00481774  |.  8855 E8       mov     [ebp-18], dl         ;  其和(及其对应的字符)保存到[EBP-18]
    00481777  |.  8BC7          mov     eax, edi             ;  S2的第1位ASC
    00481779  |.  8B55 F0       mov     edx, [ebp-10]
    0048177C  |.  0FB652 04     movzx   edx, byte ptr [edx+4>;  S2的第5位ASC
    00481780  |.  03C2          add     eax, edx             ;  S2的第1位ASC + 第5位ASC
    00481782  |.  03C1          add     eax, ecx             ;  再 + 第3位
    00481784  |.  51            push    ecx
    00481785  |.  B9 05000000   mov     ecx, 5
    0048178A  |.  99            cdq
    0048178B  |.  F7F9          idiv    ecx                  ;  / 5
    0048178D  |.  59            pop     ecx                  ;  S2第3位
    0048178E  |.  80C2 61       add     dl, 61               ;  余数 + 61
    00481791  |.  8855 E9       mov     [ebp-17], dl         ;  其和(及其对应的字符)保存到[EBP-17]
    00481794  |.  8BC1          mov     eax, ecx             ;  S2第3位
    00481796  |.  03C3          add     eax, ebx             ;  S2第3位 + S2第6位
    00481798  |.  51            push    ecx
    00481799  |.  B9 05000000   mov     ecx, 5
    0048179E  |.  99            cdq
    0048179F  |.  F7F9          idiv    ecx                  ;  / 5
    004817A1  |.  59            pop     ecx                  ;  S2第3位
    004817A2  |.  80C2 61       add     dl, 61               ;  余数 + 61
    004817A5  |.  8855 EA       mov     [ebp-16], dl         ;  其和(及其对应的字符)保存到[EBP-16]
    004817A8  |.  8BC1          mov     eax, ecx             ;  S2第3位
    004817AA  |.  03C6          add     eax, esi             ;  S2第2位?
    004817AC  |.  8B55 F0       mov     edx, [ebp-10]
    004817AF  |.  0FB652 05     movzx   edx, byte ptr [edx+5>;  S2第6位
    004817B3  |.  03C2          add     eax, edx             ;  再加S2第6位
    004817B5  |.  51            push    ecx
    004817B6  |.  B9 05000000   mov     ecx, 5
    004817BB  |.  99            cdq
    004817BC  |.  F7F9          idiv    ecx                  ;  / 5
    004817BE  |.  59            pop     ecx
    004817BF  |.  80C2 61       add     dl, 61               ;  余数 + 61
    004817C2  |.  8855 EB       mov     [ebp-15], dl         ;  其和(及其对应的字符)保存到[EBP-15]
    004817C5  |.  8BC1          mov     eax, ecx             ;  S2第3位
    004817C7  |.  8B55 F0       mov     edx, [ebp-10]
    004817CA  |.  0FB652 04     movzx   edx, byte ptr [edx+4>;  S2第5位
    004817CE  |.  03C2          add     eax, edx             ;  S2第3位 + S2第5位
    004817D0  |.  51            push    ecx
    004817D1  |.  B9 05000000   mov     ecx, 5
    004817D6  |.  99            cdq
    004817D7  |.  F7F9          idiv    ecx                  ;  /5
    004817D9  |.  59            pop     ecx
    004817DA  |.  80C2 61       add     dl, 61               ;  余数 + 61
    004817DD  |.  8855 EC       mov     [ebp-14], dl         ;  其和(及其对应的字符)保存到[EBP-14]
    004817E0  |.  8BC7          mov     eax, edi             ;  S2第1位
    004817E2  |.  03C7          add     eax, edi             ;  *2
    004817E4  |.  8B55 F0       mov     edx, [ebp-10]
    004817E7  |.  0FB652 02     movzx   edx, byte ptr [edx+2>;  S2第3位
    004817EB  |.  03C2          add     eax, edx             ;  再加S2第3位
    004817ED  |.  BF 05000000   mov     edi, 5
    004817F2  |.  99            cdq
    004817F3  |.  F7FF          idiv    edi                  ;  /5
    004817F5  |.  80C2 61       add     dl, 61               ;  余数 + 61
    004817F8  |.  8855 ED       mov     [ebp-13], dl         ;  其和(及其对应的字符)保存到[EBP-13]
    004817FB  |.  8BC6          mov     eax, esi             ;  S2第2位
    004817FD  |.  03C1          add     eax, ecx             ;   + 第3位
    004817FF  |.  B9 05000000   mov     ecx, 5
    00481804  |.  99            cdq
    00481805  |.  F7F9          idiv    ecx                  ;  /5
    00481807  |.  80C2 61       add     dl, 61               ;  余数 + 61
    0048180A  |.  8855 EE       mov     [ebp-12], dl         ;  其和(及其对应的字符)保存到[EBP-12]
    0048180D  |.  8B45 F0       mov     eax, [ebp-10]
    00481810  |.  0FB640 04     movzx   eax, byte ptr [eax+4>;  第5位
    00481814  |.  03C3          add     eax, ebx             ;  +第6位
    00481816  |.  8B55 F0       mov     edx, [ebp-10]
    00481819  |.  0FB612        movzx   edx, byte ptr [edx]  ;  第1位
    0048181C  |.  03C2          add     eax, edx             ;  再加第1位
    0048181E  |.  B9 05000000   mov     ecx, 5
    00481823  |.  99            cdq
    00481824  |.  F7F9          idiv    ecx                  ;  /5
    00481826  |.  80C2 61       add     dl, 61               ;  余数 + 61
    00481829  |.  8855 EF       mov     [ebp-11], dl         ;  其和(及其对应的字符)保存到[EBP-11]
    0048182C  |.  8D45 DC       lea     eax, [ebp-24]
    0048182F  |.  8A55 ED       mov     dl, [ebp-13]         ;  Q8[本例为62("b")]
    00481832  |.  E8 5929F8FF   call    00404190
    00481837  |.  8B45 DC       mov     eax, [ebp-24]        ;  [EBP-24]=62
    0048183A  |.  8D55 F0       lea     edx, [ebp-10]        ;  S2
    0048183D  |.  B9 01000000   mov     ecx, 1               ;  注意ECX=1,放到S2的第一位!开始变形了!
    00481842  |.  E8 092DF8FF   call    00404550
    00481847  |.  8D45 D8       lea     eax, [ebp-28]
    0048184A  |.  8A55 EB       mov     dl, [ebp-15]         ;  Q6
    0048184D  |.  E8 3E29F8FF   call    00404190
    00481852  |.  8B45 D8       mov     eax, [ebp-28]
    00481855  |.  8D55 F0       lea     edx, [ebp-10]        ;  对S2开始变形中.....
    00481858  |.  B9 02000000   mov     ecx, 2               ;  放到变形中的第2位
    0048185D  |.  E8 EE2CF8FF   call    00404550
    00481862  |.  8D45 D4       lea     eax, [ebp-2C]
    00481865  |.  8A55 EF       mov     dl, [ebp-11]         ;  Q10
    00481868  |.  E8 2329F8FF   call    00404190
    0048186D  |.  8B45 D4       mov     eax, [ebp-2C]
    00481870  |.  8D55 F0       lea     edx, [ebp-10]        ;  S2继续变形中的字符串,下同
    00481873  |.  B9 04000000   mov     ecx, 4               ;  放到变形中的第4位
    00481878  |.  E8 D32CF8FF   call    00404550
    0048187D  |.  8D45 D0       lea     eax, [ebp-30]
    00481880  |.  8A55 E9       mov     dl, [ebp-17]         ;  Q4
    00481883  |.  E8 0829F8FF   call    00404190
    00481888  |.  8B45 D0       mov     eax, [ebp-30]        ;  Q4
    0048188B  |.  8D55 F0       lea     edx, [ebp-10]
    0048188E  |.  B9 06000000   mov     ecx, 6               ;  放到变形中的第6位
    00481893  |.  E8 B82CF8FF   call    00404550
    00481898  |.  8D45 CC       lea     eax, [ebp-34]
    0048189B  |.  8A55 E7       mov     dl, [ebp-19]         ;  Q2
    0048189E  |.  E8 ED28F8FF   call    00404190
    004818A3  |.  8B45 CC       mov     eax, [ebp-34]        ;  Q2
    004818A6  |.  8D55 F0       lea     edx, [ebp-10]
    004818A9  |.  B9 07000000   mov     ecx, 7               ;  放到变形中的第7位
    004818AE  |.  E8 9D2CF8FF   call    00404550
    004818B3  |.  8D45 C8       lea     eax, [ebp-38]
    004818B6  |.  8A55 EA       mov     dl, [ebp-16]         ;  Q5
    004818B9  |.  E8 D228F8FF   call    00404190
    004818BE  |.  8B45 C8       mov     eax, [ebp-38]        ;  Q5
    004818C1  |.  8D55 F0       lea     edx, [ebp-10]
    004818C4  |.  B9 09000000   mov     ecx, 9               ;  放到变形中的第9位
    004818C9  |.  E8 822CF8FF   call    00404550
    004818CE  |.  8D45 C4       lea     eax, [ebp-3C]
    004818D1  |.  8A55 E6       mov     dl, [ebp-1A]         ;  Q1
    004818D4  |.  E8 B728F8FF   call    00404190
    004818D9  |.  8B45 C4       mov     eax, [ebp-3C]
    004818DC  |.  8D55 F0       lea     edx, [ebp-10]
    004818DF  |.  B9 0A000000   mov     ecx, 0A              ;  放到变形中的第10位
    004818E4  |.  E8 672CF8FF   call    00404550
    004818E9  |.  8D45 C0       lea     eax, [ebp-40]
    004818EC  |.  8A55 E8       mov     dl, [ebp-18]         ;  Q3
    004818EF  |.  E8 9C28F8FF   call    00404190
    004818F4  |.  8B45 C0       mov     eax, [ebp-40]
    004818F7  |.  8D55 F0       lea     edx, [ebp-10]
    004818FA  |.  B9 0C000000   mov     ecx, 0C              ;  放到变形中的第12位
    004818FF  |.  E8 4C2CF8FF   call    00404550
    00481904  |.  8D45 BC       lea     eax, [ebp-44]
    00481907  |.  8A55 EE       mov     dl, [ebp-12]         ;  Q9
    0048190A  |.  E8 8128F8FF   call    00404190
    0048190F  |.  8B45 BC       mov     eax, [ebp-44]        ;  Q9
    00481912  |.  8D55 F0       lea     edx, [ebp-10]
    00481915  |.  B9 0D000000   mov     ecx, 0D              ;  放到变形中的第13位
    0048191A  |.  E8 312CF8FF   call    00404550
    0048191F  |.  8D45 B8       lea     eax, [ebp-48]
    00481922  |.  8A55 EC       mov     dl, [ebp-14]         ;  Q7
    00481925  |.  E8 6628F8FF   call    00404190
    0048192A  |.  8B45 B8       mov     eax, [ebp-48]
    0048192D  |.  8D55 F0       lea     edx, [ebp-10]
    00481930  |.  B9 0F000000   mov     ecx, 0F              ;  放到变形中的第15位
    00481935  |.  E8 162CF8FF   call    00404550
    0048193A  |.  8D55 F0       lea     edx, [ebp-10]
    0048193D  |.  B9 08000000   mov     ecx, 8               ;  注意这里参数=8
    00481942  |.  B8 741A4800   mov     eax, 00481A74        ;  这个地址00481A74对应字符"S"
    00481947  |.  E8 042CF8FF   call    00404550
    0048194C  |.  8D55 F0       lea     edx, [ebp-10]        ;  变形中的第8位为"S"
    0048194F  |.  B9 07000000   mov     ecx, 7               ;  这里参数为7
    00481954  |.  B8 801A4800   mov     eax, 00481A80        ;  这个地址00481A80对应字符"X"
    00481959  |.  E8 F22BF8FF   call    00404550
    0048195E  |.  8D55 F0       lea     edx, [ebp-10]        ;  变形中的第7位为"X"
    00481961  |.  B9 02000000   mov     ecx, 2
    00481966  |.  B8 8C1A4800   mov     eax, 00481A8C        ;  这个地址00481A8C对应字符"5"
    0048196B  |.  E8 E02BF8FF   call    00404550
    00481970  |.  8D55 F0       lea     edx, [ebp-10]        ;  变形中的第2位为"5"
    00481973  |.  B9 0C000000   mov     ecx, 0C              ;  第12位
    00481978  |.  B8 741A4800   mov     eax, 00481A74        ;  这个地址00481A74对应字符"S"
    0048197D  |.  E8 CE2BF8FF   call    00404550
    00481982  |.  8D55 F0       lea     edx, [ebp-10]        ;  变形中的第12位为"S"
    00481985  |.  B9 06000000   mov     ecx, 6               ;  第6位
    0048198A  |.  B8 981A4800   mov     eax, 00481A98        ;  这个地址00481A98对应字符"B"
    0048198F  |.  E8 BC2BF8FF   call    00404550
    00481994  |.  8D55 F0       lea     edx, [ebp-10]        ;  变形中的第6位为"B"
    00481997  |.  B9 05000000   mov     ecx, 5               ;  第5位
    0048199C  |.  B8 A41A4800   mov     eax, 00481AA4        ;  这个地址00481AA4对应字符"-"
    004819A1  |.  E8 AA2BF8FF   call    00404550
    004819A6  |.  8D55 F0       lea     edx, [ebp-10]        ;  变形中的第5位为"-"
    004819A9  |.  B9 0A000000   mov     ecx, 0A              ;  第10位
    004819AE  |.  B8 A41A4800   mov     eax, 00481AA4        ;  "-"
    004819B3  |.  E8 982BF8FF   call    00404550
    004819B8  |.  8D55 F0       lea     edx, [ebp-10]        ;  变形中的第10位为"-"
    004819BB  |.  B9 0F000000   mov     ecx, 0F              ;  第15位
    004819C0  |.  B8 A41A4800   mov     eax, 00481AA4        ;  "-"
    004819C5  |.  E8 862BF8FF   call    00404550
    004819CA  |.  8D55 F0       lea     edx, [ebp-10]        ;  变形中的第15位为"-"
    004819CD  |.  B9 12000000   mov     ecx, 12              ;  第18位
    004819D2  |.  B8 A41A4800   mov     eax, 00481AA4        ;  "-"
    004819D7  |.  E8 742BF8FF   call    00404550
    004819DC  |.  8D55 F0       lea     edx, [ebp-10]        ;  变形中的第18位为"-"
    004819DF  |.  B9 14000000   mov     ecx, 14              ;  第20位
    004819E4  |.  B8 A41A4800   mov     eax, 00481AA4        ;  "-"
    004819E9  |.  E8 622BF8FF   call    00404550
    004819EE  |.  8D55 B4       lea     edx, [ebp-4C]
    004819F1  |.  8B45 F0       mov     eax, [ebp-10]        ;  变形中的第20位为"-"
    004819F4  |.  E8 CB64F8FF   call    00407EC4
    004819F9  |.  8B55 B4       mov     edx, [ebp-4C]        ;  转换成大写
    004819FC  |.  8B45 F8       mov     eax, [ebp-8]         ;  假码
    004819FF  |.  E8 B029F8FF   call    004043B4             ;  真假注册码的比较
    00481A04  |.  75 29         jnz     short 00481A2F       ;  关键跳
    00481A06  |.  B3 01         mov     bl, 1                ;  不跳这里BL会置1,跳则EBX会清零
    00481A08  |.  B8 E45C4800   mov     eax, 00485CE4
    00481A0D  |.  8B55 F4       mov     edx, [ebp-C]
    00481A10  |.  E8 E725F8FF   call    00403FFC
    00481A15  |.  8D55 B0       lea     edx, [ebp-50]
    00481A18  |.  8B45 F0       mov     eax, [ebp-10]
    00481A1B  |.  E8 A464F8FF   call    00407EC4
    00481A20  |.  8B55 B0       mov     edx, [ebp-50]
    00481A23  |.  B8 E85C4800   mov     eax, 00485CE8
    00481A28  |.  E8 CF25F8FF   call    00403FFC
    00481A2D  |.  EB 02         jmp     short 00481A31
    00481A2F  |>  33DB          xor     ebx, ebx
    00481A31  |>  33C0          xor     eax, eax
    00481A33  |.  5A            pop     edx
    00481A34  |.  59            pop     ecx
    00481A35  |.  59            pop     ecx
    00481A36  |.  64:8910       mov     fs:[eax], edx
    00481A39  |.  68 601A4800   push    00481A60
    00481A3E  |>  8D45 B0       lea     eax, [ebp-50]
    00481A41  |.  BA 0D000000   mov     edx, 0D
    00481A46  |.  E8 8125F8FF   call    00403FCC
    00481A4B  |.  8D45 F0       lea     eax, [ebp-10]
    00481A4E  |.  BA 04000000   mov     edx, 4
    00481A53  |.  E8 7425F8FF   call    00403FCC
    00481A58  \.  C3            retn
    00481A59   .^ E9 4E1FF8FF   jmp     004039AC
    00481A5E   .^ EB DE         jmp     short 00481A3E
    00481A60   .  8BC3          mov     eax, ebx
    00481A62   .  5F            pop     edi
    00481A63   .  5E            pop     esi
    00481A64   .  5B            pop     ebx
    00481A65   .  8BE5          mov     esp, ebp
    00481A67   .  5D            pop     ebp
    00481A68   .  C3            retn



    0048171B  处的call    004080D4  
    我们F7后:
    004080D4  /$  56            push    esi
    004080D5  |.  89E6          mov     esi, esp
    004080D7  |.  83EC 10       sub     esp, 10
    004080DA  |.  31C9          xor     ecx, ecx
    004080DC  |.  52            push    edx
    004080DD  |.  31D2          xor     edx, edx
    004080DF  |.  E8 A4FFFFFF   call    00408088             ;继续F7
    004080E4  |.  89F2          mov     edx, esi             ;  S2
    004080E6  |.  58            pop     eax
    004080E7  |.  E8 ACBFFFFF   call    00404098
    004080EC  |.  83C4 10       add     esp, 10
    004080EF  |.  5E            pop     esi
    004080F0  \.  C3            retn


    004080DF的call 00408088、
    我们继续F7:
    00408088  /$  08C9          or      cl, cl
    0040808A  |.  75 17         jnz     short 004080A3
    0040808C  |.  09C0          or      eax, eax             ;  S1
    0040808E  |.  79 0E         jns     short 0040809E
    00408090  |.  F7D8          neg     eax
    00408092  |.  E8 07000000   call    0040809E
    00408097  |.  B0 2D         mov     al, 2D
    00408099  |.  41            inc     ecx
    0040809A  |.  4E            dec     esi
    0040809B  |.  8806          mov     [esi], al
    0040809D  |.  C3            retn
    0040809E  |$  B9 0A000000   mov     ecx, 0A              ;  ECX=0A
    004080A3  |>  52            push    edx
    004080A4  |.  56            push    esi
    004080A5  |>  31D2          /xor     edx, edx
    004080A7  |.  F7F1          |div     ecx                 ;  / 0A
    004080A9  |.  4E            |dec     esi
    004080AA  |.  80C2 30       |add     dl, 30              ;  余数 + 30
    004080AD  |.  80FA 3A       |cmp     dl, 3A              ;  其和与3A比较
    004080B0  |.  72 03         |jb      short 004080B5      ;  小则跳
    004080B2  |.  80C2 07       |add     dl, 7               ;  不跳则再 + 7
    004080B5  |>  8816          |mov     [esi], dl           ;  结果保存到[ESI]这里
    004080B7  |.  09C0          |or      eax, eax            ;  EAX OR EAX 为空则下面结束循环
    004080B9  |.^ 75 EA         \jnz     short 004080A5
    004080BB  |.  59            pop     ecx                  ;  循环结束得到字符串"409429",设为S2
    004080BC  |.  5A            pop     edx
    004080BD  |.  29F1          sub     ecx, esi             ;  ESI为S2的长度
    004080BF  |.  29CA          sub     edx, ecx             ;  不高于循环中最后一次的DL值则跳
    004080C1  |.  76 10         jbe     short 004080D3
    004080C3  |.  01D1          add     ecx, edx             ;  否则,EDX再 + ECX(S2的长度)
    004080C5  |.  B0 30         mov     al, 30
    004080C7  |.  29D6          sub     esi, edx
    004080C9  |.  EB 03         jmp     short 004080CE
    004080CB  |>  880432        /mov     [edx+esi], al
    004080CE  |>  4A             dec     edx
    004080CF  |.^ 75 FA         \jnz     short 004080CB
    004080D1  |.  8806          mov     [esi], al
    004080D3  \>  C3            retn

    算法总结:
    0.依次取硬件ID的ASC累加,其和加上硬件ID长度值*404H(1028),其结果除以2再XOR常数0C87DAH(821210);
      XOR的结果再乘以2,其积再OR常数0C8594H(820628);
      然后再除以2;商+4BAH(1210),得到的和再和 XOR 常数8E0E0H(581856),结果设为S1。
      本例S1=63F55
    1.S1除以10,取余数(余数ASC大于等于3A,则余数ASC+7),商则继续除以10,取余数,直到商为0为止。余数转换成对应的字  符形式,且倒序,得到S2。
      本例S2为字符串“409429”。
    3.对S2按下列顺序进行运算:
      第6位 + 第3位 + 第6位的和除以5  ,取余 + 61,      设为Q1                   对应字符:b
      第2位 + 第2位的和        除以5  ,取余 + 61        设为Q2                   对应字符:b
      第6位 + 第1位的和        除以5  ,取余 + 61        设为Q3                   对应字符:e
      第1位 + 第5位 + 第3位的和除以5  ,取余 + 61        设为Q4                   对应字符:e
      第6位 + 第3位的和        除以5  ,取余 + 61        设为Q5                   对应字符:e               
      第3位 + 第2位 + 第6位的和除以5  ,取余 + 61        设为Q6                   对应字符:c
      第3位 + 第5位的和        除以5  ,取余 + 61        设为Q7                   对应字符:c
      第1位 + 第1位 + 第3位的和除以5  ,取余 + 61        设为Q8                   对应字符:b
      第2位 + 第3位的和        除以5  ,取余 + 61        设为Q9                   对应字符:a
      第5位 + 第6位 + 第1位的和除以5  ,取余 + 61        设为Q10                  对应字符:e
    4.对第3步运算的结果,在S2的基础上按下面顺序依次连接:
      Q8放到S2的第一位去。(不是取代S2的第一位而是相当于Q8连接S2,即开始变形了),本例为“b409429”;
      Q6放到变形中的字符串(即“b409429”)第2位,再次变形为“bc409429”;
      接着是Q10放到“bc409429”的第4位,成为“bc4e09429”;
      然后是Q4放到第6位;
      Q2放到第7位;
      Q5放到第9位;
      Q1放到第10位;
      Q3放到第12位;
      Q9放到第13位;
      Q7放到第15位,这时得到字符串:"bc4e0eb9eb4ea2c9";
      取固定字符“S”放到"bc4e0eb9eb4ea2c9"的第8位,得到,"bc4e0ebS9eb4ea2c9";
      同样,再取固定字符“X”,“5”、“S”、“B”依次放到第7、2、12、6位,得到字符串"b5c4eB0eXbS9Seb4ea2c9";
      再取“-”依次放到第5、10、15、18、20位,直到得字符串"b5c4-eB0e-XbS9-Se-b-4ea2c9"。
    5.转大写即为注册码。




    注册信息会保存在:
        HKEY_USERS\.DEFAULT\Software\MSSQL5.01\MSSQL5.01
        "XB_N"="WD-WCAT11223415"
        "XB_P"="B5C4-EB0E-XBS9-SE-B-4EA2C9"

    删除变回未注册版本!

    unreg.GIF


    ok-1.GIF


    reged.GIF

    评分

    参与人数 1飘云币 +40 收起 理由
    月之精灵 + 40 您的贴子很精彩,希望能再次分享!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-12-1 11:04
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2011-2-20 01:41:41 | 显示全部楼层
    好一个西数硬盘被暴露。。。

    好一个伪装  MSSQL5.01\MSSQL5.01
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-5-31 13:17
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2011-2-20 09:10:30 | 显示全部楼层
    呵呵,不错的分析过程
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2011-2-20 13:43:42 | 显示全部楼层
    不错 回头写个C的Keygen吧
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-3 23:07
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2011-2-20 14:03:26 | 显示全部楼层
    哈哈老G给力哈,谢谢分享
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2019-6-22 21:37
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2011-2-20 21:08:11 | 显示全部楼层
    学习学习  算法
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2021-5-4 13:47
  • 签到天数: 41 天

    [LV.5]常住居民I

    发表于 2011-2-22 00:33:36 | 显示全部楼层
    看看,不懂算法,顶上~~~
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2018-1-18 10:06
  • 签到天数: 858 天

    [LV.10]以坛为家III

    发表于 2011-2-22 20:25:52 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2011-2-26 19:59:28 | 显示全部楼层
    这个早就用不了了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

     楼主| 发表于 2011-2-27 15:06:52 | 显示全部楼层
    这个早就用不了了
    tomjdx 发表于 2011-2-26 19:59



        呵呵,我的算法分析只是为学习和了解软件作者对软件的保护思想而已。不做其他之用。/:017
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表