lzq1973 发表于 2006-3-20 08:23:32

彩虹MP3搜索王 V6.20简单算法分析

【破文标题】彩虹MP3搜索王 V6.20算法分析
【破文作者】lzq1973
【作者邮箱】[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:
004DB834   |.64:8920         mov dword ptr fs:,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:
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:
004DB865   |.E8 5290F2FF       call MP3SEARC.004048BC
004DB86A   |.8D4D F4         lea ecx,dword ptr ss:
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:      ;假码
004DB87C   |.8D83 04030000   lea eax,dword ptr ds:
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:
004DB898   |.A1 9C6B4E00       mov eax,dword ptr ds:
004DB89D   |.8B00            mov eax,dword ptr ds:
004DB89F   |.E8 B077FAFF       call MP3SEARC.00483054
004DB8A4   |.8B45 EC         mov eax,dword ptr ss:
004DB8A7   |.8D55 F0         lea edx,dword ptr ss:
004DB8AA   |.E8 E1E1F2FF       call MP3SEARC.00409A90
004DB8AF   |.8D45 F0         lea eax,dword ptr ss:
004DB8B2   |.BA 14BA4D00       mov edx,MP3SEARC.004DBA14         ;ASCII "\downpath.ini"
004DB8B7   |.E8 C892F2FF       call MP3SEARC.00404B84
004DB8BC   |.8B4D F0         mov ecx,dword ptr ss:
004DB8BF   |.B2 01             mov dl,1
004DB8C1   |.A1 34C54300       mov eax,dword ptr ds:
004DB8C6   |.E8 190DF6FF       call MP3SEARC.0043C5E4
004DB8CB   |.8BF0            mov esi,eax
004DB8CD   |.E8 82F7F2FF       call MP3SEARC.0040B054
004DB8D2   |.D825 24BA4D00   fsub dword ptr ds:
004DB8D8   |.83C4 F8         add esp,-8
004DB8DB   |.DD1C24            fstp qword ptr ss:
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:
004DB8ED   |.FF57 1C         call dword ptr ds:
004DB8F0   |.DD5D F8         fstp qword ptr ss:
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:
004DB907   |.D81D 4CBA4D00   fcomp dword ptr ds:
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:,eax
004DB919   |.E8 36F7F2FF       call MP3SEARC.0040B054
004DB91E   |.83C4 F8         add esp,-8
004DB921   |.DD1C24            fstp qword ptr ss:
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:
004DB933   |.FF56 30         call dword ptr ds:
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:
004DB948   |.FF56 08         call dword ptr ds:
004DB94B   |.A3 9C864E00       mov dword ptr ds:,eax
004DB950   |>8D55 E4         lea edx,dword ptr ss:
004DB953   |.A1 9C6B4E00       mov eax,dword ptr ds:
004DB958   |.8B00            mov eax,dword ptr ds:
004DB95A   |.E8 F576FAFF       call MP3SEARC.00483054
004DB95F   |.8B45 E4         mov eax,dword ptr ss:
004DB962   |.8D55 E8         lea edx,dword ptr ss:
004DB965   |.E8 26E1F2FF       call MP3SEARC.00409A90
004DB96A   |.8D45 E8         lea eax,dword ptr ss:
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:
004DB97A   |.B2 01             mov dl,1
004DB97C   |.A1 34C54300       mov eax,dword ptr ds:
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:
004DB998   |.FF57 08         call dword ptr ds:
004DB99B   |.A3 A0864E00       mov dword ptr ds:,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:
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:,edx
004DB9BF   |.68 D9B94D00       push MP3SEARC.004DB9D9
004DB9C4   |>8D45 E4         lea eax,dword ptr ss:
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


---------------- 跟进 004DB8F6E8 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:
004DB689    .64:8920         mov dword ptr fs:,esp
004DB68C    .C645 FF 00      mov byte ptr ss:,0
004DB690    .33C0            xor eax,eax
004DB692    .55                push ebp
004DB693    .68 E1B64D00       push MP3SEARC.004DB6E1
004DB698    .64:FF30         push dword ptr fs:
004DB69B    .64:8920         mov dword ptr fs:,esp
004DB69E    .8B83 04030000   mov eax,dword ptr ds:    ;假码
004DB6A4    .50                push eax
004DB6A5    .8D55 F8         lea edx,dword ptr ss:
004DB6A8    .8BC3            mov eax,ebx
004DB6AA    .E8 15FFFFFF       call MP3SEARC.004DB5C4            ;注册码的第三部分(机器码后4位转16进制,后面跟上H)
004DB6AF    .8B45 F8         mov eax,dword ptr ss:      ;(ASCII "1485H")
004DB6B2    .50                push eax
004DB6B3    .8D55 F4         lea edx,dword ptr ss:
004DB6B6    .8BC3            mov eax,ebx
004DB6B8    .E8 57FEFFFF       call MP3SEARC.004DB514            ;注册码第二部分(机码中间4位的第一位*第四位*第四+68,后面跟上C)
004DB6BD    .8B45 F4         mov eax,dword ptr ss:      ;(ASCII "248C")
004DB6C0    .50                push eax
004DB6C1    .8D55 F0         lea edx,dword ptr ss:
004DB6C4    .8BC3            mov eax,ebx
004DB6C6    .E8 9DFDFFFF       call MP3SEARC.004DB468            ;第一部分(前4位的和*第一位连接Q)
004DB6CB    .8B45 F0         mov eax,dword ptr ss:   ;(ASCII "48Q")
004DB6CE    .50                push eax
004DB6CF    .E8 68FCFFFF       call <jmp.&AutoGet.GetsameText>   ;拼接注册码的
004DB6D4    .8845 FF         mov byte ptr ss:,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:,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:,edx
004DB6F3    .68 0DB74D00       push MP3SEARC.004DB70D
004DB6F8    >8D45 F0         lea eax,dword ptr ss:
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:
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,就是注册码。

   注册信息保存在

"RegKey"="987654321"


   是不是很简单呢,算法注册器就不要了吧,大家照着上面做就行了。
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!

413133157 发表于 2006-3-20 11:41:20

好啊,可我看不懂,继续努力了。

wan 发表于 2006-3-20 13:06:59

不错,学习了~~~~~~~

不知这个软件是根据什么来得到机器码的?我的机器码竟跟楼主的是一样的~晕~~~

lzq1973 发表于 2006-3-20 13:10:38

原帖由 wan 于 2006-3-20 05:06 发表
不错,学习了~~~~~~~

不知这个软件是根据什么来得到机器码的?我的机器码竟跟楼主的是一样的~晕~~~


怪的很,这是很少出现的,可在其它机子上都是不同的

飘云 发表于 2006-3-21 06:55:07

原帖由 lzq1973 于 2006-3-20 05:10 发表



怪的很,这是很少出现的,可在其它机子上都是不同的

见怪不怪! 将机器码获取机制分析一下就知道这个问题了~/:D

Nisy 发表于 2006-3-21 07:22:34

我做了注册机 居然注册不成功~
页: [1]
查看完整版本: 彩虹MP3搜索王 V6.20简单算法分析