飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3417|回复: 4

[原创] Crystal MP3 Recorder 1.00算法分析

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

    [LV.1]初来乍到

    发表于 2008-5-20 11:49:47 | 显示全部楼层 |阅读模式
    【破文标题】Crystal MP3 Recorder 1.00算法分析
    【破文作者】tianxj
    【作者邮箱】tianxj_2007@126.com
    【作者主页】www.chinapyg.com
    破解工具】PEiD,OD
    【破解平台】Windows XP
    【软件名称】Crystal MP3 Recorder 1.00(2008-5-5版)
    【软件大小】3372KB
    【软件类别】国外软件/媒体管理  
    【软件授权】共享版
    【软件语言】英文
    【原版下载】华军软件园
    【保护方式】注册码
    【软件简介】是一个易于使用和高品质的软件,一个完整的记录。与此你可以录制自己的声音,通过麦克风和音频从您的计算机(所发挥的在线研讨会从互联网上, Winamp中, Windows Media Player中,快速的时间,真正的播放器,闪存,游戏) ,以及健全从外部(转台,随身听,磁带播放器, DVD等) 。
    【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
    --------------------------------------------------------------
    【破解内容】
    --------------------------------------------------------------
    **************************************************************
    一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
    "invalid register code! please retry!"
    **************************************************************
    二、用PEiD对Crystal MP3 Recorder查壳,为Borland Delphi 6.0 - 7.0
    **************************************************************
    三、用PE Explorer和DeDe查找按钮事件
    004D921C  /.  55            PUSH EBP
    ==============================================================
    运行OD,打开Crystal MP3 Recorder,来到
    1. 004D921C  /.  55            PUSH EBP
    2. 004D921D  |.  8BEC          MOV EBP,ESP
    3. 004D921F  |.  33C9          XOR ECX,ECX
    4. 004D9221  |.  51            PUSH ECX
    5. 004D9222  |.  51            PUSH ECX
    6. 004D9223  |.  51            PUSH ECX
    7. 004D9224  |.  51            PUSH ECX
    8. 004D9225  |.  51            PUSH ECX
    9. 004D9226  |.  51            PUSH ECX
    10. 004D9227  |.  53            PUSH EBX
    11. 004D9228  |.  56            PUSH ESI
    12. 004D9229  |.  57            PUSH EDI
    13. 004D922A  |.  8BF8          MOV EDI,EAX
    14. 004D922C  |.  33C0          XOR EAX,EAX
    15. 004D922E  |.  55            PUSH EBP
    16. 004D922F  |.  68 23944D00   PUSH Crystal_.004D9423
    17. 004D9234  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
    18. 004D9237  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
    19. 004D923A  |.  C605 504E4E00>MOV BYTE PTR DS:[4E4E50],1
    20. 004D9241  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
    21. 004D9244  |.  8B87 AC030000 MOV EAX,DWORD PTR DS:[EDI+3AC]
    22. 004D924A  |.  E8 A9A3F6FF   CALL Crystal_.004435F8
    23. 004D924F  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             ;  //用户名
    24. 004D9252  |.  8D55 FC       LEA EDX,DWORD PTR SS:[EBP-4]
    25. 004D9255  |.  E8 02FBF2FF   CALL Crystal_.00408D5C
    26. 004D925A  |.  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
    27. 004D925D  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //用户名
    28. 004D9260  |.  E8 2BFBF2FF   CALL Crystal_.00408D90
    29. 004D9265  |.  8B55 F0       MOV EDX,DWORD PTR SS:[EBP-10]
    30. 004D9268  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]
    31. 004D926B  |.  E8 F0B4F2FF   CALL Crystal_.00404760
    32. 004D9270  |.  BB 15000000   MOV EBX,15
    33. 004D9275  |.  BE 14344E00   MOV ESI,Crystal_.004E3414                ;  @om
    34. 004D927A  |>  8B45 FC       /MOV EAX,DWORD PTR SS:[EBP-4]            ;  //用户名
    35. 004D927D  |.  8B16          |MOV EDX,DWORD PTR DS:[ESI]              ;  //"VS88T6-Vs86"
    36. 004D927F  |.  E8 40B8F2FF   |CALL Crystal_.00404AC4                  ;  //比较CALL
    37. 004D9284  |.  75 09         |JNZ SHORT Crystal_.004D928F             ;  //不等则跳
    38. 004D9286  |.  C605 504E4E00>|MOV BYTE PTR DS:[4E4E50],0              ;  //标志位赋值
    39. 004D928D  |.  EB 06         |JMP SHORT Crystal_.004D9295
    40. 004D928F  |>  83C6 04       |ADD ESI,4
    41. 004D9292  |.  4B            |DEC EBX
    42. 004D9293  |.^ 75 E5         \JNZ SHORT Crystal_.004D927A             ;  //循环,和内置用户名比较
    43. 004D9295  |>  803D 504E4E00>CMP BYTE PTR DS:[4E4E50],0               ;  //关键比较
    44. 004D929C  |.  74 1A         JE SHORT Crystal_.004D92B8               ;  //相等则跳
    45. 004D929E  |.  6A 00         PUSH 0                                   ; /Arg1 = 00000000
    46. 004D92A0  |.  66:8B0D 34944>MOV CX,WORD PTR DS:[4D9434]              ; |
    47. 004D92A7  |.  B2 02         MOV DL,2                                 ; |
    48. 004D92A9  |.  B8 40944D00   MOV EAX,Crystal_.004D9440                ; |invalid register code! please retry!
    49. 004D92AE  |.  E8 453AF6FF   CALL Crystal_.0043CCF8                   ; \Crystal_.0043CCF8
    50. 004D92B3  |.  E9 30010000   JMP Crystal_.004D93E8
    51. 004D92B8  |>  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
    52. 004D92BB  |.  8B87 B0030000 MOV EAX,DWORD PTR DS:[EDI+3B0]
    53. 004D92C1  |.  E8 32A3F6FF   CALL Crystal_.004435F8
    54. 004D92C6  |.  8B45 EC       MOV EAX,DWORD PTR SS:[EBP-14]            ;  //试练码
    55. 004D92C9  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
    56. 004D92CC  |.  E8 8BFAF2FF   CALL Crystal_.00408D5C
    57. 004D92D1  |.  8D55 E8       LEA EDX,DWORD PTR SS:[EBP-18]
    58. 004D92D4  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  //试练码
    59. 004D92D7  |.  E8 B4FAF2FF   CALL Crystal_.00408D90
    60. 004D92DC  |.  8B55 E8       MOV EDX,DWORD PTR SS:[EBP-18]            ;  //试练码
    61. 004D92DF  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
    62. 004D92E2  |.  E8 79B4F2FF   CALL Crystal_.00404760
    63. 004D92E7  |.  837D FC 00    CMP DWORD PTR SS:[EBP-4],0
    64. 004D92EB  |.  0F84 F7000000 JE Crystal_.004D93E8                     ;  //用户名为空则跳
    65. 004D92F1  |.  837D F8 00    CMP DWORD PTR SS:[EBP-8],0
    66. 004D92F5  |.  0F84 ED000000 JE Crystal_.004D93E8                     ;  //注册码为空则跳
    67. 004D92FB  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  //试练码
    68. 004D92FE  |.  E8 7DB6F2FF   CALL Crystal_.00404980                   ;  //取试练码长度
    69. 004D9303  |.  85C0          TEST EAX,EAX
    70. 004D9305  |.  7E 38         JLE SHORT Crystal_.004D933F              ;  //小于等于则跳
    71. 004D9307  |.  BA 01000000   MOV EDX,1                                ;  //EDX=1
    72. 004D930C  |>  8B4D F8       /MOV ECX,DWORD PTR SS:[EBP-8]            ;  //试练码
    73. 004D930F  |.  0FB64C11 FF   |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]       ;  //依次取试练码ASC值
    74. 004D9314  |.  83F9 30       |CMP ECX,30                              ;  //与30即"0"比较
    75. 004D9317  |.  7C 08         |JL SHORT Crystal_.004D9321              ;  //小于则跳
    76. 004D9319  |.  8B5D F8       |MOV EBX,DWORD PTR SS:[EBP-8]
    77. 004D931C  |.  83F9 39       |CMP ECX,39                              ;  //与39即"9"比较
    78. 004D931F  |.  7E 1A         |JLE SHORT Crystal_.004D933B             ;  //小于等于则跳
    79. 004D9321  |>  6A 00         |PUSH 0                                  ; /Arg1 = 00000000
    80. 004D9323  |.  66:8B0D 34944>|MOV CX,WORD PTR DS:[4D9434]             ; |
    81. 004D932A  |.  B2 02         |MOV DL,2                                ; |
    82. 004D932C  |.  B8 40944D00   |MOV EAX,Crystal_.004D9440               ; |invalid register code! please retry!
    83. 004D9331  |.  E8 C239F6FF   |CALL Crystal_.0043CCF8                  ; \Crystal_.0043CCF8
    84. 004D9336  |.  E9 AD000000   |JMP Crystal_.004D93E8
    85. 004D933B  |>  42            |INC EDX
    86. 004D933C  |.  48            |DEC EAX
    87. 004D933D  |.^ 75 CD         \JNZ SHORT Crystal_.004D930C             ;  //循环,试练码是否在0~9之间
    88. 004D933F  |>  33F6          XOR ESI,ESI                              ;  //ESI=0
    89. 004D9341  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]             ;  //用户名
    90. 004D9344  |.  E8 37B6F2FF   CALL Crystal_.00404980                   ;  //取用户名长度
    91. 004D9349  |.  85C0          TEST EAX,EAX
    92. 004D934B  |.  7E 13         JLE SHORT Crystal_.004D9360              ;  //小于等于则跳
    93. 004D934D  |.  BB 01000000   MOV EBX,1                                ;  //EBX=1
    94. 004D9352  |>  8B55 FC       /MOV EDX,DWORD PTR SS:[EBP-4]            ;  //用户名
    95. 004D9355  |.  0FB6541A FF   |MOVZX EDX,BYTE PTR DS:[EDX+EBX-1]       ;  //依次取用户名ASC值
    96. 004D935A  |.  03F2          |ADD ESI,EDX                             ;  //ESI=ESI+EDX
    97. 004D935C  |.  43            |INC EBX                                 ;  //EBX=EBX+1
    98. 004D935D  |.  48            |DEC EAX                                 ;  //EAX=EAX-1
    99. 004D935E  |.^ 75 F2         \JNZ SHORT Crystal_.004D9352             ;  //不等则跳
    100. 004D9360  |>  69C6 958D0900 IMUL EAX,ESI,98D95                       ;  //EAX=ESI*98D95
    101. 004D9366  |.  83C0 20       ADD EAX,20                               ;  //EAX=EAX+20
    102. 004D9369  |.  D1F8          SAR EAX,1                                ;  //EAX右移1位
    103. 004D936B  |.  79 03         JNS SHORT Crystal_.004D9370
    104. 004D936D  |.  83D0 00       ADC EAX,0
    105. 004D9370  |>  8BF0          MOV ESI,EAX                              ;  //ESI=EAX
    106. 004D9372  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  //试练码
    107. 004D9375  |.  E8 7AFCF2FF   CALL Crystal_.00408FF4                   ;  //试练码转16进制送入EAX
    108. 004D937A  |.  3BF0          CMP ESI,EAX                              ;  //ESI与EAX比较
    109. 004D937C  |.  75 55         JNZ SHORT Crystal_.004D93D3              ;  //不等则跳
    110. 004D937E  |.  6A 00         PUSH 0                                   ; /Arg1 = 00000000
    111. 004D9380  |.  66:8B0D 34944>MOV CX,WORD PTR DS:[4D9434]              ; |
    112. 004D9387  |.  B2 02         MOV DL,2                                 ; |
    113. 004D9389  |.  B8 70944D00   MOV EAX,Crystal_.004D9470                ; |congratuation! you have successfully registered!
    114. 004D938E  |.  E8 6539F6FF   CALL Crystal_.0043CCF8                   ; \Crystal_.0043CCF8
    115. 004D9393  |.  A1 783A4E00   MOV EAX,DWORD PTR DS:[4E3A78]
    116. 004D9398  |.  C600 01       MOV BYTE PTR DS:[EAX],1
    117. 004D939B  |.  A1 843B4E00   MOV EAX,DWORD PTR DS:[4E3B84]
    118. 004D93A0  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
    119. 004D93A2  |.  33C9          XOR ECX,ECX
    120. 004D93A4  |.  BA 04000000   MOV EDX,4
    121. 004D93A9  |.  8B18          MOV EBX,DWORD PTR DS:[EAX]
    122. 004D93AB  |.  FF53 10       CALL DWORD PTR DS:[EBX+10]
    123. 004D93AE  |.  8B15 783A4E00 MOV EDX,DWORD PTR DS:[4E3A78]            ;  Crystal_.004E4E80
    124. 004D93B4  |.  A1 843B4E00   MOV EAX,DWORD PTR DS:[4E3B84]
    125. 004D93B9  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
    126. 004D93BB  |.  B9 01000000   MOV ECX,1
    127. 004D93C0  |.  E8 EF23F4FF   CALL Crystal_.0041B7B4
    128. 004D93C5  |.  A1 08384E00   MOV EAX,DWORD PTR DS:[4E3808]
    129. 004D93CA  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
    130. 004D93CC  |.  E8 B36AF8FF   CALL Crystal_.0045FE84
    131. 004D93D1  |.  EB 15         JMP SHORT Crystal_.004D93E8
    132. 004D93D3  |>  6A 00         PUSH 0                                   ; /Arg1 = 00000000
    133. 004D93D5  |.  66:8B0D 34944>MOV CX,WORD PTR DS:[4D9434]              ; |
    134. 004D93DC  |.  B2 02         MOV DL,2                                 ; |
    135. 004D93DE  |.  B8 40944D00   MOV EAX,Crystal_.004D9440                ; |invalid register code! please retry!
    136. 004D93E3  |.  E8 1039F6FF   CALL Crystal_.0043CCF8                   ; \Crystal_.0043CCF8
    137. 004D93E8  |>  33C0          XOR EAX,EAX
    138. 004D93EA  |.  5A            POP EDX
    139. 004D93EB  |.  59            POP ECX
    140. 004D93EC  |.  59            POP ECX
    141. 004D93ED  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
    142. 004D93F0  |.  68 2A944D00   PUSH Crystal_.004D942A
    143. 004D93F5  |>  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
    144. 004D93F8  |.  E8 CBB2F2FF   CALL Crystal_.004046C8
    145. 004D93FD  |.  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]
    146. 004D9400  |.  E8 C3B2F2FF   CALL Crystal_.004046C8
    147. 004D9405  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
    148. 004D9408  |.  E8 BBB2F2FF   CALL Crystal_.004046C8
    149. 004D940D  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
    150. 004D9410  |.  E8 B3B2F2FF   CALL Crystal_.004046C8
    151. 004D9415  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
    152. 004D9418  |.  BA 02000000   MOV EDX,2
    153. 004D941D  |.  E8 CAB2F2FF   CALL Crystal_.004046EC
    154. 004D9422  \.  C3            RETN
    155. 004D9423   .^ E9 24ACF2FF   JMP Crystal_.0040404C
    156. 004D9428   .^ EB CB         JMP SHORT Crystal_.004D93F5
    157. 004D942A   .  5F            POP EDI
    158. 004D942B   .  5E            POP ESI
    159. 004D942C   .  5B            POP EBX
    160. 004D942D   .  8BE5          MOV ESP,EBP
    161. 004D942F   .  5D            POP EBP
    162. 004D9430   .  C3            RETN
    复制代码
    ==============================================================
    【内置用户名】
    004D6F40  56 53 38 38 54 36 2D 56 73 38 36 00 FF FF FF FF  VS88T6-Vs86.
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

     楼主| 发表于 2008-5-20 12:06:44 | 显示全部楼层
    *************************************************************  
    【破解总结】
    --------------------------------------------------------------
    【算法总结】
    用户名必须是内置用户名中的一个,然后经过累加用户名ASC值,乘以98D95,加上20,右移1位后,与注册码16进制比较
    --------------------------------------------------------------
    【算法注册机】
    用keymake 2.0 编写算法注册机:

     1、启动keymake,按Ctrl+N打开编辑窗口,将.code源码内容复制进去,然后按F2打开数据区,将.data内容复盖原有信息,再按F9一下,选择方案一(只有一个输入窗口),现在你点“确定”,稍等片刻就会在目录内生成一个算法注册机了!!!

     2、算法注册机的源码如下:
    keygen.rek
    .const
    .data
    szHomePage db "https://www.chinapyg.com",0
    szEmail    db "mailto:tianxj_2007@126.com",0
    szErrMess  db "请输入用户名!",0
    szBuffer db 50 dup (0)
    szFMT db "%d",0
    a dd 0

    .code
    mov a,eax
    invoke lstrlen,a
    XOR ESI,ESI
    MOV EBX,1h
    n1:
    MOV EDX,a
    MOVZX EDX,BYTE PTR DS:[EDX+EBX-1]
    ADD ESI,EDX
    INC EBX
    DEC EAX
    JNZ n1
    IMUL EAX,ESI,98D95h
    ADD EAX,20h
    SAR EAX,1h
    JNS n2
    ADC EAX,0h
    n2:
    MOV ESI,EAX
    invoke wsprintf,addr szBuffer,addr szFMT,esi
    lea eax,szBuffer
    --------------------------------------------------------------
    【内存注册机】
    用Keymake2.0版本 作内存注册机:
    一、选择F8 → 内存注册机
       1、程序名称:Crystal MP3 Recorder.exe
       2、添加数据:
           中断地址 4D937A
           中断次数 1
           第一字节 3B
           指令长度 2
    二、选择寄存器方式→ ESI→ 十进制 → 点生成就有你乐的了!
    --------------------------------------------------------------
    感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!谢谢
    --------------------------------------------------------------
    【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

    [ 本帖最后由 tianxj 于 2008-5-20 12:08 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2019-3-25 06:30
  • 签到天数: 1096 天

    [LV.10]以坛为家III

    发表于 2008-5-20 21:25:58 | 显示全部楼层
    好文章,第一个来支持一下。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-7-21 10:19
  • 签到天数: 14 天

    [LV.3]偶尔看看II

    发表于 2008-5-21 09:25:37 | 显示全部楼层
    学习了!        
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2017-8-31 14:43
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2008-5-21 09:30:55 | 显示全部楼层
    努力的学习了一把
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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