飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2940|回复: 5

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

[复制链接]
  • TA的每日心情
    慵懒
    2019-1-18 17:27
  • 签到天数: 30 天

    [LV.5]常住居民I

    发表于 2006-3-20 08:23:32 | 显示全部楼层 |阅读模式
    【破文标题】彩虹MP3搜索王 V6.20算法分析
    【破文作者】lzq1973[PYG][CZG]
    【作者邮箱】lzq9888@126.com
    破解工具】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"


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

    该用户从未签到

    发表于 2006-3-20 11:41:20 | 显示全部楼层
    好啊,可我看不懂,继续努力了。
    PYG19周年生日快乐!
  • TA的每日心情

    2016-6-2 20:34
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2006-3-20 13:06:59 | 显示全部楼层
    不错,学习了~~~~~~~

    不知这个软件是根据什么来得到机器码的?我的机器码竟跟楼主的是一样的~晕~~~
    SpxImage.gif
    PYG19周年生日快乐!
  • TA的每日心情
    慵懒
    2019-1-18 17:27
  • 签到天数: 30 天

    [LV.5]常住居民I

     楼主| 发表于 2006-3-20 13:10:38 | 显示全部楼层
    原帖由 wan 于 2006-3-20 05:06 发表
    不错,学习了~~~~~~~

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



    怪的很,这是很少出现的,可在其它机子上都是不同的
    PYG19周年生日快乐!
  • TA的每日心情
    难过
    2024-4-22 14:49
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2006-3-21 06:55:07 | 显示全部楼层
    原帖由 lzq1973 于 2006-3-20 05:10 发表



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


    见怪不怪! 将机器码获取机制分析一下就知道这个问题了~/:D
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2006-3-21 07:22:34 | 显示全部楼层
    我做了注册机 居然注册不成功~
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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