【破文标题】Playlist Creator for SanDisk Sansa Clip 2.32 算法分析
【破文作者】tianxj
【作者邮箱】tianxj_2007@126.com
【作者主页】WwW.ChiNaPYG.CoM
【破解工具】PEiD,OD
【破解平台】Windows XP sp3
【软件名称】Playlist Creator for SanDisk Sansa Clip 2.32
【软件大小】1722KB 
【软件类别】国外软件/音频播放  
【软件授权】共享版 
【软件语言】英文 
【运行环境】Winxp/vista/win7/2000/2003 
【更新时间】2010-4-30 
【原版下载】http://www.onlinedown.net/soft/102510.htm
【保护方式】注册码
【软件简介】Playlist Creator for SanDisk Sansa Clip是一款音频播放软件,可以自动创建你的Sansa音乐播放。它的工作原理是通过搜索设备上的所有音乐和文件夹,将被自

动转移到新创建音乐播放列表。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------
**************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
**************************************************************
二、用PEiD对playlistcreatorforsandisksansaclip.exe查壳,为 Borland Delphi 6.0 - 7.0 [Overlay]
**************************************************************
三、运行OD,利用字符串来到关键
==============================================================

代码:
00546F6C  /.  55            push    ebp
00546F6D  |.  8BEC          mov     ebp, esp
00546F6F  |.  B9 09000000   mov     ecx, 9
00546F74  |>  6A 00         /push    0
00546F76  |.  6A 00         |push    0
00546F78  |.  49            |dec     ecx
00546F79  |.^ 75 F9         \jnz     short 00546F74
00546F7B  |.  51            push    ecx
00546F7C  |.  53            push    ebx
00546F7D  |.  56            push    esi
00546F7E  |.  8BD8          mov     ebx, eax
00546F80  |.  33C0          xor     eax, eax
00546F82  |.  55            push    ebp
00546F83  |.  68 F4715400   push    005471F4
00546F88  |.  64:FF30       push    dword ptr fs:[eax]
00546F8B  |.  64:8920       mov     dword ptr fs:[eax], esp
00546F8E  |.  8D55 F0       lea     edx, dword ptr [ebp-10]
00546F91  |.  8BB3 F0020000 mov     esi, dword ptr [ebx+2F0]
00546F97  |.  8BC6          mov     eax, esi
00546F99  |.  E8 D2FCEFFF   call    00446C70
00546F9E  |.  8B55 F0       mov     edx, dword ptr [ebp-10]          ;  //邮箱名
00546FA1  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
00546FA4  |.  E8 B7E3EBFF   call    00405360
00546FA9  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
00546FAC  |.  8D55 F8       lea     edx, dword ptr [ebp-8]
00546FAF  |.  E8 3055F8FF   call    004CC4E4
00546FB4  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
00546FB7  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
00546FBA  |.  E8 25DDEBFF   call    00404CE4
00546FBF  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
00546FC2  |.  8BC6          mov     eax, esi
00546FC4  |.  E8 D7FCEFFF   call    00446CA0
00546FC9  |.  8D55 E0       lea     edx, dword ptr [ebp-20]
00546FCC  |.  8BB3 F4020000 mov     esi, dword ptr [ebx+2F4]
00546FD2  |.  8BC6          mov     eax, esi
00546FD4  |.  E8 97FCEFFF   call    00446C70
00546FD9  |.  8B55 E0       mov     edx, dword ptr [ebp-20]          ;  //试炼码
00546FDC  |.  8D45 E4       lea     eax, dword ptr [ebp-1C]
00546FDF  |.  E8 7CE3EBFF   call    00405360
00546FE4  |.  8B45 E4       mov     eax, dword ptr [ebp-1C]
00546FE7  |.  8D55 E8       lea     edx, dword ptr [ebp-18]
00546FEA  |.  E8 F554F8FF   call    004CC4E4
00546FEF  |.  8B55 E8       mov     edx, dword ptr [ebp-18]
00546FF2  |.  8D45 EC       lea     eax, dword ptr [ebp-14]
00546FF5  |.  E8 EADCEBFF   call    00404CE4
00546FFA  |.  8B55 EC       mov     edx, dword ptr [ebp-14]
00546FFD  |.  8BC6          mov     eax, esi
00546FFF  |.  E8 9CFCEFFF   call    00446CA0
00547004  |.  8D55 D8       lea     edx, dword ptr [ebp-28]
00547007  |.  8B83 F4020000 mov     eax, dword ptr [ebx+2F4]
0054700D  |.  E8 5EFCEFFF   call    00446C70
00547012  |.  8B45 D8       mov     eax, dword ptr [ebp-28]
00547015  |.  8D55 DC       lea     edx, dword ptr [ebp-24]
00547018  |.  E8 AB24ECFF   call    004094C8
0054701D  |.  8B45 DC       mov     eax, dword ptr [ebp-24]
00547020  |.  50            push    eax
00547021  |.  8D55 D0       lea     edx, dword ptr [ebp-30]
00547024  |.  8B83 F0020000 mov     eax, dword ptr [ebx+2F0]
0054702A  |.  E8 41FCEFFF   call    00446C70
0054702F  |.  8B45 D0       mov     eax, dword ptr [ebp-30]          ;  //邮箱名
00547032  |.  8D4D D4       lea     ecx, dword ptr [ebp-2C]
00547035  |.  8B93 1C030000 mov     edx, dword ptr [ebx+31C]         ;  //字符串"Playlist Creator for SanDisk Sansa Clip"
0054703B  |.  E8 E0FDFFFF   call    00546E20                         ;  //算法CALL
00547040  |.  8B55 D4       mov     edx, dword ptr [ebp-2C]          ;  //注册码
00547043  |.  58            pop     eax                              ;  //试炼码
00547044  |.  E8 17DEEBFF   call    00404E60                         ;  //比较CALL
00547049  |.  0F85 F4000000 jnz     00547143                         ;  //关键跳转
0054704F  |.  8D55 C8       lea     edx, dword ptr [ebp-38]
00547052  |.  8B83 F0020000 mov     eax, dword ptr [ebx+2F0]
00547058  |.  E8 13FCEFFF   call    00446C70
0054705D  |.  8B45 C8       mov     eax, dword ptr [ebp-38]
00547060  |.  8D55 CC       lea     edx, dword ptr [ebp-34]
00547063  |.  E8 6024ECFF   call    004094C8
00547068  |.  8B45 CC       mov     eax, dword ptr [ebp-34]
0054706B  |.  50            push    eax
0054706C  |.  8D45 C4       lea     eax, dword ptr [ebp-3C]
0054706F  |.  8B8B 1C030000 mov     ecx, dword ptr [ebx+31C]
00547075  |.  BA 0C725400   mov     edx, 0054720C                    ;  software\rinjanisoft\
0054707A  |.  E8 E9DCEBFF   call    00404D68
0054707F  |.  8B45 C4       mov     eax, dword ptr [ebp-3C]
00547082  |.  BA 2C725400   mov     edx, 0054722C                    ;  email
00547087  |.  59            pop     ecx
00547088  |.  E8 C353F8FF   call    004CC450
0054708D  |.  8D55 C0       lea     edx, dword ptr [ebp-40]
00547090  |.  8B83 F4020000 mov     eax, dword ptr [ebx+2F4]
00547096  |.  E8 D5FBEFFF   call    00446C70
0054709B  |.  8B45 C0       mov     eax, dword ptr [ebp-40]
0054709E  |.  50            push    eax
0054709F  |.  8D45 BC       lea     eax, dword ptr [ebp-44]
005470A2  |.  8B8B 1C030000 mov     ecx, dword ptr [ebx+31C]
005470A8  |.  BA 0C725400   mov     edx, 0054720C                    ;  software\rinjanisoft\
005470AD  |.  E8 B6DCEBFF   call    00404D68
005470B2  |.  8B45 BC       mov     eax, dword ptr [ebp-44]
005470B5  |.  BA 3C725400   mov     edx, 0054723C                    ;  key
005470BA  |.  59            pop     ecx
005470BB  |.  E8 9053F8FF   call    004CC450
005470C0  |.  C783 4C020000>mov     dword ptr [ebx+24C], 1
005470CA  |.  B1 01         mov     cl, 1
005470CC  |.  B2 01         mov     dl, 1
005470CE  |.  A1 C0695400   mov     eax, dword ptr [5469C0]
005470D3  |.  E8 84ADEDFF   call    00421E5C
005470D8  |.  8983 28030000 mov     dword ptr [ebx+328], eax
005470DE  |.  8D55 B8       lea     edx, dword ptr [ebp-48]
005470E1  |.  8B83 F0020000 mov     eax, dword ptr [ebx+2F0]
005470E7  |.  E8 84FBEFFF   call    00446C70
005470EC  |.  8B55 B8       mov     edx, dword ptr [ebp-48]
005470EF  |.  8B83 28030000 mov     eax, dword ptr [ebx+328]
005470F5  |.  83C0 38       add     eax, 38
005470F8  |.  E8 8FD9EBFF   call    00404A8C
005470FD  |.  8B83 28030000 mov     eax, dword ptr [ebx+328]
00547103  |.  83C0 34       add     eax, 34
00547106  |.  8B93 1C030000 mov     edx, dword ptr [ebx+31C]
0054710C  |.  E8 7BD9EBFF   call    00404A8C
00547111  |.  8B83 28030000 mov     eax, dword ptr [ebx+328]
00547117  |.  E8 8CB0EDFF   call    004221A8
0054711C  |.  68 48725400   push    00547248                         ;  thank you for registering
00547121  |.  FFB3 1C030000 push    dword ptr [ebx+31C]
00547127  |.  68 6C725400   push    0054726C                         ;  !
0054712C  |.  8D45 B4       lea     eax, dword ptr [ebp-4C]
0054712F  |.  BA 03000000   mov     edx, 3
00547134  |.  E8 A3DCEBFF   call    00404DDC
00547139  |.  8B45 B4       mov     eax, dword ptr [ebp-4C]
0054713C  |.  E8 F34BF8FF   call    004CBD34
00547141  |.  EB 11         jmp     short 00547154
00547143  |>  8BC3          mov     eax, ebx
00547145  |.  E8 DE61F0FF   call    0044D328
0054714A  |.  BA 74725400   mov     edx, 00547274                    ;  u
0054714F  |.  E8 A44CF8FF   call    004CBDF8
00547154  |>  33C0          xor     eax, eax
00547156  |.  5A            pop     edx
00547157  |.  59            pop     ecx
00547158  |.  59            pop     ecx
00547159  |.  64:8910       mov     dword ptr fs:[eax], edx
0054715C  |.  68 FE715400   push    005471FE
00547161  |>  8D45 B4       lea     eax, dword ptr [ebp-4C]
00547164  |.  E8 CFD8EBFF   call    00404A38
00547169  |.  8D45 B8       lea     eax, dword ptr [ebp-48]
0054716C  |.  E8 C7D8EBFF   call    00404A38
00547171  |.  8D45 BC       lea     eax, dword ptr [ebp-44]
00547174  |.  E8 BFD8EBFF   call    00404A38
00547179  |.  8D45 C0       lea     eax, dword ptr [ebp-40]
0054717C  |.  E8 B7D8EBFF   call    00404A38
00547181  |.  8D45 C4       lea     eax, dword ptr [ebp-3C]
00547184  |.  E8 AFD8EBFF   call    00404A38
00547189  |.  8D45 C8       lea     eax, dword ptr [ebp-38]
0054718C  |.  E8 A7D8EBFF   call    00404A38
00547191  |.  8D45 CC       lea     eax, dword ptr [ebp-34]
00547194  |.  E8 9FD8EBFF   call    00404A38
00547199  |.  8D45 D0       lea     eax, dword ptr [ebp-30]
0054719C  |.  E8 97D8EBFF   call    00404A38
005471A1  |.  8D45 D4       lea     eax, dword ptr [ebp-2C]
005471A4  |.  E8 8FD8EBFF   call    00404A38
005471A9  |.  8D45 D8       lea     eax, dword ptr [ebp-28]
005471AC  |.  E8 87D8EBFF   call    00404A38
005471B1  |.  8D45 DC       lea     eax, dword ptr [ebp-24]
005471B4  |.  E8 7FD8EBFF   call    00404A38
005471B9  |.  8D45 E0       lea     eax, dword ptr [ebp-20]
005471BC  |.  E8 77D8EBFF   call    00404A38
005471C1  |.  8D45 E4       lea     eax, dword ptr [ebp-1C]
005471C4  |.  BA 02000000   mov     edx, 2
005471C9  |.  E8 D2DFEBFF   call    004051A0
005471CE  |.  8D45 EC       lea     eax, dword ptr [ebp-14]
005471D1  |.  E8 62D8EBFF   call    00404A38
005471D6  |.  8D45 F0       lea     eax, dword ptr [ebp-10]
005471D9  |.  E8 5AD8EBFF   call    00404A38
005471DE  |.  8D45 F4       lea     eax, dword ptr [ebp-C]
005471E1  |.  BA 02000000   mov     edx, 2
005471E6  |.  E8 B5DFEBFF   call    004051A0
005471EB  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
005471EE  |.  E8 45D8EBFF   call    00404A38
005471F3  \.  C3            retn
005471F4   .^ E9 E3D0EBFF   jmp     004042DC
005471F9   .^ E9 63FFFFFF   jmp     00547161
005471FE   .  5E            pop     esi
005471FF   .  5B            pop     ebx
00547200   .  8BE5          mov     esp, ebp
00547202   .  5D            pop     ebp
00547203   .  C3            retn
==============================================================
00546E20  /$  55            push    ebp
00546E21  |.  8BEC          mov     ebp, esp
00546E23  |.  6A 00         push    0
00546E25  |.  6A 00         push    0
00546E27  |.  6A 00         push    0
00546E29  |.  6A 00         push    0
00546E2B  |.  6A 00         push    0
00546E2D  |.  6A 00         push    0
00546E2F  |.  53            push    ebx
00546E30  |.  56            push    esi
00546E31  |.  8BF1          mov     esi, ecx
00546E33  |.  8955 F8       mov     dword ptr [ebp-8], edx
00546E36  |.  8945 FC       mov     dword ptr [ebp-4], eax
00546E39  |.  8B45 FC       mov     eax, dword ptr [ebp-4]           ;  //邮箱名
00546E3C  |.  E8 C3E0EBFF   call    00404F04
00546E41  |.  8B45 F8       mov     eax, dword ptr [ebp-8]           ;  //字符串"Playlist Creator for SanDisk Sansa Clip"
00546E44  |.  E8 BBE0EBFF   call    00404F04
00546E49  |.  33C0          xor     eax, eax
00546E4B  |.  55            push    ebp
00546E4C  |.  68 246F5400   push    00546F24
00546E51  |.  64:FF30       push    dword ptr fs:[eax]
00546E54  |.  64:8920       mov     dword ptr fs:[eax], esp
00546E57  |.  8BC6          mov     eax, esi
00546E59  |.  BA 3C6F5400   mov     edx, 00546F3C                    ;  sdfasdfasdfsdf
00546E5E  |.  E8 29DCEBFF   call    00404A8C
00546E63  |.  837D FC 00    cmp     dword ptr [ebp-4], 0
00546E67  |.  0F84 9C000000 je      00546F09                         ;  //邮箱名为空则跳
00546E6D  |.  8D55 EC       lea     edx, dword ptr [ebp-14]
00546E70  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
00546E73  |.  E8 5026ECFF   call    004094C8
00546E78  |.  8B55 EC       mov     edx, dword ptr [ebp-14]
00546E7B  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
00546E7E  |.  E8 4DDCEBFF   call    00404AD0
00546E83  |.  8D4D E8       lea     ecx, dword ptr [ebp-18]
00546E86  |.  BA 13000000   mov     edx, 13
00546E8B  |.  8B45 F8       mov     eax, dword ptr [ebp-8]           ;  //字符串"Playlist Creator for SanDisk Sansa Clip"
00546E8E  |.  E8 ED57F8FF   call    004CC680                         ;  //取字符串右边19位
00546E93  |.  8B45 E8       mov     eax, dword ptr [ebp-18]          ;  //字符串"or SanDisk Sansa Clip"
00546E96  |.  8D4D F4       lea     ecx, dword ptr [ebp-C]
00546E99  |.  BA 0A000000   mov     edx, 0A
00546E9E  |.  E8 8557F8FF   call    004CC628                         ;  //取字符串左边10位
00546EA3  |.  837D F4 00    cmp     dword ptr [ebp-C], 0
00546EA7  |.  74 60         je      short 00546F09                   ;  //字符串"or SanDisk"为空则跳
00546EA9  |.  BB 01000000   mov     ebx, 1                           ;  //计数器
00546EAE  |>  8B45 FC       /mov     eax, dword ptr [ebp-4]          ;  //邮箱名
00546EB1  |.  E8 66DEEBFF   |call    00404D1C                        ;  //取邮箱名长度
00546EB6  |.  50            |push    eax
00546EB7  |.  8BC3          |mov     eax, ebx
00546EB9  |.  48            |dec     eax
00546EBA  |.  5A            |pop     edx
00546EBB  |.  8BCA          |mov     ecx, edx
00546EBD  |.  99            |cdq
00546EBE  |.  F7F9          |idiv    ecx
00546EC0  |.  8B45 FC       |mov     eax, dword ptr [ebp-4]          ;  //邮箱名
00546EC3  |.  8A0410        |mov     al, byte ptr [eax+edx]          ;  //逐位取邮箱名
00546EC6  |.  8B55 F4       |mov     edx, dword ptr [ebp-C]          ;  //字符串"or SanDisk"
00546EC9  |.  8A541A FF     |mov     dl, byte ptr [edx+ebx-1]        ;  //逐位取字符串"or SanDisk"
00546ECD  |.  32C2          |xor     al, dl                          ;  //al=al XOR dl
00546ECF  |.  25 FF000000   |and     eax, 0FF                        ;  //eax=eax AND 0FFh
00546ED4  |.  8D55 F0       |lea     edx, dword ptr [ebp-10]
00546ED7  |.  E8 E02BECFF   |call    00409ABC                        ;  //将eax转10进制字符串
00546EDC  |.  8B45 F0       |mov     eax, dword ptr [ebp-10]         ;  //10进制字符串
00546EDF  |.  E8 38DEEBFF   |call    00404D1C                        ;  //取10进制字符串长度
00546EE4  |.  8B55 F0       |mov     edx, dword ptr [ebp-10]         ;  //10进制字符串
00546EE7  |.  8A4402 FF     |mov     al, byte ptr [edx+eax-1]        ;  //取10进制字符串最右边1位
00546EEB  |.  50            |push    eax
00546EEC  |.  8D45 F4       |lea     eax, dword ptr [ebp-C]
00546EEF  |.  E8 78E0EBFF   |call    00404F6C
00546EF4  |.  5A            |pop     edx
00546EF5  |.  885418 FF     |mov     byte ptr [eax+ebx-1], dl        ;  //保存dl
00546EF9  |.  43            |inc     ebx
00546EFA  |.  83FB 0B       |cmp     ebx, 0B
00546EFD  |.^ 75 AF         \jnz     short 00546EAE                  ;  //循环
00546EFF  |.  8BC6          mov     eax, esi
00546F01  |.  8B55 F4       mov     edx, dword ptr [ebp-C]           ;  //注册码
00546F04  |.  E8 83DBEBFF   call    00404A8C
00546F09  |>  33C0          xor     eax, eax
00546F0B  |.  5A            pop     edx
00546F0C  |.  59            pop     ecx
00546F0D  |.  59            pop     ecx
00546F0E  |.  64:8910       mov     dword ptr fs:[eax], edx
00546F11  |.  68 2B6F5400   push    00546F2B
00546F16  |>  8D45 E8       lea     eax, dword ptr [ebp-18]
00546F19  |.  BA 06000000   mov     edx, 6
00546F1E  |.  E8 39DBEBFF   call    00404A5C
00546F23  \.  C3            retn
00546F24   .^ E9 B3D3EBFF   jmp     004042DC
00546F29   .^ EB EB         jmp     short 00546F16
00546F2B   .  5E            pop     esi
00546F2C   .  5B            pop     ebx
00546F2D   .  8BE5          mov     esp, ebp
00546F2F   .  5D            pop     ebp
00546F30   .  C3            retn
**************************************************************  
【破解总结】
--------------------------------------------------------------
【算法注册机】
用Keymake来模拟下算法
KeyGen.rek

.data 
szHomePage db "http://www.chinapyg.com",0 
szEmail    db "mailto:tianxj_2007@126.com",0 
szErrMess  db "请输入邮箱名!",0 
szChar    db "or SanDisk",0 
szFMT     db '%d',0
szTemp    db 20 dup(0) 
szBuffer  db 50 dup(0) 

.code
  mov     ebx, 1h
L002:
  lea     eax, hInput1 
  invoke  lstrlen, eax 
  push    eax
  mov     eax, ebx
  dec     eax
  pop     edx
  mov     ecx, edx
  cdq
  idiv    ecx
  lea     eax, hInput1 
  mov     al, byte ptr [eax+edx]
  lea     edx, szChar
  mov     dl, byte ptr [edx+ebx-1]
  xor     al, dl
  and     eax, 0FFh
  invoke wsprintf,addr szTemp,addr szFMT,eax
  lea     eax, szTemp
  invoke  lstrlen, eax 
  lea     edx, szTemp
  mov     al, byte ptr [edx+eax-1]
  mov     byte ptr [szBuffer+ebx-1], al
  inc     ebx
  cmp     ebx, 0Bh
  jnz L002
  lea     eax, szBuffer
--------------------------------------------------------------
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!
感谢您能看完!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!