飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4244|回复: 4

[原创] Ideal DVD to PSP Converter 2.1.1算法分析

[复制链接]
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2009-12-7 22:08:44 | 显示全部楼层 |阅读模式
    【破文标题】Ideal DVD to PSP Converter 2.1.1算法分析
    【破文作者】tianxj
    【作者邮箱】[email protected]
    【作者主页】WwW.ChiNaPYG.CoM
    破解工具】PEiD,OD,DeDe
    【破解平台】Windows XP sp3
    【软件名称】Ideal DVD to PSP Converter 2.1.1
    【软件大小】1691KB
    【软件语言】英文
    【软件类别】国外软件/视频转换
    【软件授权】共享版
    【运行环境】Win9x/Me/NT/2000/XP/2003
    【更新时间】2009-11-3
    【原版下载】http://www.onlinedown.net/soft/73855.htm
    【保护方式】注册码
    【软件简介】理想的DVD转换是一种简单和强大的DVD到掌机转换。它可以转换任何DVD电影格式,以掌机高视频质量和快速的转换速度。它还可以传输转换的MP4档案到您的索尼PSP。
    【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
    --------------------------------------------------------------
    【破解内容】
    --------------------------------------------------------------
    **************************************************************
    一、对IdealDVD2PSP.exe查壳为Microsoft Visual C++ 6.0
    **************************************************************
    二、用F12暂停法就可以快速到达关键部位

    1. 004138B9    E8 FA1FFFFF     call    004058B8
    2. 004138BE    8BF8            mov     edi, eax
    3. 004138C0    6A 00           push    0
    4. 004138C2    8D4D CC         lea     ecx, dword ptr [ebp-34]
    5. 004138C5    E8 4E4F0600     call    <jmp.&MFC42.#CString::GetBuffer_>
    6. 004138CA    8BF0            mov     esi, eax
    7. 004138CC    6A 00           push    0
    8. 004138CE    8D4D D4         lea     ecx, dword ptr [ebp-2C]
    9. 004138D1    E8 424F0600     call    <jmp.&MFC42.#CString::GetBuffer_>
    10. 004138D6    50              push    eax                              ; //试炼码
    11. 004138D7    56              push    esi                              ; //用户名
    12. 004138D8    8BCF            mov     ecx, edi
    13. 004138DA    E8 591DFFFF     call    00405638                         ; //关键CALL
    14. 004138DF    85C0            test    eax, eax
    15. 004138E1    75 5F           jnz     short 00413942                   ; //关键跳转
    16. 004138E3    6A 30           push    30
    17. 004138E5    6A 00           push    0
    18. 004138E7    68 C0C84A00     push    004AC8C0                         ; ASCII "The registration code isn't correct. We strongly recommend you copy and then paste it to the register window!"
    19. 004138EC    E8 875B0000     call    00419478
    20. 004138F1    83C4 0C         add     esp, 0C
    21. 004138F4    68 44C04A00     push    004AC044
    22. 004138F9    8B4D E8         mov     ecx, dword ptr [ebp-18]
    23. 004138FC    E8 B54D0600     call    <jmp.&MFC42.#CWnd::SetWindowText>
    24. 00413901    68 44C04A00     push    004AC044
    25. 00413906    8BCB            mov     ecx, ebx
    26. 00413908    E8 A94D0600     call    <jmp.&MFC42.#CWnd::SetWindowText>
    27. 0041390D    C745 D8 0000000>mov     dword ptr [ebp-28], 0
    28. 00413914    8D4D D4         lea     ecx, dword ptr [ebp-2C]
    29. 00413917    E8 9C4B0600     call    <jmp.&MFC42.#CString::~CString_8>
    30. 0041391C    C745 D0 0000000>mov     dword ptr [ebp-30], 0
    31. 00413923    8D4D CC         lea     ecx, dword ptr [ebp-34]
    32. 00413926    E8 8D4B0600     call    <jmp.&MFC42.#CString::~CString_8>
    33. 0041392B    8B7D DC         mov     edi, dword ptr [ebp-24]
    34. 0041392E    8B75 E0         mov     esi, dword ptr [ebp-20]
    35. 00413931    8B5D E4         mov     ebx, dword ptr [ebp-1C]
    36. 00413934    8B4D F4         mov     ecx, dword ptr [ebp-C]
    37. 00413937    64:890D 0000000>mov     dword ptr fs:[0], ecx
    38. 0041393E    8BE5            mov     esp, ebp
    39. 00413940    5D              pop     ebp
    40. 00413941    C3              retn
    41. 00413942    8D45 B4         lea     eax, dword ptr [ebp-4C]
    42. 00413945    50              push    eax
    43. 00413946    E8 85670100     call    0042A0D0
    44. 0041394B    59              pop     ecx
    45. 0041394C    C745 FC 0300000>mov     dword ptr [ebp-4], 3
    46. 00413953    6A 30           push    30
    47. 00413955    6A 00           push    0
    48. 00413957    FF75 B4         push    dword ptr [ebp-4C]
    49. 0041395A    E8 195B0000     call    00419478
    50. 0041395F    83C4 0C         add     esp, 0C
    51. 00413962    C745 FC 0100000>mov     dword ptr [ebp-4], 1
    52. 00413969    8D4D B4         lea     ecx, dword ptr [ebp-4C]
    53. 0041396C    E8 474B0600     call    <jmp.&MFC42.#CString::~CString_8>
    54. 00413971  ^ E9 4AFEFFFF     jmp     004137C0
    55. 00413976    90              nop
    56. 00413977    90              nop
    57. 00413978    B8 D8A14800     mov     eax, 0048A1D8
    58. 0041397D    C3              retn
    59. =========================================================
    60. 00405638    57              push    edi
    61. 00405639    56              push    esi
    62. 0040563A    53              push    ebx
    63. 0040563B    81EC 00020000   sub     esp, 200
    64. 00405641    8BBC24 10020000 mov     edi, dword ptr [esp+210]         ; //用户名
    65. 00405648    33C0            xor     eax, eax
    66. 0040564A    8A37            mov     dh, byte ptr [edi]
    67. 0040564C    8BCF            mov     ecx, edi
    68. 0040564E    84F6            test    dh, dh
    69. 00405650    74 0C           je      short 0040565E
    70. 00405652    83C1 01         add     ecx, 1
    71. 00405655    83C0 01         add     eax, 1
    72. 00405658    8A11            mov     dl, byte ptr [ecx]
    73. 0040565A    84D2            test    dl, dl
    74. 0040565C  ^ 75 F4           jnz     short 00405652
    75. 0040565E    8BD0            mov     edx, eax                         ; //用户名长度
    76. 00405660    85D2            test    edx, edx
    77. 00405662    0F8E 40010000   jle     004057A8                         ; //用户名为空则跳
    78. 00405668    8BBC24 10020000 mov     edi, dword ptr [esp+210]
    79. 0040566F    33DB            xor     ebx, ebx
    80. 00405671    33C0            xor     eax, eax
    81. 00405673    0FBE3438        movsx   esi, byte ptr [eax+edi]          ; //逐位取用户名
    82. 00405677    8BCA            mov     ecx, edx                         ; //用户名长度
    83. 00405679    2BC8            sub     ecx, eax                         ; //用户名长度减去已循环次数
    84. 0040567B    0FAFF1          imul    esi, ecx                         ; //esi=esi*ecx
    85. 0040567E    83C0 01         add     eax, 1                           ; //计数器+1
    86. 00405681    03DE            add     ebx, esi                         ; //累加到ebx
    87. 00405683    0FB7DB          movzx   ebx, bx
    88. 00405686    3BC2            cmp     eax, edx
    89. 00405688  ^ 7C E9           jl      short 00405673                   ; //循环
    90. 0040568A    8BBC24 14020000 mov     edi, dword ptr [esp+214]         ; //试炼码
    91. 00405691    33C0            xor     eax, eax
    92. 00405693    8A37            mov     dh, byte ptr [edi]
    93. 00405695    8BCF            mov     ecx, edi
    94. 00405697    84F6            test    dh, dh
    95. 00405699    74 0C           je      short 004056A7
    96. 0040569B    83C1 01         add     ecx, 1
    97. 0040569E    83C0 01         add     eax, 1
    98. 004056A1    8A11            mov     dl, byte ptr [ecx]
    99. 004056A3    84D2            test    dl, dl
    100. 004056A5  ^ 75 F4           jnz     short 0040569B
    101. 004056A7    83F8 14         cmp     eax, 14
    102. 004056AA    74 0E           je      short 004056BA                   ; //注册码必须是20位
    103. 004056AC    33C0            xor     eax, eax
    104. 004056AE    81C4 00020000   add     esp, 200
    105. 004056B4    5B              pop     ebx
    106. 004056B5    5E              pop     esi
    107. 004056B6    5F              pop     edi
    108. 004056B7    C2 0800         retn    8
    109. 004056BA    8D3C24          lea     edi, dword ptr [esp]
    110. 004056BD    33C0            xor     eax, eax
    111. 004056BF    B9 00010000     mov     ecx, 100
    112. 004056C4    25 FFFF0000     and     eax, 0FFFF
    113. 004056C9    8AE0            mov     ah, al
    114. 004056CB    8BF1            mov     esi, ecx
    115. 004056CD    8BD0            mov     edx, eax
    116. 004056CF    C1E0 10         shl     eax, 10
    117. 004056D2    C1E9 02         shr     ecx, 2
    118. 004056D5    0BC2            or      eax, edx
    119. 004056D7    F3:AB           rep     stos dword ptr es:[edi]
    120. 004056D9    8BCE            mov     ecx, esi
    121. 004056DB    83E1 03         and     ecx, 3
    122. 004056DE    F3:AA           rep     stos byte ptr es:[edi]
    123. 004056E0    8DBC24 00010000 lea     edi, dword ptr [esp+100]
    124. 004056E7    33C0            xor     eax, eax
    125. 004056E9    B9 00010000     mov     ecx, 100
    126. 004056EE    25 FFFF0000     and     eax, 0FFFF
    127. 004056F3    8AE0            mov     ah, al
    128. 004056F5    8BF1            mov     esi, ecx
    129. 004056F7    8BD0            mov     edx, eax
    130. 004056F9    C1E0 10         shl     eax, 10
    131. 004056FC    C1E9 02         shr     ecx, 2
    132. 004056FF    0BC2            or      eax, edx
    133. 00405701    F3:AB           rep     stos dword ptr es:[edi]
    134. 00405703    8BCE            mov     ecx, esi
    135. 00405705    83E1 03         and     ecx, 3
    136. 00405708    F3:AA           rep     stos byte ptr es:[edi]
    137. 0040570A    8D0424          lea     eax, dword ptr [esp]
    138. 0040570D    53              push    ebx
    139. 0040570E    68 44C34A00     push    004AC344                         ; ASCII "%04X"
    140. 00405713    50              push    eax
    141. 00405714    FF15 E4974800   call    dword ptr [<&MSVCRT.sprintf>]    ; MSVCRT.sprintf  //将ebx格式化输出
    142. 0040571A    8B9C24 20020000 mov     ebx, dword ptr [esp+220]         ; //试炼码
    143. 00405721    8BB424 20020000 mov     esi, dword ptr [esp+220]
    144. 00405728    8BBC24 20020000 mov     edi, dword ptr [esp+220]
    145. 0040572F    8D8C24 0C010000 lea     ecx, dword ptr [esp+10C]
    146. 00405736    0FBE53 07       movsx   edx, byte ptr [ebx+7]            ; //试炼码第8位
    147. 0040573A    0FBE46 13       movsx   eax, byte ptr [esi+13]           ; //试炼码第20位
    148. 0040573E    8B9C24 20020000 mov     ebx, dword ptr [esp+220]
    149. 00405745    0FBE77 0E       movsx   esi, byte ptr [edi+E]            ; //试炼码第15位
    150. 00405749    0FBE5B 12       movsx   ebx, byte ptr [ebx+12]           ; //试炼码第19位
    151. 0040574D    53              push    ebx
    152. 0040574E    56              push    esi
    153. 0040574F    50              push    eax
    154. 00405750    52              push    edx
    155. 00405751    68 4CC34A00     push    004AC34C                         ; ASCII "%c%c%c%c"
    156. 00405756    51              push    ecx
    157. 00405757    FF15 E4974800   call    dword ptr [<&MSVCRT.sprintf>]    ; MSVCRT.sprintf
    158. 0040575D    83C4 24         add     esp, 24
    159. 00405760    8D3C24          lea     edi, dword ptr [esp]
    160. 00405763    8DB424 00010000 lea     esi, dword ptr [esp+100]
    161. 0040576A    8A17            mov     dl, byte ptr [edi]               ; //格式化字符串第1位、第3位
    162. 0040576C    3A16            cmp     dl, byte ptr [esi]               ; //试炼码第8位、第15位
    163. 0040576E    75 1A           jnz     short 0040578A
    164. 00405770    0AD2            or      dl, dl
    165. 00405772    74 12           je      short 00405786
    166. 00405774    8A57 01         mov     dl, byte ptr [edi+1]             ; //格式化字符串第2位、第4位
    167. 00405777    3A56 01         cmp     dl, byte ptr [esi+1]             ; //试炼码第20位、第19位
    168. 0040577A    75 0E           jnz     short 0040578A
    169. 0040577C    83C7 02         add     edi, 2
    170. 0040577F    83C6 02         add     esi, 2
    171. 00405782    0AD2            or      dl, dl
    172. 00405784  ^ 75 E4           jnz     short 0040576A                   ; //循环比较
    173. 00405786    33C0            xor     eax, eax
    174. 00405788    EB 05           jmp     short 0040578F
    175. 0040578A    1BC0            sbb     eax, eax
    176. 0040578C    83C8 01         or      eax, 1
    177. 0040578F    85C0            test    eax, eax
    178. 00405791  ^ 0F85 15FFFFFF   jnz     004056AC
    179. 00405797    B8 01000000     mov     eax, 1                           ; //标志位赋值
    180. 0040579C    81C4 00020000   add     esp, 200
    181. 004057A2    5B              pop     ebx
    182. 004057A3    5E              pop     esi
    183. 004057A4    5F              pop     edi
    184. 004057A5    C2 0800         retn    8
    复制代码
    **************************************************************  
    【破解总结】
    --------------------------------------------------------------
    【算法总结】
    1.注册码必须是20位
    2.取用户名长度减去循环次数后与用户名ASCII码相乘,累加乘积,格式化为%04X形式。
    取试炼码第8位、第20位、试炼码第15位、试炼码第19位与格式化的结果逐位比较。
    --------------------------------------------------------------
    【算法注册机
    〖VB代码〗
    Private Sub Command1_Click()
    If Len(Text1.Text) = 0 Then
       Text2.Text = "输入有误,请重新输入!"
    Else  
         For i = 1 To Len(Text1.Text)
         j = Len(Text1.Text) - i + 1
         x = Asc(Mid(Text1.Text, i, 1)) * j
         y = y + x
         Next
         z = Right("0000" & Hex(y), 4)
         Text2.Text = Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & Mid(z, 1, 1) & Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & Mid(z, 3, 1) & Int(Rnd() * 10) & Int(Rnd() * 10) & Int(Rnd() * 10) & Mid(z, 4, 1) & Mid(z, 2, 1) 'Int(Rnd()  '"1234567" & Mid(z, 1, 1) & "901234" & Mid(z, 3, 1) & "678" & Mid(z, 4, 1) & Mid(z, 2, 1)
    End If
    End Sub
    --------------------------------------------------------------
    感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!谢谢
    --------------------------------------------------------------
    【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

    评分

    参与人数 1威望 +40 飘云币 +40 收起 理由
    月之精灵 + 40 + 40 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-12-9 15:03:42 | 显示全部楼层
    /:good 哈哈,今天看到了T大好多精彩文章,学习了
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-12-9 17:20:41 | 显示全部楼层
    很详细,值得看一看/:014
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-8-30 19:17
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-12-9 18:21:06 | 显示全部楼层
    学习了!/:good
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2015-8-23 23:49
  • 签到天数: 27 天

    [LV.4]偶尔看看III

    发表于 2009-12-9 18:37:06 | 显示全部楼层
    学习了!
    感谢T大!!!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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