【破文标题】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,来到
004D921C /. 55 PUSH EBP 004D921D |. 8BEC MOV EBP,ESP 004D921F |. 33C9 XOR ECX,ECX 004D9221 |. 51 PUSH ECX 004D9222 |. 51 PUSH ECX 004D9223 |. 51 PUSH ECX 004D9224 |. 51 PUSH ECX 004D9225 |. 51 PUSH ECX 004D9226 |. 51 PUSH ECX 004D9227 |. 53 PUSH EBX 004D9228 |. 56 PUSH ESI 004D9229 |. 57 PUSH EDI 004D922A |. 8BF8 MOV EDI,EAX 004D922C |. 33C0 XOR EAX,EAX 004D922E |. 55 PUSH EBP 004D922F |. 68 23944D00 PUSH Crystal_.004D9423 004D9234 |. 64:FF30 PUSH DWORD PTR FS:[EAX] 004D9237 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP 004D923A |. C605 504E4E00>MOV BYTE PTR DS:[4E4E50],1 004D9241 |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C] 004D9244 |. 8B87 AC030000 MOV EAX,DWORD PTR DS:[EDI+3AC] 004D924A |. E8 A9A3F6FF CALL Crystal_.004435F8 004D924F |. 8B45 F4 MOV EAX,DWORD PTR SS:[EBP-C] ; //用户名 004D9252 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4] 004D9255 |. E8 02FBF2FF CALL Crystal_.00408D5C 004D925A |. 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10] 004D925D |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; //用户名 004D9260 |. E8 2BFBF2FF CALL Crystal_.00408D90 004D9265 |. 8B55 F0 MOV EDX,DWORD PTR SS:[EBP-10] 004D9268 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4] 004D926B |. E8 F0B4F2FF CALL Crystal_.00404760 004D9270 |. BB 15000000 MOV EBX,15 004D9275 |. BE 14344E00 MOV ESI,Crystal_.004E3414 ; @om 004D927A |> 8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4] ; //用户名 004D927D |. 8B16 |MOV EDX,DWORD PTR DS:[ESI] ; //"VS88T6-Vs86" 004D927F |. E8 40B8F2FF |CALL Crystal_.00404AC4 ; //比较CALL 004D9284 |. 75 09 |JNZ SHORT Crystal_.004D928F ; //不等则跳 004D9286 |. C605 504E4E00>|MOV BYTE PTR DS:[4E4E50],0 ; //标志位赋值 004D928D |. EB 06 |JMP SHORT Crystal_.004D9295 004D928F |> 83C6 04 |ADD ESI,4 004D9292 |. 4B |DEC EBX 004D9293 |.^ 75 E5 \JNZ SHORT Crystal_.004D927A ; //循环,和内置用户名比较 004D9295 |> 803D 504E4E00>CMP BYTE PTR DS:[4E4E50],0 ; //关键比较 004D929C |. 74 1A JE SHORT Crystal_.004D92B8 ; //相等则跳 004D929E |. 6A 00 PUSH 0 ; /Arg1 = 00000000 004D92A0 |. 66:8B0D 34944>MOV CX,WORD PTR DS:[4D9434] ; | 004D92A7 |. B2 02 MOV DL,2 ; | 004D92A9 |. B8 40944D00 MOV EAX,Crystal_.004D9440 ; |invalid register code! please retry! 004D92AE |. E8 453AF6FF CALL Crystal_.0043CCF8 ; \Crystal_.0043CCF8 004D92B3 |. E9 30010000 JMP Crystal_.004D93E8 004D92B8 |> 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14] 004D92BB |. 8B87 B0030000 MOV EAX,DWORD PTR DS:[EDI+3B0] 004D92C1 |. E8 32A3F6FF CALL Crystal_.004435F8 004D92C6 |. 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] ; //试练码 004D92C9 |. 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8] 004D92CC |. E8 8BFAF2FF CALL Crystal_.00408D5C 004D92D1 |. 8D55 E8 LEA EDX,DWORD PTR SS:[EBP-18] 004D92D4 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; //试练码 004D92D7 |. E8 B4FAF2FF CALL Crystal_.00408D90 004D92DC |. 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18] ; //试练码 004D92DF |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] 004D92E2 |. E8 79B4F2FF CALL Crystal_.00404760 004D92E7 |. 837D FC 00 CMP DWORD PTR SS:[EBP-4],0 004D92EB |. 0F84 F7000000 JE Crystal_.004D93E8 ; //用户名为空则跳 004D92F1 |. 837D F8 00 CMP DWORD PTR SS:[EBP-8],0 004D92F5 |. 0F84 ED000000 JE Crystal_.004D93E8 ; //注册码为空则跳 004D92FB |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; //试练码 004D92FE |. E8 7DB6F2FF CALL Crystal_.00404980 ; //取试练码长度 004D9303 |. 85C0 TEST EAX,EAX 004D9305 |. 7E 38 JLE SHORT Crystal_.004D933F ; //小于等于则跳 004D9307 |. BA 01000000 MOV EDX,1 ; //EDX=1 004D930C |> 8B4D F8 /MOV ECX,DWORD PTR SS:[EBP-8] ; //试练码 004D930F |. 0FB64C11 FF |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1] ; //依次取试练码ASC值 004D9314 |. 83F9 30 |CMP ECX,30 ; //与30即"0"比较 004D9317 |. 7C 08 |JL SHORT Crystal_.004D9321 ; //小于则跳 004D9319 |. 8B5D F8 |MOV EBX,DWORD PTR SS:[EBP-8] 004D931C |. 83F9 39 |CMP ECX,39 ; //与39即"9"比较 004D931F |. 7E 1A |JLE SHORT Crystal_.004D933B ; //小于等于则跳 004D9321 |> 6A 00 |PUSH 0 ; /Arg1 = 00000000 004D9323 |. 66:8B0D 34944>|MOV CX,WORD PTR DS:[4D9434] ; | 004D932A |. B2 02 |MOV DL,2 ; | 004D932C |. B8 40944D00 |MOV EAX,Crystal_.004D9440 ; |invalid register code! please retry! 004D9331 |. E8 C239F6FF |CALL Crystal_.0043CCF8 ; \Crystal_.0043CCF8 004D9336 |. E9 AD000000 |JMP Crystal_.004D93E8 004D933B |> 42 |INC EDX 004D933C |. 48 |DEC EAX 004D933D |.^ 75 CD \JNZ SHORT Crystal_.004D930C ; //循环,试练码是否在0~9之间 004D933F |> 33F6 XOR ESI,ESI ; //ESI=0 004D9341 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; //用户名 004D9344 |. E8 37B6F2FF CALL Crystal_.00404980 ; //取用户名长度 004D9349 |. 85C0 TEST EAX,EAX 004D934B |. 7E 13 JLE SHORT Crystal_.004D9360 ; //小于等于则跳 004D934D |. BB 01000000 MOV EBX,1 ; //EBX=1 004D9352 |> 8B55 FC /MOV EDX,DWORD PTR SS:[EBP-4] ; //用户名 004D9355 |. 0FB6541A FF |MOVZX EDX,BYTE PTR DS:[EDX+EBX-1] ; //依次取用户名ASC值 004D935A |. 03F2 |ADD ESI,EDX ; //ESI=ESI+EDX 004D935C |. 43 |INC EBX ; //EBX=EBX+1 004D935D |. 48 |DEC EAX ; //EAX=EAX-1 004D935E |.^ 75 F2 \JNZ SHORT Crystal_.004D9352 ; //不等则跳 004D9360 |> 69C6 958D0900 IMUL EAX,ESI,98D95 ; //EAX=ESI*98D95 004D9366 |. 83C0 20 ADD EAX,20 ; //EAX=EAX+20 004D9369 |. D1F8 SAR EAX,1 ; //EAX右移1位 004D936B |. 79 03 JNS SHORT Crystal_.004D9370 004D936D |. 83D0 00 ADC EAX,0 004D9370 |> 8BF0 MOV ESI,EAX ; //ESI=EAX 004D9372 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] ; //试练码 004D9375 |. E8 7AFCF2FF CALL Crystal_.00408FF4 ; //试练码转16进制送入EAX 004D937A |. 3BF0 CMP ESI,EAX ; //ESI与EAX比较 004D937C |. 75 55 JNZ SHORT Crystal_.004D93D3 ; //不等则跳 004D937E |. 6A 00 PUSH 0 ; /Arg1 = 00000000 004D9380 |. 66:8B0D 34944>MOV CX,WORD PTR DS:[4D9434] ; | 004D9387 |. B2 02 MOV DL,2 ; | 004D9389 |. B8 70944D00 MOV EAX,Crystal_.004D9470 ; |congratuation! you have successfully registered! 004D938E |. E8 6539F6FF CALL Crystal_.0043CCF8 ; \Crystal_.0043CCF8 004D9393 |. A1 783A4E00 MOV EAX,DWORD PTR DS:[4E3A78] 004D9398 |. C600 01 MOV BYTE PTR DS:[EAX],1 004D939B |. A1 843B4E00 MOV EAX,DWORD PTR DS:[4E3B84] 004D93A0 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 004D93A2 |. 33C9 XOR ECX,ECX 004D93A4 |. BA 04000000 MOV EDX,4 004D93A9 |. 8B18 MOV EBX,DWORD PTR DS:[EAX] 004D93AB |. FF53 10 CALL DWORD PTR DS:[EBX+10] 004D93AE |. 8B15 783A4E00 MOV EDX,DWORD PTR DS:[4E3A78] ; Crystal_.004E4E80 004D93B4 |. A1 843B4E00 MOV EAX,DWORD PTR DS:[4E3B84] 004D93B9 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 004D93BB |. B9 01000000 MOV ECX,1 004D93C0 |. E8 EF23F4FF CALL Crystal_.0041B7B4 004D93C5 |. A1 08384E00 MOV EAX,DWORD PTR DS:[4E3808] 004D93CA |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 004D93CC |. E8 B36AF8FF CALL Crystal_.0045FE84 004D93D1 |. EB 15 JMP SHORT Crystal_.004D93E8 004D93D3 |> 6A 00 PUSH 0 ; /Arg1 = 00000000 004D93D5 |. 66:8B0D 34944>MOV CX,WORD PTR DS:[4D9434] ; | 004D93DC |. B2 02 MOV DL,2 ; | 004D93DE |. B8 40944D00 MOV EAX,Crystal_.004D9440 ; |invalid register code! please retry! 004D93E3 |. E8 1039F6FF CALL Crystal_.0043CCF8 ; \Crystal_.0043CCF8 004D93E8 |> 33C0 XOR EAX,EAX 004D93EA |. 5A POP EDX 004D93EB |. 59 POP ECX 004D93EC |. 59 POP ECX 004D93ED |. 64:8910 MOV DWORD PTR FS:[EAX],EDX 004D93F0 |. 68 2A944D00 PUSH Crystal_.004D942A 004D93F5 |> 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18] 004D93F8 |. E8 CBB2F2FF CALL Crystal_.004046C8 004D93FD |. 8D45 EC LEA EAX,DWORD PTR SS:[EBP-14] 004D9400 |. E8 C3B2F2FF CALL Crystal_.004046C8 004D9405 |. 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10] 004D9408 |. E8 BBB2F2FF CALL Crystal_.004046C8 004D940D |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] 004D9410 |. E8 B3B2F2FF CALL Crystal_.004046C8 004D9415 |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] 004D9418 |. BA 02000000 MOV EDX,2 004D941D |. E8 CAB2F2FF CALL Crystal_.004046EC 004D9422 \. C3 RETN 004D9423 .^ E9 24ACF2FF JMP Crystal_.0040404C 004D9428 .^ EB CB JMP SHORT Crystal_.004D93F5 004D942A . 5F POP EDI 004D942B . 5E POP ESI 004D942C . 5B POP EBX 004D942D . 8BE5 MOV ESP,EBP 004D942F . 5D POP EBP 004D9430 . C3 RETN
【内置用户名】
004D6F40 56 53 38 38 54 36 2D 56 73 38 36 00 FF FF FF FF VS88T6-Vs86.
004D6F50 0B 00 00 00 54 56 36 36 50 36 2D 54 56 36 36 00 ...TV66P6-TV66.
004D6F60 FF FF FF FF 0B 00 00 00 53 31 52 36 50 36 2D 53 ...S1R6P6-S
004D6F70 56 36 36 00 FF FF FF FF 0B 00 00 00 54 44 52 36 V66....TDR6
004D6F80 70 36 2D 53 56 36 36 00 FF FF FF FF 0A 00 00 00 p6-SV66.....
004D6F90 54 44 52 36 70 36 2D 45 56 53 00 00 FF FF FF FF TDR6p6-EVS..
004D6FA0 0A 00 00 00 54 44 52 36 70 36 2D 53 54 31 00 00 ....TDR6p6-ST1..
004D6FB0 FF FF FF FF 0A 00 00 00 54 73 66 36 70 36 2D 56 ....Tsf6p6-V
004D6FC0 42 31 00 00 FF FF FF FF 0B 00 00 00 42 38 73 66 B1.....B8sf
004D6FD0 36 70 36 2D 56 42 31 00 FF FF FF FF 0C 00 00 00 6p6-VB1.....
004D6FE0 42 38 54 44 66 36 70 36 2D 56 42 31 00 00 00 00 B8TDf6p6-VB1....
004D6FF0 FF FF FF FF 0C 00 00 00 42 53 34 35 66 36 70 36 ....BS45f6p6
004D7000 2D 56 42 31 00 00 00 00 FF FF FF FF 0B 00 00 00 -VB1.......
004D7010 4F 73 72 66 36 70 36 2D 56 42 31 00 FF FF FF FF Osrf6p6-VB1.
004D7020 0B 00 00 00 4F 66 72 67 36 70 36 2D 56 42 31 00 ...Ofrg6p6-VB1.
004D7030 FF FF FF FF 0B 00 00 00 45 53 72 67 36 70 36 2D ...ESrg6p6-
004D7040 56 42 31 00 FF FF FF FF 0B 00 00 00 49 55 72 67 VB1....IUrg
004D7050 36 70 36 2D 56 42 31 00 FF FF FF FF 09 00 00 00 6p6-VB1.....
004D7060 49 55 44 54 36 2D 42 58 31 00 00 00 FF FF FF FF IUDT6-BX1...
004D7070 09 00 00 00 44 55 49 54 36 2D 74 56 31 00 00 00 ....DUIT6-tV1...
004D7080 FF FF FF FF 09 00 00 00 53 31 49 54 36 2D 44 56 ....S1IT6-DV
004D7090 31 00 00 00 FF FF FF FF 09 00 00 00 53 4E 4D 53 1.......SNMS
004D70A0 36 2D 44 56 31 00 00 00 FF FF FF FF 09 00 00 00 6-DV1.......
004D70B0 53 4E 57 53 36 2D 54 4E 31 00 00 00 FF FF FF FF SNWS6-TN1...
004D70C0 09 00 00 00 53 4E 57 53 36 2D 4D 4E 33 00 00 00 ....SNWS6-MN3...
004D70D0 FF FF FF FF 09 00 00 00 54 44 56 53 36 2D 4D 4E ....TDVS6-MN
004D70E0 33 3
**************************************************************
【破解总结】
--------------------------------------------------------------
【算法总结】
用户名必须是内置用户名中的一个,然后经过累加用户名ASC值,乘以98D95,加上20,右移1位后,与注册码16进制比较
--------------------------------------------------------------
【算法注册机】
用keymake 2.0 编写算法注册机:
1、启动keymake,按Ctrl+N打开编辑窗口,将.code源码内容复制进去,然后按F2打开数据区,将.data内容复盖原有信息,再按F9一下,选择方案一(只有一个输入窗口),现在你点“确定”,稍等片刻就会在目录内生成一个算法注册机了!!!
2、算法注册机的源码如下:
keygen.rek
.const
.data
szHomePage db "http://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老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!