飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 7387|回复: 4

[原创] Power Video Converter 2.2.1 算法分析

[复制链接]
  • TA的每日心情
    奋斗
    2015-10-29 08:08
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2009-1-20 12:16:16 | 显示全部楼层 |阅读模式
    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
    断点后回到用户代码,向上找到关键算法。。。。

    1. 00423750  /$  53            push    ebx
    2. 00423751  |.  55            push    ebp                              ;  
    3. 00423752  |.  8B6C24 0C     mov     ebp, dword ptr [esp+C]
    4. 00423756  |.  56            push    esi
    5. 00423757  |.  57            push    edi
    6. 00423758  |.  BE ECD24300   mov     esi, 0043D2EC
    7. 0042375D  |.  8BC5          mov     eax, ebp
    8. 0042375F  |>  8A10          /mov     dl, byte ptr [eax]              ;  判断用户名是否为空
    9. 00423761  |.  8A1E          |mov     bl, byte ptr [esi]
    10. 00423763  |.  8ACA          |mov     cl, dl
    11. 00423765  |.  3AD3          |cmp     dl, bl
    12. 00423767  |.  75 1E         |jnz     short 00423787
    13. 00423769  |.  84C9          |test    cl, cl
    14. 0042376B  |.  74 16         |je      short 00423783
    15. 0042376D  |.  8A50 01       |mov     dl, byte ptr [eax+1]
    16. 00423770  |.  8A5E 01       |mov     bl, byte ptr [esi+1]
    17. 00423773  |.  8ACA          |mov     cl, dl
    18. 00423775  |.  3AD3          |cmp     dl, bl
    19. 00423777  |.  75 0E         |jnz     short 00423787
    20. 00423779  |.  83C0 02       |add     eax, 2
    21. 0042377C  |.  83C6 02       |add     esi, 2
    22. 0042377F  |.  84C9          |test    cl, cl
    23. 00423781  |.^ 75 DC         \jnz     short 0042375F
    24. 00423783  |>  33C0          xor     eax, eax
    25. 00423785  |.  EB 05         jmp     short 0042378C
    26. 00423787  |>  1BC0          sbb     eax, eax
    27. 00423789  |.  83D8 FF       sbb     eax, -1
    28. 0042378C  |>  85C0          test    eax, eax
    29. 0042378E  |.  74 51         je      short 004237E1
    30. 00423790  |.  8B7C24 18     mov     edi, dword ptr [esp+18]
    31. 00423794  |.  BE ECD24300   mov     esi, 0043D2EC
    32. 00423799  |.  8BC7          mov     eax, edi
    33. 0042379B  |>  8A10          /mov     dl, byte ptr [eax]              ;  判断假码是否为空
    34. 0042379D  |.  8A1E          |mov     bl, byte ptr [esi]
    35. 0042379F  |.  8ACA          |mov     cl, dl
    36. 004237A1  |.  3AD3          |cmp     dl, bl
    37. 004237A3  |.  75 1E         |jnz     short 004237C3
    38. 004237A5  |.  84C9          |test    cl, cl
    39. 004237A7  |.  74 16         |je      short 004237BF
    40. 004237A9  |.  8A50 01       |mov     dl, byte ptr [eax+1]
    41. 004237AC  |.  8A5E 01       |mov     bl, byte ptr [esi+1]
    42. 004237AF  |.  8ACA          |mov     cl, dl
    43. 004237B1  |.  3AD3          |cmp     dl, bl
    44. 004237B3  |.  75 0E         |jnz     short 004237C3
    45. 004237B5  |.  83C0 02       |add     eax, 2
    46. 004237B8  |.  83C6 02       |add     esi, 2
    47. 004237BB  |.  84C9          |test    cl, cl
    48. 004237BD  |.^ 75 DC         \jnz     short 0042379B
    49. 004237BF  |>  33C0          xor     eax, eax
    50. 004237C1  |.  EB 05         jmp     short 004237C8
    51. 004237C3  |>  1BC0          sbb     eax, eax
    52. 004237C5  |.  83D8 FF       sbb     eax, -1
    53. 004237C8  |>  85C0          test    eax, eax
    54. 004237CA  |.  74 15         je      short 004237E1
    55. 004237CC  |.  57            push    edi                              ;  假码入栈
    56. 004237CD  |.  55            push    ebp                              ;  用户名入栈
    57. 004237CE  |.  E8 3DFDFFFF   call    00423510        ;关键算法
    58. {
    59. 00423510  /$  6A FF         push    -1
    60. 00423512  |.  68 D0EE4200   push    0042EED0                         ;  SE 处理程序安装
    61. 00423517  |.  64:A1 0000000>mov     eax, dword ptr fs:[0]
    62. 0042351D  |.  50            push    eax
    63. 0042351E  |.  64:8925 00000>mov     dword ptr fs:[0], esp
    64. 00423525  |.  83EC 14       sub     esp, 14
    65. 00423528  |.  8B4424 24     mov     eax, dword ptr [esp+24]
    66. 0042352C  |.  53            push    ebx
    67. 0042352D  |.  55            push    ebp
    68. 0042352E  |.  56            push    esi
    69. 0042352F  |.  57            push    edi
    70. 00423530  |.  50            push    eax
    71. 00423531  |.  8D4C24 18     lea     ecx, dword ptr [esp+18]
    72. 00423535  |.  E8 0E690000   call    <jmp.&MFC42.#537>
    73. 0042353A  |.  33F6          xor     esi, esi
    74. 0042353C  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]
    75. 00423540  |.  897424 2C     mov     dword ptr [esp+2C], esi
    76. 00423544  |.  E8 C56C0000   call    <jmp.&MFC42.#6282>
    77. 00423549  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]
    78. 0042354D  |.  E8 B66C0000   call    <jmp.&MFC42.#6283>
    79. 00423552  |.  6A 20         push    20
    80. 00423554  |.  8D4C24 18     lea     ecx, dword ptr [esp+18]
    81. 00423558  |.  E8 A96B0000   call    <jmp.&MFC42.#2915>
    82. 0042355D  |.  8B4C24 38     mov     ecx, dword ptr [esp+38]          ;  取假码
    83. 00423561  |.  8BD8          mov     ebx, eax
    84. 00423563  |.  51            push    ecx
    85. 00423564  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]
    86. 00423568  |.  E8 DB680000   call    <jmp.&MFC42.#537>
    87. 0042356D  |.  8D4C24 10     lea     ecx, dword ptr [esp+10]
    88. 00423571  |.  C64424 2C 01  mov     byte ptr [esp+2C], 1
    89. 00423576  |.  E8 936C0000   call    <jmp.&MFC42.#6282>
    90. 0042357B  |.  8D4C24 10     lea     ecx, dword ptr [esp+10]
    91. 0042357F  |.  E8 846C0000   call    <jmp.&MFC42.#6283>
    92. 00423584  |.  6A 20         push    20
    93. 00423586  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]
    94. 0042358A  |.  E8 776B0000   call    <jmp.&MFC42.#2915>               ;  取假码
    95. 0042358F  |.  8BD0          mov     edx, eax
    96. 00423591  |.  83C9 FF       or      ecx, FFFFFFFF
    97. 00423594  |.  8BFA          mov     edi, edx
    98. 00423596  |.  33C0          xor     eax, eax
    99. 00423598  |.  F2:AE         repne   scas byte ptr es:[edi]
    100. 0042359A  |.  F7D1          not     ecx
    101. 0042359C  |.  49            dec     ecx                              ;  取假码长度
    102. 0042359D  |.  8BFB          mov     edi, ebx
    103. 0042359F  |.  8BE9          mov     ebp, ecx
    104. 004235A1  |.  83C9 FF       or      ecx, FFFFFFFF
    105. 004235A4  |.  F2:AE         repne   scas byte ptr es:[edi]
    106. 004235A6  |.  F7D1          not     ecx
    107. 004235A8  |.  49            dec     ecx                              ;  取用户名长度
    108. 004235A9  |.  895424 20     mov     dword ptr [esp+20], edx
    109. 004235AD  |.  3BCD          cmp     ecx, ebp
    110. 004235AF  |.  0F87 64010000 ja      00423719                         ;  用户名长度与假码长度比较
    111. 004235B5  |.  8BFB          mov     edi, ebx                         ;  假码长度不能小于用户名
    112. 004235B7  |.  83C9 FF       or      ecx, FFFFFFFF
    113. 004235BA  |.  F2:AE         repne   scas byte ptr es:[edi]
    114. 004235BC  |.  F7D1          not     ecx
    115. 004235BE  |.  49            dec     ecx                              ;  用户名长度
    116. 004235BF  |.  0F84 54010000 je      00423719                         ;  判断长度是否为0
    117. 004235C5  |.  8BFA          mov     edi, edx
    118. 004235C7  |.  83C9 FF       or      ecx, FFFFFFFF
    119. 004235CA  |.  F2:AE         repne   scas byte ptr es:[edi]
    120. 004235CC  |.  F7D1          not     ecx
    121. 004235CE  |.  49            dec     ecx                              ;  假码长度
    122. 004235CF  |.  0F84 44010000 je      00423719                         ;  判断假码长度是否为0  0的话就跳向失败
    123. 004235D5  |.  897424 38     mov     dword ptr [esp+38], esi
    124. 004235D9  |>  8B5424 38     /mov     edx, dword ptr [esp+38]         ;  edx赋值
    125. 004235DD  |.  8D4C24 34     |lea     ecx, dword ptr [esp+34]
    126. 004235E1  |.  8A82 CCCD4300 |mov     al, byte ptr [edx+43CDCC]
    127. 004235E7  |.  884424 18     |mov     byte ptr [esp+18], al
    128. 004235EB  |.  E8 A6650000   |call    <jmp.&MFC42.#540>
    129. 004235F0  |.  8BFB          |mov     edi, ebx
    130. 004235F2  |.  83C9 FF       |or      ecx, FFFFFFFF                   ;  //////////////////////////////////////
    131. 004235F5  |.  33C0          |xor     eax, eax                        ;  ★注册码第一部分关键点★
    132. 004235F7  |.  33ED          |xor     ebp, ebp
    133. 004235F9  |.  F2:AE         |repne   scas byte ptr es:[edi]
    134. 004235FB  |.  F7D1          |not     ecx                             ;  取用户名长度
    135. 004235FD  |.  49            |dec     ecx                             ;
    136. 004235FE  |.  C64424 2C 02  |mov     byte ptr [esp+2C], 2
    137. 00423603  |.  74 50         |je      short 00423655
    138. 00423605  |>  8A0C2B        |/mov     cl, byte ptr [ebx+ebp]         ;   逐个取用户名
    139. 00423608  |.  33F6          ||xor     esi, esi
    140. 0042360A  |.  B8 64CD4300   ||mov     eax, 0043CD64                  ;  固定字符串
    141. 0042360F  |>  3A08          ||/cmp     cl, byte ptr [eax]            ;  在字符串中查找
    142. 00423611  |.  74 0D         |||je      short 00423620                ;  相等跳出
    143. 00423613  |.  83C0 02       |||add     eax, 2                        ;  eax+=2
    144. 00423616  |.  46            |||inc     esi                           ;  esi++ 下面取字符串用
    145. 00423617  |.  3D CCCD4300   |||cmp     eax, 0043CDCC                 ;  ASCII "vMw"
    146. 0042361C  |.^ 7C F1         ||\jl      short 0042360F
    147. 0042361E  |.  EB 11         ||jmp     short 00423631
    148. 00423620  |>  8A0C75 65CD43>||mov     cl, byte ptr [esi*2+43CD65]    ;  [esi*2]取字符
    149. 00423627  |.  51            ||push    ecx
    150. 00423628  |.  8D4C24 38     ||lea     ecx, dword ptr [esp+38]
    151. 0042362C  |.  E8 F3670000   ||call    <jmp.&MFC42.#940>              ;  取字符后连接字符串
    152. 00423631  |>  83FE 34       ||cmp     esi, 34
    153. 00423634  |.  75 0E         ||jnz     short 00423644
    154. 00423636  |.  8B5424 18     ||mov     edx, dword ptr [esp+18]
    155. 0042363A  |.  8D4C24 34     ||lea     ecx, dword ptr [esp+34]
    156. 0042363E  |.  52            ||push    edx
    157. 0042363F  |.  E8 E0670000   ||call    <jmp.&MFC42.#940>
    158. 00423644  |>  8BFB          ||mov     edi, ebx
    159. 00423646  |.  83C9 FF       ||or      ecx, FFFFFFFF
    160. 00423649  |.  33C0          ||xor     eax, eax
    161. 0042364B  |.  45            ||inc     ebp
    162. 0042364C  |.  F2:AE         ||repne   scas byte ptr es:[edi]         ;  取字符串长度
    163. 0042364E  |.  F7D1          ||not     ecx
    164. 00423650  |.  49            ||dec     ecx
    165. 00423651  |.  3BE9          ||cmp     ebp, ecx
    166. 00423653  |.^ 72 B0         |\jb      short 00423605
    167. 00423655  |>  8B4424 34     |mov     eax, dword ptr [esp+34]
    168. 00423659  |.  8B48 F8       |mov     ecx, dword ptr [eax-8]
    169. 0042365C  |.  83F9 10       |cmp     ecx, 10
    170. 0042365F  |.  7D 3A         |jge     short 0042369B
    171. 00423661  |.  8BC1          |mov     eax, ecx
    172. 00423663  |.  B9 10000000   |mov     ecx, 10
    173. 00423668  |.  2BC8          |sub     ecx, eax
    174. 0042366A  |.  8D5424 1C     |lea     edx, dword ptr [esp+1C]
    175. 0042366E  |.  51            |push    ecx                             ;  ★注册码第二部分关键点★
    176. 0042366F  |.  52            |push    edx
    177. 00423670  |.  B9 40D64300   |mov     ecx, 0043D640                   ;  固定字串ESqNCdaYoDciekuS
    178. 00423675  |.  E8 AC650000   |call    <jmp.&MFC42.#4129>              ;  用用户名长度取字符串
    179. 0042367A  |.  50            |push    eax
    180. 0042367B  |.  8D4C24 38     |lea     ecx, dword ptr [esp+38]
    181. 0042367F  |.  C64424 30 03  |mov     byte ptr [esp+30], 3
    182. 00423684  |.  E8 95670000   |call    <jmp.&MFC42.#939>               ;  两部分连接
    183. 00423689  |.  8D4C24 1C     |lea     ecx, dword ptr [esp+1C]
    184. 0042368D  |.  C64424 2C 02  |mov     byte ptr [esp+2C], 2
    185. 00423692  |.  E8 F3640000   |call    <jmp.&MFC42.#800>
    186. 00423697  |.  8B4424 34     |mov     eax, dword ptr [esp+34]
    187. 0042369B  |>  8B4C24 20     |mov     ecx, dword ptr [esp+20]
    188. 0042369F  |.  51            |push    ecx                             ; /假码
    189. 004236A0  |.  50            |push    eax                             ; |连接后的字符串
    190. 004236A1  |.  FF15 AC064300 |call    dword ptr [<&MSVCRT._mbscmp>]   ; \比较字符串
    191. 004236A7  |.  83C4 08       |add     esp, 8
    192. 004236AA  |.  85C0          |test    eax, eax
    193. 004236AC  |.  74 24         |je      short 004236D2
    194. 004236AE  |.  8D4C24 34     |lea     ecx, dword ptr [esp+34]
    195. 004236B2  |.  33F6          |xor     esi, esi
    196. 004236B4  |.  C64424 2C 01  |mov     byte ptr [esp+2C], 1
    197. 004236B9  |.  E8 CC640000   |call    <jmp.&MFC42.#800>
    198. 004236BE  |.  8B4424 38     |mov     eax, dword ptr [esp+38]
    199. 004236C2  |.  40            |inc     eax
    200. 004236C3  |.  83F8 03       |cmp     eax, 3
    201. 004236C6  |.  894424 38     |mov     dword ptr [esp+38], eax
    202. 004236CA  |.^ 0F8C 09FFFFFF \jl      004235D9
    203. 004236D0  |.  EB 13         jmp     short 004236E5
    204. 004236D2  |>  8D4C24 34     lea     ecx, dword ptr [esp+34]
    205. 004236D6  |.  BE 01000000   mov     esi, 1
    206. 004236DB  |.  C64424 2C 01  mov     byte ptr [esp+2C], 1
    207. 004236E0  |.  E8 A5640000   call    <jmp.&MFC42.#800>
    208. 004236E5  |>  8D4C24 10     lea     ecx, dword ptr [esp+10]
    209. 004236E9  |.  C64424 2C 00  mov     byte ptr [esp+2C], 0
    210. 004236EE  |.  E8 97640000   call    <jmp.&MFC42.#800>
    211. 004236F3  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]
    212. 004236F7  |.  C74424 2C FFF>mov     dword ptr [esp+2C], -1
    213. 004236FF  |.  E8 86640000   call    <jmp.&MFC42.#800>
    214. 00423704  |.  8BC6          mov     eax, esi
    215. 00423706  |.  5F            pop     edi
    216. 00423707  |.  5E            pop     esi
    217. 00423708  |.  5D            pop     ebp
    218. 00423709  |.  5B            pop     ebx
    219. 0042370A  |.  8B4C24 14     mov     ecx, dword ptr [esp+14]
    220. 0042370E  |.  64:890D 00000>mov     dword ptr fs:[0], ecx
    221. 00423715  |.  83C4 20       add     esp, 20
    222. 00423718  |.  C3            retn
    223. 00423719  |>  8D4C24 10     lea     ecx, dword ptr [esp+10]
    224. 0042371D  |.  C64424 2C 00  mov     byte ptr [esp+2C], 0
    225. 00423722  |.  E8 63640000   call    <jmp.&MFC42.#800>
    226. 00423727  |.  8D4C24 14     lea     ecx, dword ptr [esp+14]
    227. 0042372B  |.  C74424 2C FFF>mov     dword ptr [esp+2C], -1
    228. 00423733  |.  E8 52640000   call    <jmp.&MFC42.#800>
    229. 00423738  |.  8B4C24 24     mov     ecx, dword ptr [esp+24]
    230. 0042373C  |.  5F            pop     edi
    231. 0042373D  |.  5E            pop     esi
    232. 0042373E  |.  5D            pop     ebp
    233. 0042373F  |.  33C0          xor     eax, eax
    234. 00423741  |.  5B            pop     ebx
    235. 00423742  |.  64:890D 00000>mov     dword ptr fs:[0], ecx
    236. 00423749  |.  83C4 20       add     esp, 20
    237. 0042374C  \.  C3            retn


    238. }
    239. 004237D3  |.  83C4 08       add     esp, 8
    240. 004237D6  |.  F7D8          neg     eax
    241. 004237D8  |.  5F            pop     edi
    242. 004237D9  |.  5E            pop     esi
    243. 004237DA  |.  1BC0          sbb     eax, eax
    244. 004237DC  |.  5D            pop     ebp
    245. 004237DD  |.  F7D8          neg     eax
    246. 004237DF  |.  5B            pop     ebx
    247. 004237E0  |.  C3            retn
    248. 004237E1  |>  5F            pop     edi
    249. 004237E2  |.  5E            pop     esi
    250. 004237E3  |.  5D            pop     ebp
    251. 004237E4  |.  33C0          xor     eax, eax
    252. 004237E6  |.  5B            pop     ebx
    253. 004237E7  \.  C3            retn
    复制代码
    【破解总结】
    --------------------------------------------------------------
    【算法总结】
    将"aGbmcldSemfkgEhcixjsktlYmbnkoDptqarfswtlujvDwIxPyZzXAPBoCKDgEyFmGtHaIrJqKNLQMUNuOGPJQLRnSbTCUFVHWoXwYEZpvMw"和"ESqNCdaYoDciekuS"与用户名运算得到注册码
    --------------------------------------------------------------
    【算法注册机

    1. void CKeyGenVideoDlg::OnKeyGen()
    2. {
    3.         // TODO: Add your control notification handler code here
    4.         CString str="aGbmcldSemfkgEhcixjsktlYmbnkoDptqarfswtlujvDwIxPyZzXAPBoCKDgEyFmGtHaIrJqKNLQMUNuOGPJQLRnSbTCUFVHWoXwYEZpvMw";
    5.         CString str1="ESqNCdaYoDciekuS";
    6.         CString serial;
    7.         int nameLen,strLen;
    8.         UpdateData(true);
    9.         nameLen=m_name.GetLength();
    10.         strLen=str.GetLength();
    11.         for(int i=0;i<nameLen;i++)
    12.         {
    13.                 for(int j=0;j<strLen;j+=2)
    14.                 {
    15.                         if(m_name.GetAt(i)==str.GetAt(j))
    16.                         {
    17.                                 serial.Insert(serial.GetLength(),str.GetAt(j+1));
    18.                                 break;
    19.                         }

    20.                 }
    21.         }

    22.         m_serial=serial+str1.Mid(0,16-nameLen);
    23.         UpdateData(false);
    24. }
    复制代码
    【注册信息】
    用户名:creantan
    注册码:lfmGklGkESqNCdaY

    --------------------------------------------------------------
    【版权声明】本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2017-5-3 20:51
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-1-21 19:17:04 | 显示全部楼层
    不错,支持一下
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    前天 10:56
  • 签到天数: 1696 天

    [LV.Master]伴坛终老

    发表于 2009-1-21 19:30:59 | 显示全部楼层
    支持楼主,要是能分析出这个商的注册码就好了。
    http://www.嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻.com/

    评分

    参与人数 1威望 -4 收起 理由
    Nisy -4 请勿发布涉及“申请破解”信息!

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-1-21 20:10:05 | 显示全部楼层
    学习一下 感谢楼主分享 ~~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-1-21 22:21:05 | 显示全部楼层
    向楼主学习了
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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