- UID
 - 55012
 
 注册时间2008-9-1
阅读权限90
最后登录1970-1-1
版主 
    
 
 
 
TA的每日心情  | 奋斗 2015-10-29 08:08 | 
|---|
 
  签到天数: 3 天 [LV.2]偶尔看看I  
 | 
 
Power Video Converter 2.2.1 算法分析 
Power Video Converter 2.2.1 算法分析 
【破文标题】Power Video Converter 2.2.1算法分析 
【破文作者】creantan 
【作者邮箱】[email protected] 
【破解工具】PEiD,OD 
【破解平台】Windows XP 
【软件名称】Power Video Converter 2.2.1  
【软件大小】6231KB 
【软件类别】国外软件/视频转换   
【软件授权】共享版 
【软件语言】英文 
【运行环境】Win9x/Me/NT/2000/XP/2003 
【更新时间】2009-1-6 
【原版下载】http://www.newhua.com/soft/29607.htm 
【保护方式】注册码 
【软件简介】 Power Video Converter可以在AVi, MPEG1, MPEG2, VCD, SVCD, DVD, WMV, ASF, DAT, VOB文件格式之间进行转换,同时具有很快的转换速度和友好的使用界面。 
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:) 
-------------------------------------------------------------- 
【破解内容】 
-------------------------------------------------------------- 
PEID上显示Microsoft Visual C++ 6.0 
试着注册有错误提示。。。下断 bp MessageBoxA 
断点后回到用户代码,向上找到关键算法。。。。 
- 00423750  /$  53            push    ebx
 
 - 00423751  |.  55            push    ebp                              ;  
 
 - 00423752  |.  8B6C24 0C     mov     ebp, dword ptr [esp+C]
 
 - 00423756  |.  56            push    esi
 
 - 00423757  |.  57            push    edi
 
 - 00423758  |.  BE ECD24300   mov     esi, 0043D2EC
 
 - 0042375D  |.  8BC5          mov     eax, ebp
 
 - 0042375F  |>  8A10          /mov     dl, byte ptr [eax]              ;  判断用户名是否为空
 
 - 00423761  |.  8A1E          |mov     bl, byte ptr [esi]
 
 - 00423763  |.  8ACA          |mov     cl, dl
 
 - 00423765  |.  3AD3          |cmp     dl, bl
 
 - 00423767  |.  75 1E         |jnz     short 00423787
 
 - 00423769  |.  84C9          |test    cl, cl
 
 - 0042376B  |.  74 16         |je      short 00423783
 
 - 0042376D  |.  8A50 01       |mov     dl, byte ptr [eax+1]
 
 - 00423770  |.  8A5E 01       |mov     bl, byte ptr [esi+1]
 
 - 00423773  |.  8ACA          |mov     cl, dl
 
 - 00423775  |.  3AD3          |cmp     dl, bl
 
 - 00423777  |.  75 0E         |jnz     short 00423787
 
 - 00423779  |.  83C0 02       |add     eax, 2
 
 - 0042377C  |.  83C6 02       |add     esi, 2
 
 - 0042377F  |.  84C9          |test    cl, cl
 
 - 00423781  |.^ 75 DC         \jnz     short 0042375F
 
 - 00423783  |>  33C0          xor     eax, eax
 
 - 00423785  |.  EB 05         jmp     short 0042378C
 
 - 00423787  |>  1BC0          sbb     eax, eax
 
 - 00423789  |.  83D8 FF       sbb     eax, -1
 
 - 0042378C  |>  85C0          test    eax, eax
 
 - 0042378E  |.  74 51         je      short 004237E1
 
 - 00423790  |.  8B7C24 18     mov     edi, dword ptr [esp+18]
 
 - 00423794  |.  BE ECD24300   mov     esi, 0043D2EC
 
 - 00423799  |.  8BC7          mov     eax, edi
 
 - 0042379B  |>  8A10          /mov     dl, byte ptr [eax]              ;  判断假码是否为空
 
 - 0042379D  |.  8A1E          |mov     bl, byte ptr [esi]
 
 - 0042379F  |.  8ACA          |mov     cl, dl
 
 - 004237A1  |.  3AD3          |cmp     dl, bl
 
 - 004237A3  |.  75 1E         |jnz     short 004237C3
 
 - 004237A5  |.  84C9          |test    cl, cl
 
 - 004237A7  |.  74 16         |je      short 004237BF
 
 - 004237A9  |.  8A50 01       |mov     dl, byte ptr [eax+1]
 
 - 004237AC  |.  8A5E 01       |mov     bl, byte ptr [esi+1]
 
 - 004237AF  |.  8ACA          |mov     cl, dl
 
 - 004237B1  |.  3AD3          |cmp     dl, bl
 
 - 004237B3  |.  75 0E         |jnz     short 004237C3
 
 - 004237B5  |.  83C0 02       |add     eax, 2
 
 - 004237B8  |.  83C6 02       |add     esi, 2
 
 - 004237BB  |.  84C9          |test    cl, cl
 
 - 004237BD  |.^ 75 DC         \jnz     short 0042379B
 
 - 004237BF  |>  33C0          xor     eax, eax
 
 - 004237C1  |.  EB 05         jmp     short 004237C8
 
 - 004237C3  |>  1BC0          sbb     eax, eax
 
 - 004237C5  |.  83D8 FF       sbb     eax, -1
 
 - 004237C8  |>  85C0          test    eax, eax
 
 - 004237CA  |.  74 15         je      short 004237E1
 
 - 004237CC  |.  57            push    edi                              ;  假码入栈
 
 - 004237CD  |.  55            push    ebp                              ;  用户名入栈
 
 - 004237CE  |.  E8 3DFDFFFF   call    00423510        ;关键算法
 
 - {
 
 - 00423510  /$  6A FF         push    -1
 
 - 00423512  |.  68 D0EE4200   push    0042EED0                         ;  SE 处理程序安装
 
 - 00423517  |.  64:A1 0000000>mov     eax, dword ptr fs:[0]
 
 - 0042351D  |.  50            push    eax
 
 - 0042351E  |.  64:8925 00000>mov     dword ptr fs:[0], esp
 
 - 00423525  |.  83EC 14       sub     esp, 14
 
 - 00423528  |.  8B4424 24     mov     eax, dword ptr [esp+24]
 
 - 0042352C  |.  53            push    ebx
 
 - 0042352D  |.  55            push    ebp
 
 - 0042352E  |.  56            push    esi
 
 - 0042352F  |.  57            push    edi
 
 - 00423530  |.  50            push    eax
 
 - 00423531  |.  8D4C24 18     lea     ecx, dword ptr [esp+18]
 
 - 00423535  |.  E8 0E690000   call    <jmp.&MFC42.#537>
 
 - 0042353A  |.  33F6          xor     esi, esi
 
 - 0042353C  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]
 
 - 00423540  |.  897424 2C     mov     dword ptr [esp+2C], esi
 
 - 00423544  |.  E8 C56C0000   call    <jmp.&MFC42.#6282>
 
 - 00423549  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]
 
 - 0042354D  |.  E8 B66C0000   call    <jmp.&MFC42.#6283>
 
 - 00423552  |.  6A 20         push    20
 
 - 00423554  |.  8D4C24 18     lea     ecx, dword ptr [esp+18]
 
 - 00423558  |.  E8 A96B0000   call    <jmp.&MFC42.#2915>
 
 - 0042355D  |.  8B4C24 38     mov     ecx, dword ptr [esp+38]          ;  取假码
 
 - 00423561  |.  8BD8          mov     ebx, eax
 
 - 00423563  |.  51            push    ecx
 
 - 00423564  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]
 
 - 00423568  |.  E8 DB680000   call    <jmp.&MFC42.#537>
 
 - 0042356D  |.  8D4C24 10     lea     ecx, dword ptr [esp+10]
 
 - 00423571  |.  C64424 2C 01  mov     byte ptr [esp+2C], 1
 
 - 00423576  |.  E8 936C0000   call    <jmp.&MFC42.#6282>
 
 - 0042357B  |.  8D4C24 10     lea     ecx, dword ptr [esp+10]
 
 - 0042357F  |.  E8 846C0000   call    <jmp.&MFC42.#6283>
 
 - 00423584  |.  6A 20         push    20
 
 - 00423586  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]
 
 - 0042358A  |.  E8 776B0000   call    <jmp.&MFC42.#2915>               ;  取假码
 
 - 0042358F  |.  8BD0          mov     edx, eax
 
 - 00423591  |.  83C9 FF       or      ecx, FFFFFFFF
 
 - 00423594  |.  8BFA          mov     edi, edx
 
 - 00423596  |.  33C0          xor     eax, eax
 
 - 00423598  |.  F2:AE         repne   scas byte ptr es:[edi]
 
 - 0042359A  |.  F7D1          not     ecx
 
 - 0042359C  |.  49            dec     ecx                              ;  取假码长度
 
 - 0042359D  |.  8BFB          mov     edi, ebx
 
 - 0042359F  |.  8BE9          mov     ebp, ecx
 
 - 004235A1  |.  83C9 FF       or      ecx, FFFFFFFF
 
 - 004235A4  |.  F2:AE         repne   scas byte ptr es:[edi]
 
 - 004235A6  |.  F7D1          not     ecx
 
 - 004235A8  |.  49            dec     ecx                              ;  取用户名长度
 
 - 004235A9  |.  895424 20     mov     dword ptr [esp+20], edx
 
 - 004235AD  |.  3BCD          cmp     ecx, ebp
 
 - 004235AF  |.  0F87 64010000 ja      00423719                         ;  用户名长度与假码长度比较
 
 - 004235B5  |.  8BFB          mov     edi, ebx                         ;  假码长度不能小于用户名
 
 - 004235B7  |.  83C9 FF       or      ecx, FFFFFFFF
 
 - 004235BA  |.  F2:AE         repne   scas byte ptr es:[edi]
 
 - 004235BC  |.  F7D1          not     ecx
 
 - 004235BE  |.  49            dec     ecx                              ;  用户名长度
 
 - 004235BF  |.  0F84 54010000 je      00423719                         ;  判断长度是否为0
 
 - 004235C5  |.  8BFA          mov     edi, edx
 
 - 004235C7  |.  83C9 FF       or      ecx, FFFFFFFF
 
 - 004235CA  |.  F2:AE         repne   scas byte ptr es:[edi]
 
 - 004235CC  |.  F7D1          not     ecx
 
 - 004235CE  |.  49            dec     ecx                              ;  假码长度
 
 - 004235CF  |.  0F84 44010000 je      00423719                         ;  判断假码长度是否为0  0的话就跳向失败
 
 - 004235D5  |.  897424 38     mov     dword ptr [esp+38], esi
 
 - 004235D9  |>  8B5424 38     /mov     edx, dword ptr [esp+38]         ;  edx赋值
 
 - 004235DD  |.  8D4C24 34     |lea     ecx, dword ptr [esp+34]
 
 - 004235E1  |.  8A82 CCCD4300 |mov     al, byte ptr [edx+43CDCC]
 
 - 004235E7  |.  884424 18     |mov     byte ptr [esp+18], al
 
 - 004235EB  |.  E8 A6650000   |call    <jmp.&MFC42.#540>
 
 - 004235F0  |.  8BFB          |mov     edi, ebx
 
 - 004235F2  |.  83C9 FF       |or      ecx, FFFFFFFF                   ;  //////////////////////////////////////
 
 - 004235F5  |.  33C0          |xor     eax, eax                        ;  ★注册码第一部分关键点★
 
 - 004235F7  |.  33ED          |xor     ebp, ebp
 
 - 004235F9  |.  F2:AE         |repne   scas byte ptr es:[edi]
 
 - 004235FB  |.  F7D1          |not     ecx                             ;  取用户名长度
 
 - 004235FD  |.  49            |dec     ecx                             ; 
 
 - 004235FE  |.  C64424 2C 02  |mov     byte ptr [esp+2C], 2
 
 - 00423603  |.  74 50         |je      short 00423655
 
 - 00423605  |>  8A0C2B        |/mov     cl, byte ptr [ebx+ebp]         ;   逐个取用户名
 
 - 00423608  |.  33F6          ||xor     esi, esi
 
 - 0042360A  |.  B8 64CD4300   ||mov     eax, 0043CD64                  ;  固定字符串
 
 - 0042360F  |>  3A08          ||/cmp     cl, byte ptr [eax]            ;  在字符串中查找
 
 - 00423611  |.  74 0D         |||je      short 00423620                ;  相等跳出
 
 - 00423613  |.  83C0 02       |||add     eax, 2                        ;  eax+=2
 
 - 00423616  |.  46            |||inc     esi                           ;  esi++ 下面取字符串用
 
 - 00423617  |.  3D CCCD4300   |||cmp     eax, 0043CDCC                 ;  ASCII "vMw"
 
 - 0042361C  |.^ 7C F1         ||\jl      short 0042360F
 
 - 0042361E  |.  EB 11         ||jmp     short 00423631
 
 - 00423620  |>  8A0C75 65CD43>||mov     cl, byte ptr [esi*2+43CD65]    ;  [esi*2]取字符
 
 - 00423627  |.  51            ||push    ecx
 
 - 00423628  |.  8D4C24 38     ||lea     ecx, dword ptr [esp+38]
 
 - 0042362C  |.  E8 F3670000   ||call    <jmp.&MFC42.#940>              ;  取字符后连接字符串
 
 - 00423631  |>  83FE 34       ||cmp     esi, 34
 
 - 00423634  |.  75 0E         ||jnz     short 00423644
 
 - 00423636  |.  8B5424 18     ||mov     edx, dword ptr [esp+18]
 
 - 0042363A  |.  8D4C24 34     ||lea     ecx, dword ptr [esp+34]
 
 - 0042363E  |.  52            ||push    edx
 
 - 0042363F  |.  E8 E0670000   ||call    <jmp.&MFC42.#940>
 
 - 00423644  |>  8BFB          ||mov     edi, ebx
 
 - 00423646  |.  83C9 FF       ||or      ecx, FFFFFFFF
 
 - 00423649  |.  33C0          ||xor     eax, eax
 
 - 0042364B  |.  45            ||inc     ebp
 
 - 0042364C  |.  F2:AE         ||repne   scas byte ptr es:[edi]         ;  取字符串长度
 
 - 0042364E  |.  F7D1          ||not     ecx
 
 - 00423650  |.  49            ||dec     ecx
 
 - 00423651  |.  3BE9          ||cmp     ebp, ecx
 
 - 00423653  |.^ 72 B0         |\jb      short 00423605
 
 - 00423655  |>  8B4424 34     |mov     eax, dword ptr [esp+34]
 
 - 00423659  |.  8B48 F8       |mov     ecx, dword ptr [eax-8]
 
 - 0042365C  |.  83F9 10       |cmp     ecx, 10
 
 - 0042365F  |.  7D 3A         |jge     short 0042369B
 
 - 00423661  |.  8BC1          |mov     eax, ecx
 
 - 00423663  |.  B9 10000000   |mov     ecx, 10
 
 - 00423668  |.  2BC8          |sub     ecx, eax
 
 - 0042366A  |.  8D5424 1C     |lea     edx, dword ptr [esp+1C]
 
 - 0042366E  |.  51            |push    ecx                             ;  ★注册码第二部分关键点★
 
 - 0042366F  |.  52            |push    edx
 
 - 00423670  |.  B9 40D64300   |mov     ecx, 0043D640                   ;  固定字串ESqNCdaYoDciekuS
 
 - 00423675  |.  E8 AC650000   |call    <jmp.&MFC42.#4129>              ;  用用户名长度取字符串
 
 - 0042367A  |.  50            |push    eax
 
 - 0042367B  |.  8D4C24 38     |lea     ecx, dword ptr [esp+38]
 
 - 0042367F  |.  C64424 30 03  |mov     byte ptr [esp+30], 3
 
 - 00423684  |.  E8 95670000   |call    <jmp.&MFC42.#939>               ;  两部分连接
 
 - 00423689  |.  8D4C24 1C     |lea     ecx, dword ptr [esp+1C]
 
 - 0042368D  |.  C64424 2C 02  |mov     byte ptr [esp+2C], 2
 
 - 00423692  |.  E8 F3640000   |call    <jmp.&MFC42.#800>
 
 - 00423697  |.  8B4424 34     |mov     eax, dword ptr [esp+34]
 
 - 0042369B  |>  8B4C24 20     |mov     ecx, dword ptr [esp+20]
 
 - 0042369F  |.  51            |push    ecx                             ; /假码
 
 - 004236A0  |.  50            |push    eax                             ; |连接后的字符串
 
 - 004236A1  |.  FF15 AC064300 |call    dword ptr [<&MSVCRT._mbscmp>]   ; \比较字符串
 
 - 004236A7  |.  83C4 08       |add     esp, 8
 
 - 004236AA  |.  85C0          |test    eax, eax
 
 - 004236AC  |.  74 24         |je      short 004236D2
 
 - 004236AE  |.  8D4C24 34     |lea     ecx, dword ptr [esp+34]
 
 - 004236B2  |.  33F6          |xor     esi, esi
 
 - 004236B4  |.  C64424 2C 01  |mov     byte ptr [esp+2C], 1
 
 - 004236B9  |.  E8 CC640000   |call    <jmp.&MFC42.#800>
 
 - 004236BE  |.  8B4424 38     |mov     eax, dword ptr [esp+38]
 
 - 004236C2  |.  40            |inc     eax
 
 - 004236C3  |.  83F8 03       |cmp     eax, 3
 
 - 004236C6  |.  894424 38     |mov     dword ptr [esp+38], eax
 
 - 004236CA  |.^ 0F8C 09FFFFFF \jl      004235D9
 
 - 004236D0  |.  EB 13         jmp     short 004236E5
 
 - 004236D2  |>  8D4C24 34     lea     ecx, dword ptr [esp+34]
 
 - 004236D6  |.  BE 01000000   mov     esi, 1
 
 - 004236DB  |.  C64424 2C 01  mov     byte ptr [esp+2C], 1
 
 - 004236E0  |.  E8 A5640000   call    <jmp.&MFC42.#800>
 
 - 004236E5  |>  8D4C24 10     lea     ecx, dword ptr [esp+10]
 
 - 004236E9  |.  C64424 2C 00  mov     byte ptr [esp+2C], 0
 
 - 004236EE  |.  E8 97640000   call    <jmp.&MFC42.#800>
 
 - 004236F3  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]
 
 - 004236F7  |.  C74424 2C FFF>mov     dword ptr [esp+2C], -1
 
 - 004236FF  |.  E8 86640000   call    <jmp.&MFC42.#800>
 
 - 00423704  |.  8BC6          mov     eax, esi
 
 - 00423706  |.  5F            pop     edi
 
 - 00423707  |.  5E            pop     esi
 
 - 00423708  |.  5D            pop     ebp
 
 - 00423709  |.  5B            pop     ebx
 
 - 0042370A  |.  8B4C24 14     mov     ecx, dword ptr [esp+14]
 
 - 0042370E  |.  64:890D 00000>mov     dword ptr fs:[0], ecx
 
 - 00423715  |.  83C4 20       add     esp, 20
 
 - 00423718  |.  C3            retn
 
 - 00423719  |>  8D4C24 10     lea     ecx, dword ptr [esp+10]
 
 - 0042371D  |.  C64424 2C 00  mov     byte ptr [esp+2C], 0
 
 - 00423722  |.  E8 63640000   call    <jmp.&MFC42.#800>
 
 - 00423727  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]
 
 - 0042372B  |.  C74424 2C FFF>mov     dword ptr [esp+2C], -1
 
 - 00423733  |.  E8 52640000   call    <jmp.&MFC42.#800>
 
 - 00423738  |.  8B4C24 24     mov     ecx, dword ptr [esp+24]
 
 - 0042373C  |.  5F            pop     edi
 
 - 0042373D  |.  5E            pop     esi
 
 - 0042373E  |.  5D            pop     ebp
 
 - 0042373F  |.  33C0          xor     eax, eax
 
 - 00423741  |.  5B            pop     ebx
 
 - 00423742  |.  64:890D 00000>mov     dword ptr fs:[0], ecx
 
 - 00423749  |.  83C4 20       add     esp, 20
 
 - 0042374C  \.  C3            retn
 
  
 
- }
 
 - 004237D3  |.  83C4 08       add     esp, 8
 
 - 004237D6  |.  F7D8          neg     eax
 
 - 004237D8  |.  5F            pop     edi
 
 - 004237D9  |.  5E            pop     esi
 
 - 004237DA  |.  1BC0          sbb     eax, eax
 
 - 004237DC  |.  5D            pop     ebp
 
 - 004237DD  |.  F7D8          neg     eax
 
 - 004237DF  |.  5B            pop     ebx
 
 - 004237E0  |.  C3            retn
 
 - 004237E1  |>  5F            pop     edi
 
 - 004237E2  |.  5E            pop     esi
 
 - 004237E3  |.  5D            pop     ebp
 
 - 004237E4  |.  33C0          xor     eax, eax
 
 - 004237E6  |.  5B            pop     ebx
 
 - 004237E7  \.  C3            retn
 
 
  复制代码 【破解总结】 
-------------------------------------------------------------- 
【算法总结】 
将"aGbmcldSemfkgEhcixjsktlYmbnkoDptqarfswtlujvDwIxPyZzXAPBoCKDgEyFmGtHaIrJqKNLQMUNuOGPJQLRnSbTCUFVHWoXwYEZpvMw"和"ESqNCdaYoDciekuS"与用户名运算得到注册码 
-------------------------------------------------------------- 
【算法注册机】 
- void CKeyGenVideoDlg::OnKeyGen() 
 
 - {
 
 -         // TODO: Add your control notification handler code here
 
 -         CString str="aGbmcldSemfkgEhcixjsktlYmbnkoDptqarfswtlujvDwIxPyZzXAPBoCKDgEyFmGtHaIrJqKNLQMUNuOGPJQLRnSbTCUFVHWoXwYEZpvMw";
 
 -         CString str1="ESqNCdaYoDciekuS";
 
 -         CString serial;
 
 -         int nameLen,strLen;
 
 -         UpdateData(true);
 
 -         nameLen=m_name.GetLength();
 
 -         strLen=str.GetLength();
 
 -         for(int i=0;i<nameLen;i++)
 
 -         {
 
 -                 for(int j=0;j<strLen;j+=2)
 
 -                 {
 
 -                         if(m_name.GetAt(i)==str.GetAt(j))
 
 -                         {
 
 -                                 serial.Insert(serial.GetLength(),str.GetAt(j+1));
 
 -                                 break;
 
 -                         }
 
  
-                 }
 
 -         }
 
  
-         m_serial=serial+str1.Mid(0,16-nameLen);
 
 -         UpdateData(false);
 
 - }
 
 
  复制代码 【注册信息】 
用户名:creantan 
注册码:lfmGklGkESqNCdaY 
 
-------------------------------------------------------------- 
【版权声明】本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! |   
 
 
 
 |