- UID
- 5592
注册时间2005-12-21
阅读权限40
最后登录1970-1-1
独步武林
TA的每日心情 | 慵懒 2019-1-18 17:27 |
---|
签到天数: 30 天 [LV.5]常住居民I
|
【破文标题】彩虹MP3搜索王 V6.20算法分析
【破文作者】lzq1973[PYG][CZG]
【作者邮箱】[email protected]
【破解工具】OD、PEiD
【破解平台】WIN98、WIN2000
【软件名称】彩虹MP3搜索王 V6.20
【软件大小】678KB KB
【原版下载】http://www.xmqm.com/runsea/Mp3Search.htm
【保护方式】SN + 次数限制
【软件简介】 本软件整合了MP3、RM歌曲的搜索、播放、下载等全方位功能,是一款必备的网络利器。它采用先进的多线程、多引擎搜索技术,能在极短的时间内帮您从互连网上搜索到您想要的歌曲,并同时对搜索到的歌曲进行连接校验,保证所搜索到的歌曲的有效性。另外软件中还内置在线播放,多线程下载,歌词搜索,Flash游戏,电台收听等功能,是您搜索下载MP3、RM的强大工具。要找歌听歌就赶快使用彩虹MP3搜索王吧!
【破解声明】俺是只小小鸟,纯为学习,愿与大家分享!
------------------------------------------------------------------------
【破解过程】
运行程序,进入注册窗口输入假码后点确定,说是要重启,估计是重启验证。
PEID查壳为 Borland Delphi 6.0 - 7.0 无壳,心中暗喜,已成功一半。OD载入查找字符串“RegKey”有两处,其中一处断在这里
004DB818 /. 55 push ebp
004DB819 |. 8BEC mov ebp,esp
004DB81B |. 33C9 xor ecx,ecx
004DB81D |. 51 push ecx
004DB81E |. 51 push ecx
004DB81F |. 51 push ecx
004DB820 |. 51 push ecx
004DB821 |. 51 push ecx
004DB822 |. 51 push ecx
004DB823 |. 51 push ecx
004DB824 |. 53 push ebx
004DB825 |. 56 push esi
004DB826 |. 57 push edi
004DB827 |. 8BD8 mov ebx,eax
004DB829 |. 33C0 xor eax,eax
004DB82B |. 55 push ebp
004DB82C |. 68 D2B94D00 push MP3SEARC.004DB9D2
004DB831 |. 64:FF30 push dword ptr fs:[eax]
004DB834 |. 64:8920 mov dword ptr fs:[eax],esp
004DB837 |. 8BC3 mov eax,ebx
004DB839 |. E8 06FBFFFF call MP3SEARC.004DB344
004DB83E |. B9 01000080 mov ecx,80000001
004DB843 |. B2 01 mov dl,1
004DB845 |. A1 80D44300 mov eax,dword ptr ds:[43D480]
004DB84A |. E8 751DF6FF call MP3SEARC.0043D5C4
004DB84F |. 8BF0 mov esi,eax
004DB851 |. B1 01 mov cl,1
004DB853 |. BA E8B94D00 mov edx,MP3SEARC.004DB9E8 ; ASCII "\Software\MP3Search"
004DB858 |. 8BC6 mov eax,esi
004DB85A |. E8 611EF6FF call MP3SEARC.0043D6C0
004DB85F |. 8D83 04030000 lea eax,dword ptr ds:[ebx+304]
004DB865 |. E8 5290F2FF call MP3SEARC.004048BC
004DB86A |. 8D4D F4 lea ecx,dword ptr ss:[ebp-C]
004DB86D |. BA 04BA4D00 mov edx,MP3SEARC.004DBA04 ; ASCII "RegKey"
004DB872 |. 8BC6 mov eax,esi
004DB874 |. E8 0F20F6FF call MP3SEARC.0043D888 ; 获取注册表内注册码
004DB879 |. 8B55 F4 mov edx,dword ptr ss:[ebp-C] ; 假码
004DB87C |. 8D83 04030000 lea eax,dword ptr ds:[ebx+304]
004DB882 |. E8 8990F2FF call MP3SEARC.00404910
004DB887 |. 8BC6 mov eax,esi
004DB889 |. E8 9E1DF6FF call MP3SEARC.0043D62C
004DB88E |. 8BC6 mov eax,esi
004DB890 |. E8 1382F2FF call MP3SEARC.00403AA8
004DB895 |. 8D55 EC lea edx,dword ptr ss:[ebp-14]
004DB898 |. A1 9C6B4E00 mov eax,dword ptr ds:[4E6B9C]
004DB89D |. 8B00 mov eax,dword ptr ds:[eax]
004DB89F |. E8 B077FAFF call MP3SEARC.00483054
004DB8A4 |. 8B45 EC mov eax,dword ptr ss:[ebp-14]
004DB8A7 |. 8D55 F0 lea edx,dword ptr ss:[ebp-10]
004DB8AA |. E8 E1E1F2FF call MP3SEARC.00409A90
004DB8AF |. 8D45 F0 lea eax,dword ptr ss:[ebp-10]
004DB8B2 |. BA 14BA4D00 mov edx,MP3SEARC.004DBA14 ; ASCII "\downpath.ini"
004DB8B7 |. E8 C892F2FF call MP3SEARC.00404B84
004DB8BC |. 8B4D F0 mov ecx,dword ptr ss:[ebp-10]
004DB8BF |. B2 01 mov dl,1
004DB8C1 |. A1 34C54300 mov eax,dword ptr ds:[43C534]
004DB8C6 |. E8 190DF6FF call MP3SEARC.0043C5E4
004DB8CB |. 8BF0 mov esi,eax
004DB8CD |. E8 82F7F2FF call MP3SEARC.0040B054
004DB8D2 |. D825 24BA4D00 fsub dword ptr ds:[4DBA24]
004DB8D8 |. 83C4 F8 add esp,-8
004DB8DB |. DD1C24 fstp qword ptr ss:[esp]
004DB8DE |. 9B wait
004DB8DF |. B9 30BA4D00 mov ecx,MP3SEARC.004DBA30 ; ASCII "SearchTime"
004DB8E4 |. BA 44BA4D00 mov edx,MP3SEARC.004DBA44 ; ASCII "Search"
004DB8E9 |. 8BC6 mov eax,esi
004DB8EB |. 8B38 mov edi,dword ptr ds:[eax]
004DB8ED |. FF57 1C call dword ptr ds:[edi+1C]
004DB8F0 |. DD5D F8 fstp qword ptr ss:[ebp-8]
004DB8F3 |. 9B wait
004DB8F4 |. 8BC3 mov eax,ebx
004DB8F6 |. E8 75FDFFFF call MP3SEARC.004DB670 ; 注册算法关键
004DB8FB |. 84C0 test al,al
004DB8FD |. 75 51 jnz short MP3SEARC.004DB950
004DB8FF |. E8 50F7F2FF call MP3SEARC.0040B054
004DB904 |. DC65 F8 fsub qword ptr ss:[ebp-8]
004DB907 |. D81D 4CBA4D00 fcomp dword ptr ds:[4DBA4C]
004DB90D |. DFE0 fstsw ax
004DB90F |. 9E sahf
004DB910 |. 76 26 jbe short MP3SEARC.004DB938
004DB912 |. 33C0 xor eax,eax
004DB914 |. A3 9C864E00 mov dword ptr ds:[4E869C],eax
004DB919 |. E8 36F7F2FF call MP3SEARC.0040B054
004DB91E |. 83C4 F8 add esp,-8
004DB921 |. DD1C24 fstp qword ptr ss:[esp]
004DB924 |. 9B wait
004DB925 |. B9 30BA4D00 mov ecx,MP3SEARC.004DBA30 ; ASCII "SearchTime"
004DB92A |. BA 44BA4D00 mov edx,MP3SEARC.004DBA44 ; ASCII "Search"
004DB92F |. 8BC6 mov eax,esi
004DB931 |. 8B30 mov esi,dword ptr ds:[eax]
004DB933 |. FF56 30 call dword ptr ds:[esi+30]
004DB936 |. EB 18 jmp short MP3SEARC.004DB950
004DB938 |> 6A 00 push 0
004DB93A |. B9 58BA4D00 mov ecx,MP3SEARC.004DBA58
004DB93F |. BA 44BA4D00 mov edx,MP3SEARC.004DBA44 ; ASCII "Search"
004DB944 |. 8BC6 mov eax,esi
004DB946 |. 8B30 mov esi,dword ptr ds:[eax]
004DB948 |. FF56 08 call dword ptr ds:[esi+8]
004DB94B |. A3 9C864E00 mov dword ptr ds:[4E869C],eax
004DB950 |> 8D55 E4 lea edx,dword ptr ss:[ebp-1C]
004DB953 |. A1 9C6B4E00 mov eax,dword ptr ds:[4E6B9C]
004DB958 |. 8B00 mov eax,dword ptr ds:[eax]
004DB95A |. E8 F576FAFF call MP3SEARC.00483054
004DB95F |. 8B45 E4 mov eax,dword ptr ss:[ebp-1C]
004DB962 |. 8D55 E8 lea edx,dword ptr ss:[ebp-18]
004DB965 |. E8 26E1F2FF call MP3SEARC.00409A90
004DB96A |. 8D45 E8 lea eax,dword ptr ss:[ebp-18]
004DB96D |. BA 64BA4D00 mov edx,MP3SEARC.004DBA64 ; ASCII "\Listhtm\search.ini"
004DB972 |. E8 0D92F2FF call MP3SEARC.00404B84
004DB977 |. 8B4D E8 mov ecx,dword ptr ss:[ebp-18]
004DB97A |. B2 01 mov dl,1
004DB97C |. A1 34C54300 mov eax,dword ptr ds:[43C534]
004DB981 |. E8 5E0CF6FF call MP3SEARC.0043C5E4
004DB986 |. 8BF0 mov esi,eax
004DB988 |. 6A 01 push 1
004DB98A |. B9 80BA4D00 mov ecx,MP3SEARC.004DBA80 ; ASCII "sv"
004DB98F |. BA 8CBA4D00 mov edx,MP3SEARC.004DBA8C ; ASCII "version"
004DB994 |. 8BC6 mov eax,esi
004DB996 |. 8B38 mov edi,dword ptr ds:[eax]
004DB998 |. FF57 08 call dword ptr ds:[edi+8]
004DB99B |. A3 A0864E00 mov dword ptr ds:[4E86A0],eax
004DB9A0 |. 8BC6 mov eax,esi
004DB9A2 |. E8 0181F2FF call MP3SEARC.00403AA8
004DB9A7 |. BA 98BA4D00 mov edx,MP3SEARC.004DBA98 ; UNICODE "http://www.xmqm.com/runsea/GuanGao/newMp3Search.htm"
004DB9AC |. 8B83 FC020000 mov eax,dword ptr ds:[ebx+2FC]
004DB9B2 |. E8 4922FBFF call MP3SEARC.0048DC00
004DB9B7 |. 33C0 xor eax,eax
004DB9B9 |. 5A pop edx
004DB9BA |. 59 pop ecx
004DB9BB |. 59 pop ecx
004DB9BC |. 64:8910 mov dword ptr fs:[eax],edx
004DB9BF |. 68 D9B94D00 push MP3SEARC.004DB9D9
004DB9C4 |> 8D45 E4 lea eax,dword ptr ss:[ebp-1C]
004DB9C7 |. BA 05000000 mov edx,5
004DB9CC |. E8 0F8FF2FF call MP3SEARC.004048E0
004DB9D1 \. C3 retn
004DB9D2 .^ E9 6588F2FF jmp MP3SEARC.0040423C
004DB9D7 .^ EB EB jmp short MP3SEARC.004DB9C4
004DB9D9 . 5F pop edi
004DB9DA . 5E pop esi
004DB9DB . 5B pop ebx
004DB9DC . 8BE5 mov esp,ebp
004DB9DE . 5D pop ebp
004DB9DF . C3 retn
---------------- 跟进 004DB8F6 E8 75FDFFFF call MP3SEARC.004DB670 到这里 -------------
004DB670 $ 55 push ebp ; F7来到这里
004DB671 . 8BEC mov ebp,esp
004DB673 . 33C9 xor ecx,ecx
004DB675 . 51 push ecx
004DB676 . 51 push ecx
004DB677 . 51 push ecx
004DB678 . 51 push ecx
004DB679 . 53 push ebx
004DB67A . 56 push esi
004DB67B . 57 push edi
004DB67C . 8BD8 mov ebx,eax
004DB67E . 33C0 xor eax,eax
004DB680 . 55 push ebp
004DB681 . 68 06B74D00 push MP3SEARC.004DB706
004DB686 . 64:FF30 push dword ptr fs:[eax]
004DB689 . 64:8920 mov dword ptr fs:[eax],esp
004DB68C . C645 FF 00 mov byte ptr ss:[ebp-1],0
004DB690 . 33C0 xor eax,eax
004DB692 . 55 push ebp
004DB693 . 68 E1B64D00 push MP3SEARC.004DB6E1
004DB698 . 64:FF30 push dword ptr fs:[eax]
004DB69B . 64:8920 mov dword ptr fs:[eax],esp
004DB69E . 8B83 04030000 mov eax,dword ptr ds:[ebx+304] ; 假码
004DB6A4 . 50 push eax
004DB6A5 . 8D55 F8 lea edx,dword ptr ss:[ebp-8]
004DB6A8 . 8BC3 mov eax,ebx
004DB6AA . E8 15FFFFFF call MP3SEARC.004DB5C4 ; 注册码的第三部分(机器码后4位转16进制,后面跟上H)
004DB6AF . 8B45 F8 mov eax,dword ptr ss:[ebp-8] ; (ASCII "1485H")
004DB6B2 . 50 push eax
004DB6B3 . 8D55 F4 lea edx,dword ptr ss:[ebp-C]
004DB6B6 . 8BC3 mov eax,ebx
004DB6B8 . E8 57FEFFFF call MP3SEARC.004DB514 ; 注册码第二部分(机码中间4位的第一位*第四位*第四+68,后面跟上C)
004DB6BD . 8B45 F4 mov eax,dword ptr ss:[ebp-C] ; (ASCII "248C")
004DB6C0 . 50 push eax
004DB6C1 . 8D55 F0 lea edx,dword ptr ss:[ebp-10]
004DB6C4 . 8BC3 mov eax,ebx
004DB6C6 . E8 9DFDFFFF call MP3SEARC.004DB468 ; 第一部分(前4位的和*第一位连接Q)
004DB6CB . 8B45 F0 mov eax,dword ptr ss:[ebp-10] ; (ASCII "48Q")
004DB6CE . 50 push eax
004DB6CF . E8 68FCFFFF call <jmp.&AutoGet.GetsameText> ; 拼接注册码的
004DB6D4 . 8845 FF mov byte ptr ss:[ebp-1],al
004DB6D7 . 33C0 xor eax,eax
004DB6D9 . 5A pop edx
004DB6DA . 59 pop ecx
004DB6DB . 59 pop ecx
004DB6DC . 64:8910 mov dword ptr fs:[eax],edx
004DB6DF . EB 0A jmp short MP3SEARC.004DB6EB
004DB6E1 .^ E9 A288F2FF jmp MP3SEARC.00403F88
004DB6E6 . E8 058CF2FF call MP3SEARC.004042F0
004DB6EB > 33C0 xor eax,eax
004DB6ED . 5A pop edx
004DB6EE . 59 pop ecx
004DB6EF . 59 pop ecx
004DB6F0 . 64:8910 mov dword ptr fs:[eax],edx
004DB6F3 . 68 0DB74D00 push MP3SEARC.004DB70D
004DB6F8 > 8D45 F0 lea eax,dword ptr ss:[ebp-10]
004DB6FB . BA 03000000 mov edx,3
004DB700 . E8 DB91F2FF call MP3SEARC.004048E0
004DB705 . C3 retn
004DB706 .^ E9 318BF2FF jmp MP3SEARC.0040423C
004DB70B .^ EB EB jmp short MP3SEARC.004DB6F8
004DB70D . 8A45 FF mov al,byte ptr ss:[ebp-1]
004DB710 . 5F pop edi
004DB711 . 5E pop esi
004DB712 . 5B pop ebx
004DB713 . 8BE5 mov esp,ebp
004DB715 . 5D pop ebp
004DB716 . C3 retn
各部分计算代码就不贴出来,有兴趣的话跟进去看一看~~,到这里吧!小鸟我只能做到这了?
------------------------------------------------------------------------
【算法总结】
其实算法还是很简单的:
1、机器码分成3段,各部分长度4,即前4位、中间4位、后4位;
2、注册码由3部分组成,分别对应机器的3段;
3、注册码第一部分,即机器码前4位之和*其第1位,后面连接Q;
4、注册码第二部分,即机器码中间4位的第1位*第4位*第4位+68,后面跟C;
5、注册码第三部分,即机器码后4位转16进制,后面跟H。
如机器码为325650565253,分成3段就是,3256、5056和5253,那么注册码各部分如下:
1、(3+2+5+6)*3=48,后面连接Q,即48Q;
2、5*6*6+68=248,后面连接C,即248C;
3、5253转16进制为1485,后面连接H,即1485H。
最后三部分拼接为48Q248C1485H,就是注册码。
注册信息保存在
[HKEY_CURRENT_USER\Software\MP3Search]
"RegKey"="987654321"
是不是很简单呢,算法注册器就不要了吧,大家照着上面做就行了。
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢! |
|