飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3477|回复: 5

[原创] HiFi MP3 WMA Converter 3.00 算法分析

[复制链接]
  • TA的每日心情
    开心
    2020-8-30 18:31
  • 签到天数: 52 天

    [LV.5]常住居民I

    发表于 2008-5-2 00:05:53 | 显示全部楼层 |阅读模式
    1. [ 破文标题 ] HiFi MP3 WMA Converter 3.00 算法分析
    2. [ 破文作者 ] 絕戀de煩神
    3. [ 作者邮箱 ] sos_ftp@yahoo.com.cn
    4. [ 作者主页 ] http://hi.baidu.com/天蝎型男
    5. [ 破解工具 ] Peid,OllyDBG
    6. [ 破解平台 ] WinXp SP2
    7. [ 软件名称 ] HiFi MP3 WMA Converter 3.00
    8. [ 软件大小 ] 2481KB
    9. [ 原版下载 ] http://www.newhua.com/soft/25824.htm
    10. [ 保护方式 ] 用户名+注册码
    11. [ 软件简介 ] 一款简单实用的MP3和WMA的转换工具, 在转换的过程中,你可以进行重新采样,也可以重新选择音频的比特率和频率,支持VBR和CBR。 如果有大量的音乐需要转换,你可以选择适用它的批量转换功能。
    12. [ 破解声明 ] 小菜鳥一只,興趣所至,若有錯誤之處,請老鳥們多加指點。
    13. -----------------------------------------------------
    复制代码
    [ 破解过程 ]-----------------------------------------
    1. 首先咱们来运行一下程序,假注册一下。发现有错误提示:Invalid register code! Please retry!

    2. 再来用PEID来查一下壳,发现程序没加壳:Borland Delphi 6.0 - 7.0 幸运啊。嘻嘻

    3. 最后,就到我们的主角出场了。嘻嘻。。用OD载入分析:先来查找错误提示-Invalid register code! Please retry! 一共找到4处。我们来双击最上面的那一个错误提示字符串。就会来到下面的代码段了。在段首这里按F2下断后F9运行程序,假注册一下后就会停在这里,就可以继续往下分析了。
    复制代码
    1. 00495918  |.  55            PUSH EBP                                 ;F2下断,F9运行
    2. 00495919  |.  68 2B5B4900   PUSH HiFi_MP3.00495B2B
    3. 0049591E  |.  64:FF30       PUSH DWORD PTR FS:[EAX]
    4. 00495921  |.  64:8920       MOV DWORD PTR FS:[EAX],ESP
    5. 00495924  |.  B3 01         MOV BL,1
    6. 00495926  |.  FF05 8CCD4A00 INC DWORD PTR DS:[4ACD8C]
    7. 0049592C  |.  833D 8CCD4A00>CMP DWORD PTR DS:[4ACD8C],3
    8. 00495933  |.  7E 1D         JLE SHORT HiFi_MP3.00495952
    9. 00495935  |.  6A 00         PUSH 0                                   ; /Arg1 = 00000000
    10. 00495937  |.  66:8B0D 3C5B4>MOV CX,WORD PTR DS:[495B3C]              ; |
    11. 0049593E  |.  B2 02         MOV DL,2                                 ; |
    12. 00495940  |.  B8 485B4900   MOV EAX,HiFi_MP3.00495B48                ; |Invalid register code! Please retry!
    13. 00495945  |.  E8 0AF6F9FF   CALL HiFi_MP3.00434F54                   ; \HiFi_MP3.00434F54
    14. 0049594A  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    15. 0049594D  |.  E8 BA79FEFF   CALL HiFi_MP3.0047D30C
    16. 00495952  |>  8D55 F0       LEA EDX,DWORD PTR SS:[EBP-10]
    17. 00495955  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    18. 00495958  |.  8B80 10030000 MOV EAX,DWORD PTR DS:[EAX+310]
    19. 0049595E  |.  E8 41B2FCFF   CALL HiFi_MP3.00460BA4                   ;  取用户名长度
    20. 00495963  |.  8B45 F0       MOV EAX,DWORD PTR SS:[EBP-10]            ;  把用户名送给EAX
    21. 00495966  |.  8D55 F8       LEA EDX,DWORD PTR SS:[EBP-8]
    22. 00495969  |.  E8 DE2EF7FF   CALL HiFi_MP3.0040884C
    23. 0049596E  |.  8D55 EC       LEA EDX,DWORD PTR SS:[EBP-14]
    24. 00495971  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  把用户名送给EAX
    25. 00495974  |.  E8 072FF7FF   CALL HiFi_MP3.00408880
    26. 00495979  |.  8B55 EC       MOV EDX,DWORD PTR SS:[EBP-14]            ;  把用户名送给EDX
    27. 0049597C  |.  8D45 F8       LEA EAX,DWORD PTR SS:[EBP-8]
    28. 0049597F  |.  E8 04E9F6FF   CALL HiFi_MP3.00404288
    29. 00495984  |.  BF 15000000   MOV EDI,15                               ;  --------------------------
    30. 00495989  |.  BE C8A74A00   MOV ESI,HiFi_MP3.004AA7C8                ;  TDVDS6-MBN3
    31. 0049598E  |>  8B45 F8       /MOV EAX,DWORD PTR SS:[EBP-8]            ;  把用户名送给EAX
    32. 00495991  |.  8B16          |MOV EDX,DWORD PTR DS:[ESI]              ;  把固定的用户名送给EDX
    33. 00495993  |.  E8 64ECF6FF   |CALL HiFi_MP3.004045FC                  ;  這里真假用户名比较
    34. 00495998  |.  75 04         |JNZ SHORT HiFi_MP3.0049599E             ;  不相等就跳
    35. 0049599A  |.  33DB          |XOR EBX,EBX                             ;  EBX清零
    36. 0049599C  |.  EB 06         |JMP SHORT HiFi_MP3.004959A4
    37. 0049599E  |>  83C6 04       |ADD ESI,4                               ;  ESI+4
    38. 004959A1  |.  4F            |DEC EDI                                 ;  EDI-1
    39. 004959A2  |.^ 75 EA         \JNZ SHORT HiFi_MP3.0049598E             ;  --------循环比较---------
    40. 004959A4  |>  84DB          TEST BL,BL
    41. 004959A6      74 1A         JE SHORT HiFi_MP3.004959C2
    42. 004959A8  |.  6A 00         PUSH 0                                   ; /Arg1 = 00000000
    43. 004959AA  |.  66:8B0D 3C5B4>MOV CX,WORD PTR DS:[495B3C]              ; |
    44. 004959B1  |.  B2 02         MOV DL,2                                 ; |
    45. 004959B3  |.  B8 485B4900   MOV EAX,HiFi_MP3.00495B48                ; |Invalid register code! Please retry!
    46. 004959B8  |.  E8 97F5F9FF   CALL HiFi_MP3.00434F54                   ; \HiFi_MP3.00434F54
    47. 004959BD  |.  E9 2E010000   JMP HiFi_MP3.00495AF0
    48. 004959C2  |>  8D55 E8       LEA EDX,DWORD PTR SS:[EBP-18]
    49. 004959C5  |.  8B45 FC       MOV EAX,DWORD PTR SS:[EBP-4]
    50. 004959C8  |.  8B80 14030000 MOV EAX,DWORD PTR DS:[EAX+314]
    51. 004959CE  |.  E8 D1B1FCFF   CALL HiFi_MP3.00460BA4                   ;  取假码长度
    52. 004959D3  |.  8B45 E8       MOV EAX,DWORD PTR SS:[EBP-18]            ;  把假码送给EAX
    53. 004959D6  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]
    54. 004959D9  |.  E8 6E2EF7FF   CALL HiFi_MP3.0040884C
    55. 004959DE  |.  8D55 E4       LEA EDX,DWORD PTR SS:[EBP-1C]
    56. 004959E1  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             ;  把假码送给EAX
    57. 004959E4  |.  E8 972EF7FF   CALL HiFi_MP3.00408880
    58. 004959E9  |.  8B55 E4       MOV EDX,DWORD PTR SS:[EBP-1C]            ;  把假码送给EDX
    59. 004959EC  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
    60. 004959EF  |.  E8 94E8F6FF   CALL HiFi_MP3.00404288
    61. 004959F4  |.  837D F8 00    CMP DWORD PTR SS:[EBP-8],0               ;  用户名和0比较
    62. 004959F8  |.  0F84 F2000000 JE HiFi_MP3.00495AF0
    63. 004959FE  |.  837D F4 00    CMP DWORD PTR SS:[EBP-C],0               ;  假码和0比较
    64. 00495A02  |.  0F84 E8000000 JE HiFi_MP3.00495AF0
    65. 00495A08  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             ;  把假码送给EAX
    66. 00495A0B  |.  E8 A0EAF6FF   CALL HiFi_MP3.004044B0                   ;  取假码长度
    67. 00495A10  |.  85C0          TEST EAX,EAX                             ;  看有没有输入注册码
    68. 00495A12  |.  7E 35         JLE SHORT HiFi_MP3.00495A49              ;  没有输入就跳
    69. 00495A14  |.  BA 01000000   MOV EDX,1                                ;  EDX=1
    70. 00495A19  |>  8B4D F4       /MOV ECX,DWORD PTR SS:[EBP-C]            ;  把假码送给ECX
    71. 00495A1C  |.  0FB64C11 FF   |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1]       ;  逐位取假码的ASCII值给ECX
    72. 00495A21  |.  83F9 30       |CMP ECX,30                              ;  和16进制的30比较
    73. 00495A24  |.  7C 05         |JL SHORT HiFi_MP3.00495A2B              ;  小于就跳
    74. 00495A26  |.  83F9 39       |CMP ECX,39                              ;  和16进制的39比较
    75. 00495A29  |.  7E 1A         |JLE SHORT HiFi_MP3.00495A45             ;  小于或者等于就跳
    76. 00495A2B  |>  6A 00         |PUSH 0                                  ; /Arg1 = 00000000
    77. 00495A2D  |.  66:8B0D 3C5B4>|MOV CX,WORD PTR DS:[495B3C]             ; |
    78. 00495A34  |.  B2 02         |MOV DL,2                                ; |
    79. 00495A36  |.  B8 485B4900   |MOV EAX,HiFi_MP3.00495B48               ; |Invalid register code! Please retry!
    80. 00495A3B  |.  E8 14F5F9FF   |CALL HiFi_MP3.00434F54                  ; \HiFi_MP3.00434F54
    81. 00495A40  |.  E9 AB000000   |JMP HiFi_MP3.00495AF0
    82. 00495A45  |>  42            |INC EDX                                 ;  EDX+1
    83. 00495A46  |.  48            |DEC EAX                                 ;  EAX-1
    84. 00495A47  |.^ 75 D0         \JNZ SHORT HiFi_MP3.00495A19             ;  开始循环,验证注册码是否为纯数字
    85. 00495A49  |>  33DB          XOR EBX,EBX                              ;  EBX清零
    86. 00495A4B  |.  8B45 F8       MOV EAX,DWORD PTR SS:[EBP-8]             ;  把用户名送给EAX
    87. 00495A4E  |.  E8 5DEAF6FF   CALL HiFi_MP3.004044B0                   ;  取用户名长度
    88. 00495A53  |.  85C0          TEST EAX,EAX                             ;  看有没有输入用户名
    89. 00495A55  |.  7E 13         JLE SHORT HiFi_MP3.00495A6A              ;  没有输入就跳
    90. 00495A57  |.  BF 01000000   MOV EDI,1                                ;  EDI=1
    91. 00495A5C  |>  8B55 F8       /MOV EDX,DWORD PTR SS:[EBP-8]            ;  把用户名送给EDX
    92. 00495A5F  |.  0FB6543A FF   |MOVZX EDX,BYTE PTR DS:[EDX+EDI-1]       ;  逐位取用户名的ASCII值给EDX
    93. 00495A64  |.  03DA          |ADD EBX,EDX                             ;  EBX=EBX+EDX
    94. 00495A66  |.  47            |INC EDI                                 ;  EDI+1
    95. 00495A67  |.  48            |DEC EAX                                 ;  EAX-1
    96. 00495A68  |.^ 75 F2         \JNZ SHORT HiFi_MP3.00495A5C             ;  开始循环, 累加用户名的ASCII值
    97. 00495A6A  |>  69C3 F38B0B00 IMUL EAX,EBX,0B8BF3                      ;  EBX的值乘以固定值0B8BF3,结果存放在EAX里
    98. 00495A70  |.  83C0 57       ADD EAX,57                               ;  EAX+57
    99. 00495A73  |.  D1F8          SAR EAX,1                                ;  EAX算术右移一位
    100. 00495A75  |.  79 03         JNS SHORT HiFi_MP3.00495A7A              ;  符号位为0时就跳
    101. 00495A77  |.  83D0 00       ADC EAX,0
    102. 00495A7A  |>  8BD8          MOV EBX,EAX                              ;  把右移一位后的结果送给EBX
    103. 00495A7C  |.  8B45 F4       MOV EAX,DWORD PTR SS:[EBP-C]             ;  把假码送给EAX
    104. 00495A7F  |.  E8 8431F7FF   CALL HiFi_MP3.00408C08                   ;  关键CALL,F7跟進
    105. 00495A84  |.  3BD8          CMP EBX,EAX                              ;  EBX跟EAX比较
    106. 00495A86  |.  75 53         JNZ SHORT HiFi_MP3.00495ADB              ;  不相等就GAME OVER!
    107. 00495A88  |.  6A 00         PUSH 0                                   ; /Arg1 = 00000000
    108. 00495A8A  |.  66:8B0D 3C5B4>MOV CX,WORD PTR DS:[495B3C]              ; |
    109. 00495A91  |.  B2 02         MOV DL,2                                 ; |
    110. 00495A93  |.  B8 785B4900   MOV EAX,HiFi_MP3.00495B78                ; |Congratuation! You have successfully registered!
    111. 00495A98  |.  E8 B7F4F9FF   CALL HiFi_MP3.00434F54                   ; \HiFi_MP3.00434F54
    112. 00495A9D  |.  A1 24AE4A00   MOV EAX,DWORD PTR DS:[4AAE24]
    113. 00495AA2  |.  C600 01       MOV BYTE PTR DS:[EAX],1
    114. 00495AA5  |.  A1 30AF4A00   MOV EAX,DWORD PTR DS:[4AAF30]
    115. 00495AAA  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
    116. 00495AAC  |.  33C9          XOR ECX,ECX
    117. 00495AAE  |.  BA 04000000   MOV EDX,4
    118. 00495AB3  |.  8B18          MOV EBX,DWORD PTR DS:[EAX]
    119. 00495AB5  |.  FF53 14       CALL DWORD PTR DS:[EBX+14]
    120. 00495AB8  |.  8B15 24AE4A00 MOV EDX,DWORD PTR DS:[4AAE24]            ;  HiFi_MP3.004ACDFB
    121. 00495ABE  |.  A1 30AF4A00   MOV EAX,DWORD PTR DS:[4AAF30]
    122. 00495AC3  |.  8B00          MOV EAX,DWORD PTR DS:[EAX]
    123. 00495AC5  |.  B9 01000000   MOV ECX,1
    124. 00495ACA  |.  E8 1591F8FF   CALL HiFi_MP3.0041EBE4
    125. 00495ACF  |.  A1 88CD4A00   MOV EAX,DWORD PTR DS:[4ACD88]
    126. 00495AD4  |.  E8 3378FEFF   CALL HiFi_MP3.0047D30C
    127. 00495AD9  |.  EB 15         JMP SHORT HiFi_MP3.00495AF0
    128. 00495ADB  |>  6A 00         PUSH 0                                   ; /Arg1 = 00000000
    129. 00495ADD  |.  66:8B0D 3C5B4>MOV CX,WORD PTR DS:[495B3C]              ; |
    130. 00495AE4  |.  B2 02         MOV DL,2                                 ; |
    131. 00495AE6  |.  B8 485B4900   MOV EAX,HiFi_MP3.00495B48                ; |Invalid register code! Please retry!
    132. 00495AEB  |.  E8 64F4F9FF   CALL HiFi_MP3.00434F54                   ; \HiFi_MP3.00434F54
    133. 00495AF0  |>  33C0          XOR EAX,EAX
    134. 00495AF2  |.  5A            POP EDX
    135. 00495AF3  |.  59            POP ECX
    136. 00495AF4  |.  59            POP ECX
    137. 00495AF5  |.  64:8910       MOV DWORD PTR FS:[EAX],EDX
    138. 00495AF8  |.  68 325B4900   PUSH HiFi_MP3.00495B32
    139. 00495AFD  |>  8D45 E4       LEA EAX,DWORD PTR SS:[EBP-1C]
    140. 00495B00  |.  E8 EBE6F6FF   CALL HiFi_MP3.004041F0
    141. 00495B05  |.  8D45 E8       LEA EAX,DWORD PTR SS:[EBP-18]
    142. 00495B08  |.  E8 E3E6F6FF   CALL HiFi_MP3.004041F0
    143. 00495B0D  |.  8D45 EC       LEA EAX,DWORD PTR SS:[EBP-14]
    144. 00495B10  |.  E8 DBE6F6FF   CALL HiFi_MP3.004041F0
    145. 00495B15  |.  8D45 F0       LEA EAX,DWORD PTR SS:[EBP-10]
    146. 00495B18  |.  E8 D3E6F6FF   CALL HiFi_MP3.004041F0
    147. 00495B1D  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
    148. 00495B20  |.  BA 02000000   MOV EDX,2
    149. 00495B25  |.  E8 EAE6F6FF   CALL HiFi_MP3.00404214
    150. 00495B2A  \.  C3            RETN
    复制代码
    第一个关键CALL跟进后来到这里:
    1. 00408C08  /$  53            PUSH EBX                                 ;  把EBX压入栈
    2. 00408C09  |.  56            PUSH ESI                                 ;  把ESI压入栈
    3. 00408C0A  |.  83C4 F4       ADD ESP,-0C                              ;  ESP-0C
    4. 00408C0D  |.  8BD8          MOV EBX,EAX                              ;  把假码送给EBX
    5. 00408C0F  |.  8BD4          MOV EDX,ESP                              ;  EDX=ESP
    6. 00408C11  |.  8BC3          MOV EAX,EBX                              ;  把假码送给EAX
    7. 00408C13  |.  E8 BCA1FFFF   CALL HiFi_MP3.00402DD4                   ;  关键CALL,F7跟进
    8. 00408C18  |.  8BF0          MOV ESI,EAX                              ;  把EAX的值送给ESI
    9. 00408C1A  |.  833C24 00     CMP DWORD PTR SS:[ESP],0                 ;  此时的[ESP]为0
    10. 00408C1E  |.  74 19         JE SHORT HiFi_MP3.00408C39               ;  相等就跳
    11. 00408C20  |.  895C24 04     MOV DWORD PTR SS:[ESP+4],EBX
    12. 00408C24  |.  C64424 08 0B  MOV BYTE PTR SS:[ESP+8],0B
    13. 00408C29  |.  8D5424 04     LEA EDX,DWORD PTR SS:[ESP+4]
    14. 00408C2D  |.  A1 4CAD4A00   MOV EAX,DWORD PTR DS:[4AAD4C]
    15. 00408C32  |.  33C9          XOR ECX,ECX
    16. 00408C34  |.  E8 CBF8FFFF   CALL HiFi_MP3.00408504
    17. 00408C39  |>  8BC6          MOV EAX,ESI                              ;  把ESI的值送给EAX
    18. 00408C3B  |.  83C4 0C       ADD ESP,0C                               ;  ESP+0C
    19. 00408C3E  |.  5E            POP ESI                                  ;  ESI出栈
    20. 00408C3F  |.  5B            POP EBX                                  ;  EBX出栈
    21. 00408C40  \.  C3            RETN
    复制代码
    第二个关键CALL跟进后来到这里:
    1. 00402DD4  /$  53            PUSH EBX
    2. 00402DD5  |.  56            PUSH ESI
    3. 00402DD6  |.  57            PUSH EDI
    4. 00402DD7  |.  89C6          MOV ESI,EAX                              ;  把假码送给ESI
    5. 00402DD9  |.  50            PUSH EAX                                 ;  假码入栈
    6. 00402DDA  |.  85C0          TEST EAX,EAX                             ;  看EAX是否为0
    7. 00402DDC  |.  74 6C         JE SHORT HiFi_MP3.00402E4A               ;  EAX=0就跳
    8. 00402DDE  |.  31C0          XOR EAX,EAX                              ;  EAX清零
    9. 00402DE0  |.  31DB          XOR EBX,EBX                              ;  EBX清零
    10. 00402DE2  |.  BF CCCCCC0C   MOV EDI,0CCCCCCC                         ;  把固定值0CCCCCCC送给EDI
    11. 00402DE7  |>  8A1E          /MOV BL,BYTE PTR DS:[ESI]                ;  取假码第一位的ASCII值给BL
    12. 00402DE9  |.  46            |INC ESI                                 ;  ESI+1
    13. 00402DEA  |.  80FB 20       |CMP BL,20                               ;  BL的值和20比较
    14. 00402DED  |.^ 74 F8         \JE SHORT HiFi_MP3.00402DE7              ;  相等就跳
    15. 00402DEF  |.  B5 00         MOV CH,0                                 ;  CH=0
    16. 00402DF1  |.  80FB 2D       CMP BL,2D                                ;  BL的值和2D比较
    17. 00402DF4  |.  74 62         JE SHORT HiFi_MP3.00402E58               ;  相等就跳
    18. 00402DF6  |.  80FB 2B       CMP BL,2B                                ;  BL的值和2B比较
    19. 00402DF9  |.  74 5F         JE SHORT HiFi_MP3.00402E5A               ;  相等就跳
    20. 00402DFB  |>  80FB 24       CMP BL,24                                ;  BL的值和24比较
    21. 00402DFE  |.  74 5F         JE SHORT HiFi_MP3.00402E5F               ;  相等就跳
    22. 00402E00  |.  80FB 78       CMP BL,78                                ;  BL的值和78比较
    23. 00402E03  |.  74 5A         JE SHORT HiFi_MP3.00402E5F               ;  相等就跳
    24. 00402E05  |.  80FB 58       CMP BL,58                                ;  BL的值和58比较
    25. 00402E08  |.  74 55         JE SHORT HiFi_MP3.00402E5F               ;  相等就跳
    26. 00402E0A  |.  80FB 30       CMP BL,30                                ;  BL的值和30比较
    27. 00402E0D  |.  75 13         JNZ SHORT HiFi_MP3.00402E22              ;  不相等就跳
    28. 00402E0F  |.  8A1E          MOV BL,BYTE PTR DS:[ESI]
    29. 00402E11  |.  46            INC ESI
    30. 00402E12  |.  80FB 78       CMP BL,78
    31. 00402E15  |.  74 48         JE SHORT HiFi_MP3.00402E5F
    32. 00402E17  |.  80FB 58       CMP BL,58
    33. 00402E1A  |.  74 43         JE SHORT HiFi_MP3.00402E5F
    34. 00402E1C  |.  84DB          TEST BL,BL
    35. 00402E1E  |.  74 20         JE SHORT HiFi_MP3.00402E40
    36. 00402E20  |.  EB 04         JMP SHORT HiFi_MP3.00402E26
    37. 00402E22  |>  84DB          TEST BL,BL                               ;  BL是否为0
    38. 00402E24  |.  74 2D         JE SHORT HiFi_MP3.00402E53               ;  BL=0就跳
    39. 00402E26  |>  80EB 30       /SUB BL,30                               ;  BL-30
    40. 00402E29  |.  80FB 09       |CMP BL,9                                ;  减后的结果和9比较
    41. 00402E2C  |.  77 25         |JA SHORT HiFi_MP3.00402E53              ;  不小于就跳
    42. 00402E2E  |.  39F8          |CMP EAX,EDI                             ;  EAX跟EDI比较
    43. 00402E30  |.  77 21         |JA SHORT HiFi_MP3.00402E53              ;  不小于就跳
    44. 00402E32  |.  8D0480        |LEA EAX,DWORD PTR DS:[EAX+EAX*4]        ;  EAX=EAX+(EAX*4)
    45. 00402E35  |.  01C0          |ADD EAX,EAX                             ;  EAX=EAX+EAX (或者说是EAX的值乘以2)
    46. 00402E37  |.  01D8          |ADD EAX,EBX                             ;  EAX=EAX+EBX
    47. 00402E39  |.  8A1E          |MOV BL,BYTE PTR DS:[ESI]                ;  把假码第二位的ASCII值送给BL
    48. 00402E3B  |.  46            |INC ESI                                 ;  ESI+1
    49. 00402E3C  |.  84DB          |TEST BL,BL                              ;  BL是否为0
    50. 00402E3E  |.^ 75 E6         \JNZ SHORT HiFi_MP3.00402E26             ;  不等于0就跳,开始循环计算
    51. 00402E40  |>  FECD          DEC CH                                   ;  CH-1
    52. 00402E42  |.  74 09         JE SHORT HiFi_MP3.00402E4D
    53. 00402E44  |.  85C0          TEST EAX,EAX
    54. 00402E46  |.  7D 54         JGE SHORT HiFi_MP3.00402E9C              ;  这里跳转实现了,结束运算
    复制代码
    [ 破解总结 ]-----------------------------------------

    注册码是根据用户名来计算的,与注册码无关。跟进那两个CALL只是想分析一下他的计算过程而已,貌似不重要的。因为真码在没到关键CALL的时候已经计算出来了。嘻嘻。

    算法总结:
    1. 1.累加用户名的ASCII值
    2. 2.累加后的结果IMUL(乘以)0B8BF3
    3. 3.得到的结果加上57
    4. 4.结果SAR 1
    5. 5.把上面得到的结果转换为10进制就是真码。
    复制代码
    -----------------------------------------------------
    [ 版权声明 ] 版权所有:絕戀de煩神  未经本人同意请勿转载   嘻嘻
    -----------------------------------------------------

    评分

    参与人数 2威望 +40 飘云币 +40 收起 理由
    hj2008mt + 40 PYG有你更精彩!
    tianxj + 40 感谢您发布的原创作品!

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-5-2 00:14:42 | 显示全部楼层
    鼓励一下。:loveliness:
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-5-1 14:44
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-5-2 21:30:10 | 显示全部楼层
    可以写个注册机嘛
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2024-3-21 21:06
  • 签到天数: 1489 天

    [LV.10]以坛为家III

    发表于 2008-5-2 22:36:01 | 显示全部楼层
    不错,支持一下~~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2020-8-30 18:31
  • 签到天数: 52 天

    [LV.5]常住居民I

     楼主| 发表于 2008-5-3 19:55:25 | 显示全部楼层
    原帖由 tianxj 于 2008-5-2 21:30 发表
    可以写个注册机嘛


    可以啊。不过我不会编程。正常学习中。。嘻嘻。。不过这款软件的用户名是固定的(我没记错大概有十个固定的用户名)。如果想要用自己的名字去注册就要打一个补丁才可以。。。
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-5-5 19:10:11 | 显示全部楼层
    感谢楼主共享~~~~~~~~~~~~~~~~~/:014 /:014
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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