吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11169|回复: 31
上一主题 下一主题
收起左侧

[原创] 舞美播控软件破解 及 注册机实现

  [复制链接]
跳转到指定楼层
楼主
wtujoxk 发表于 2020-2-22 15:08 回帖奖励
本帖最后由 wtujoxk 于 2020-4-12 10:59 编辑

软件简介

IMoonBox适用于展示类文化宣传、3D影院、模拟互动、会议宣传、教育讲座、VR虚拟仿真等行业使用,支持4K超高清播放、多种加护接口、投多视频分层显示、任务编辑及预排等多项功能。

功能介绍

1、IMoonBox支持多种数字图片格式、视频格式与最新的电脑图像技术

2、可以创建多条时间先,所有内容可以预先根据顺序编排,让客户实现一键式操作

3、具有强大的播放功能,可以配合其他设备实现三维互动效果,可以提供非常新颖的特效

4、具有丰富的接口,在商业演出、产品发布会、摇滚音乐会、大型开幕式现场、展览馆、博物馆等广泛应用

破解分析

查壳,无壳,C++程序

载入OD分析,程序打开界面,需要输入序列号,输入假码,点击注册,弹出输入码不正确,请重新输入

通过分析得知,程序加载了 LicVerify.dll 来验证序列号是否正确,在OD里选 e,双击 LicVerify.dll 加载进入OD

在OD中搜索字符串,然后搜索验证码,就能看到验证码不正确,请重新输入

加载后可看到如图(因为每次打开后都是不同的地址,在 03B860E9    E8 B2FAFFFF     call LicVerif.03B85BA0 处下断)

即在字符串上面第二个 call,上面序列号是取的16位

通过分析后得知,序列号的生成是由申请码去掉“-”这个符号生成MD5(字符大写)+ 申请码得到的组合码

组合码再生成MD5(字符大写),然后取组合码的MD5前16位,就得到了序列号,call 分析,可能有误

0F655BA0    6A FF           push -0x1
0F655BA2    68 C181670F     push LicVerif.0F6781C1
0F655BA7    64:A1 00000000  mov eax,dword ptr fs:[0]
0F655BAD    50              push eax
0F655BAE    81EC 90000000   sub esp,0x90
0F655BB4    A1 703B680F     mov eax,dword ptr ds:[0xF683B70]
0F655BB9    33C4            xor eax,esp
0F655BBB    898424 8C000000 mov dword ptr ss:[esp+0x8C],eax
0F655BC2    53              push ebx
0F655BC3    56              push esi                                 ; LicVerif.0F687B58
0F655BC4    A1 703B680F     mov eax,dword ptr ds:[0xF683B70]
0F655BC9    33C4            xor eax,esp
0F655BCB    50              push eax
0F655BCC    8D8424 9C000000 lea eax,dword ptr ss:[esp+0x9C]
0F655BD3    64:A3 00000000  mov dword ptr fs:[0],eax
0F655BD9    8BF1            mov esi,ecx
0F655BDB    56              push esi                                 ; LicVerif.0F687B58
0F655BDC    8D4C24 18       lea ecx,dword ptr ss:[esp+0x18]
0F655BE0    E8 FBDFFFFF     call LicVerif.0F653BE0
0F655BE5    33DB            xor ebx,ebx
0F655BE7    6A 7F           push 0x7F
0F655BE9    8D4424 1D       lea eax,dword ptr ss:[esp+0x1D]
0F655BED    53              push ebx
0F655BEE    899C24 AC000000 mov dword ptr ss:[esp+0xAC],ebx
0F655BF5    50              push eax
0F655BF6    885C24 24       mov byte ptr ss:[esp+0x24],bl
0F655BFA    E8 71020100     call LicVerif.0F665E70
0F655BFF    8D5424 24       lea edx,dword ptr ss:[esp+0x24]
0F655C03    83C4 0C         add esp,0xC
0F655C06    8BC6            mov eax,esi                              ; LicVerif.0F687B58
0F655C08    2BD6            sub edx,esi                              ; LicVerif.0F687B58
0F655C0A    8D9B 00000000   lea ebx,dword ptr ds:[ebx]
0F655C10    8A08            mov cl,byte ptr ds:[eax]                 ; 读入申请码
0F655C12    880C02          mov byte ptr ds:[edx+eax],cl
0F655C15    40              inc eax
0F655C16    3ACB            cmp cl,bl
0F655C18  ^ 75 F6           jnz short LicVerif.0F655C10
0F655C1A    8D4C24 18       lea ecx,dword ptr ss:[esp+0x18]
0F655C1E    51              push ecx
0F655C1F    E8 ECE3FFFF     call LicVerif.MD5String                  ; 将申请码生成MD5
0F655C24    83C4 04         add esp,0x4
0F655C27    50              push eax
0F655C28    8D4C24 14       lea ecx,dword ptr ss:[esp+0x14]
0F655C2C    E8 AFDFFFFF     call LicVerif.0F653BE0
0F655C31    C68424 A4000000>mov byte ptr ss:[esp+0xA4],0x1
0F655C39    8B5424 10       mov edx,dword ptr ss:[esp+0x10]
0F655C3D    8B72 F4         mov esi,dword ptr ds:[edx-0xC]
0F655C40    8B42 F8         mov eax,dword ptr ds:[edx-0x8]
0F655C43    B9 01000000     mov ecx,0x1
0F655C48    2B4A FC         sub ecx,dword ptr ds:[edx-0x4]
0F655C4B    2BC6            sub eax,esi                              ; LicVerif.0F687B58
0F655C4D    0BC1            or eax,ecx
0F655C4F    7D 0E           jge short LicVerif.0F655C5F
0F655C51    56              push esi                                 ; LicVerif.0F687B58
0F655C52    8D4C24 14       lea ecx,dword ptr ss:[esp+0x14]
0F655C56    E8 D5D4FFFF     call LicVerif.0F653130
0F655C5B    8B5424 10       mov edx,dword ptr ss:[esp+0x10]
0F655C5F    8D46 01         lea eax,dword ptr ds:[esi+0x1]
0F655C62    50              push eax
0F655C63    52              push edx
0F655C64    E8 CDF40000     call LicVerif.0F665136
0F655C69    50              push eax
0F655C6A    E8 91E0FFFF     call LicVerif.0F653D00
0F655C6F    83C4 0C         add esp,0xC
0F655C72    3BF3            cmp esi,ebx
0F655C74    0F8C 05020000   jl LicVerif.0F655E7F
0F655C7A    8B4424 10       mov eax,dword ptr ss:[esp+0x10]          ; MD5换成大写
0F655C7E    3B70 F8         cmp esi,dword ptr ds:[eax-0x8]
0F655C81    0F8F F8010000   jg LicVerif.0F655E7F
0F655C87    8970 F4         mov dword ptr ds:[eax-0xC],esi           ; LicVerif.0F687B58
0F655C8A    8B4C24 10       mov ecx,dword ptr ss:[esp+0x10]
0F655C8E    8D5424 14       lea edx,dword ptr ss:[esp+0x14]
0F655C92    52              push edx
0F655C93    8D4424 14       lea eax,dword ptr ss:[esp+0x14]
0F655C97    881C0E          mov byte ptr ds:[esi+ecx],bl
0F655C9A    50              push eax
0F655C9B    8D4C24 14       lea ecx,dword ptr ss:[esp+0x14]
0F655C9F    51              push ecx
0F655CA0    E8 7BDCFFFF     call LicVerif.0F653920                   ; 将申请码生成的MD5与申请码再次组合
0F655CA5    83C4 0C         add esp,0xC
0F655CA8    C68424 A4000000>mov byte ptr ss:[esp+0xA4],0x2
0F655CB0    8B4424 0C       mov eax,dword ptr ss:[esp+0xC]           ; LicVerif.0F67D658
0F655CB4    8D5424 18       lea edx,dword ptr ss:[esp+0x18]
0F655CB8    2BD0            sub edx,eax
0F655CBA    8D9B 00000000   lea ebx,dword ptr ds:[ebx]
0F655CC0    8A08            mov cl,byte ptr ds:[eax]                 ; 读入组合码
0F655CC2    880C02          mov byte ptr ds:[edx+eax],cl
0F655CC5    40              inc eax
0F655CC6    3ACB            cmp cl,bl
0F655CC8  ^ 75 F6           jnz short LicVerif.0F655CC0
0F655CCA    8D5424 18       lea edx,dword ptr ss:[esp+0x18]
0F655CCE    52              push edx
0F655CCF    E8 3CE3FFFF     call LicVerif.MD5String                  ; 将组合码生成MD5 小写
0F655CD4    83C4 04         add esp,0x4
0F655CD7    3BC3            cmp eax,ebx
0F655CD9    75 04           jnz short LicVerif.0F655CDF
0F655CDB    33C9            xor ecx,ecx
0F655CDD    EB 0E           jmp short LicVerif.0F655CED
0F655CDF    8BC8            mov ecx,eax
0F655CE1    8D71 01         lea esi,dword ptr ds:[ecx+0x1]
0F655CE4    8A11            mov dl,byte ptr ds:[ecx]                 ; 读入组合码生成的MD5
0F655CE6    41              inc ecx
0F655CE7    3AD3            cmp dl,bl
0F655CE9  ^ 75 F9           jnz short LicVerif.0F655CE4
0F655CEB    2BCE            sub ecx,esi                              ; LicVerif.0F687B58
0F655CED    51              push ecx
0F655CEE    50              push eax
0F655CEF    8D4C24 14       lea ecx,dword ptr ss:[esp+0x14]
0F655CF3    E8 28CDFFFF     call LicVerif.0F652A20
0F655CF8    8B5424 0C       mov edx,dword ptr ss:[esp+0xC]           ; LicVerif.0F67D658
0F655CFC    8B72 F4         mov esi,dword ptr ds:[edx-0xC]
0F655CFF    8B42 F8         mov eax,dword ptr ds:[edx-0x8]
0F655D02    B9 01000000     mov ecx,0x1
0F655D07    2B4A FC         sub ecx,dword ptr ds:[edx-0x4]
0F655D0A    2BC6            sub eax,esi                              ; LicVerif.0F687B58
0F655D0C    0BC1            or eax,ecx
0F655D0E    7D 0E           jge short LicVerif.0F655D1E
0F655D10    56              push esi                                 ; LicVerif.0F687B58
0F655D11    8D4C24 10       lea ecx,dword ptr ss:[esp+0x10]
0F655D15    E8 16D4FFFF     call LicVerif.0F653130
0F655D1A    8B5424 0C       mov edx,dword ptr ss:[esp+0xC]           ; LicVerif.0F67D658
0F655D1E    8D46 01         lea eax,dword ptr ds:[esi+0x1]
0F655D21    50              push eax
0F655D22    52              push edx
0F655D23    E8 0EF40000     call LicVerif.0F665136
0F655D28    50              push eax
0F655D29    E8 D2DFFFFF     call LicVerif.0F653D00
0F655D2E    83C4 0C         add esp,0xC
0F655D31    3BF3            cmp esi,ebx
0F655D33    0F8C 46010000   jl LicVerif.0F655E7F
0F655D39    8B4424 0C       mov eax,dword ptr ss:[esp+0xC]           ; 组合码生成的MD5转成大写
0F655D3D    3B70 F8         cmp esi,dword ptr ds:[eax-0x8]
0F655D40    0F8F 39010000   jg LicVerif.0F655E7F
0F655D46    8970 F4         mov dword ptr ds:[eax-0xC],esi           ; LicVerif.0F687B58
0F655D49    8B4C24 0C       mov ecx,dword ptr ss:[esp+0xC]           ; LicVerif.0F67D658
0F655D4D    881C0E          mov byte ptr ds:[esi+ecx],bl
0F655D50    8B5424 0C       mov edx,dword ptr ss:[esp+0xC]           ; LicVerif.0F67D658
0F655D54    6A 10           push 0x10
0F655D56    52              push edx
0F655D57    57              push edi
0F655D58    E8 A5EF0100     call LicVerif.0F674D02
0F655D5D    83C4 0C         add esp,0xC
0F655D60    83CA FF         or edx,-0x1
0F655D63    C68424 A4000000>mov byte ptr ss:[esp+0xA4],0x1
0F655D6B    85C0            test eax,eax                             ; 组合码和假码比较
0F655D6D    8B4424 0C       mov eax,dword ptr ss:[esp+0xC]           ; LicVerif.0F67D658
0F655D71    0F85 96000000   jnz LicVerif.0F655E0D                    ; 爆破关键点不要实现
0F655D77    83C0 F0         add eax,-0x10
0F655D7A    8D48 0C         lea ecx,dword ptr ds:[eax+0xC]
0F655D7D    f0:0fc111       lock xadd dword ptr ds:[ecx],edx
0F655D81    4A              dec edx
0F655D82    85D2            test edx,edx
0F655D84    7F 0A           jg short LicVerif.0F655D90               ; 不实现
0F655D86    8B08            mov ecx,dword ptr ds:[eax]
0F655D88    8B11            mov edx,dword ptr ds:[ecx]
0F655D8A    50              push eax
0F655D8B    8B42 04         mov eax,dword ptr ds:[edx+0x4]
0F655D8E    FFD0            call eax
0F655D90    889C24 A4000000 mov byte ptr ss:[esp+0xA4],bl
0F655D97    8B4424 10       mov eax,dword ptr ss:[esp+0x10]
0F655D9B    83C0 F0         add eax,-0x10
0F655D9E    8D48 0C         lea ecx,dword ptr ds:[eax+0xC]
0F655DA1    83CA FF         or edx,-0x1
0F655DA4    f0:0fc111       lock xadd dword ptr ds:[ecx],edx
0F655DA8    4A              dec edx
0F655DA9    85D2            test edx,edx
0F655DAB    7F 0A           jg short LicVerif.0F655DB7               ; 不实现
0F655DAD    8B08            mov ecx,dword ptr ds:[eax]
0F655DAF    8B11            mov edx,dword ptr ds:[ecx]
0F655DB1    50              push eax
0F655DB2    8B42 04         mov eax,dword ptr ds:[edx+0x4]
0F655DB5    FFD0            call eax
0F655DB7    C78424 A4000000>mov dword ptr ss:[esp+0xA4],-0x1
0F655DC2    8B4424 14       mov eax,dword ptr ss:[esp+0x14]
0F655DC6    83C0 F0         add eax,-0x10
0F655DC9    8D48 0C         lea ecx,dword ptr ds:[eax+0xC]
0F655DCC    83CA FF         or edx,-0x1
0F655DCF    f0:0fc111       lock xadd dword ptr ds:[ecx],edx
0F655DD3    4A              dec edx
0F655DD4    85D2            test edx,edx
0F655DD6    7F 0A           jg short LicVerif.0F655DE2
0F655DD8    8B08            mov ecx,dword ptr ds:[eax]
0F655DDA    8B11            mov edx,dword ptr ds:[ecx]
0F655DDC    50              push eax
0F655DDD    8B42 04         mov eax,dword ptr ds:[edx+0x4]
0F655DE0    FFD0            call eax
0F655DE2    B8 01000000     mov eax,0x1
0F655DE7    8B8C24 9C000000 mov ecx,dword ptr ss:[esp+0x9C]
0F655DEE    64:890D 0000000>mov dword ptr fs:[0],ecx
0F655DF5    59              pop ecx                                  ; LicVerif.0F6560EE
0F655DF6    5E              pop esi                                  ; LicVerif.0F6560EE
0F655DF7    5B              pop ebx                                  ; LicVerif.0F6560EE
0F655DF8    8B8C24 8C000000 mov ecx,dword ptr ss:[esp+0x8C]
0F655DFF    33CC            xor ecx,esp
0F655E01    E8 C8EB0000     call LicVerif.0F6649CE
0F655E06    81C4 9C000000   add esp,0x9C
0F655E0C    C3              retn

到这里分析就结束了

注册机编写,用的是C#语言,不提供注册机下载,只提供原理及代码。

        private void button2_Click(object sender, EventArgs e)
        {
            string regCode = 申请码.Replace("-", "");   //去掉符号-
            string serialNumber = GenerateMD5(regCode).ToUpper() + regCode;  //生成MD5+申请号为组合码
            序列号 = GenerateMD5(serialNumber).ToUpper().Substring(0,16);  //将组合码生成MD5并转成大写取前16位
        }

                                //生成MD5
        public string GenerateMD5(string txt)
        {
            using (MD5 mi = MD5.Create())
            {
                byte[] buffer = Encoding.Default.GetBytes(txt);
                //开始加密
                byte[] newBuffer = mi.ComputeHash(buffer);
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < newBuffer.Length; i++)
                {
                    sb.Append(newBuffer[i].ToString("x2"));
                }
                return sb.ToString();
            }
        }

软件打开界面



第一次分析汇编并编写注册机,难免有很多错误,望指正!!!



免费评分

参与人数 9威望 +1 吾爱币 +29 热心值 +6 收起 理由
haoren + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
abcing + 1 + 1 感谢楼主提供的方法,写好了注册机~~~
大太迪 + 1 用心讨论,共获提升!
圆缘999999 + 1 谢谢@Thanks!
朱朱你堕落了 + 2 + 1 用心讨论,共获提升!
abcd4399 + 1 我很赞同!
百年抉择 + 1 + 1 用心讨论,共获提升!
bjxiaoyao + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
 楼主| wtujoxk 发表于 2020-2-22 22:04 |楼主
准女婿 发表于 2020-2-22 21:09
Bata 1.0.1和1.0.0的算法区别在于  Bata 1.0.1无需截取前16位

md5全写进去也没事,但是用的时候只用了前16位!例外有2.0版本么?
推荐
 楼主| wtujoxk 发表于 2020-2-22 22:07 |楼主
马克 发表于 2020-2-22 17:57
好东西,谁写个注册机放上来就更好了

其实就这个软件的算法来讲,无需写注册机都能算出来!就看你怎么用百度了!
沙发
shroer 发表于 2020-2-22 15:20
3#
 楼主| wtujoxk 发表于 2020-2-22 15:37 |楼主
shroer 发表于 2020-2-22 15:20
楼主 ,下载链接了?

百度搜一下,只能搜到这个版本!
4#
liuxianfu 发表于 2020-2-22 15:42
最新版1.0.0.3 https://pc.qq.com/detail/3/detail_23083.html
5#
zl33333 发表于 2020-2-22 16:09
注册机链接呢
6#
百年抉择 发表于 2020-2-22 17:25
我很喜欢这个帖子!
7#
马克 发表于 2020-2-22 17:57
好东西,谁写个注册机放上来就更好了
8#
duduhao 发表于 2020-2-22 19:11
太感谢楼主的好分享
9#
Snprszy 发表于 2020-2-22 19:28
我很喜欢这个帖子!
10#
wasdzjh 发表于 2020-2-22 20:26
编写注册机的时候,应该说下函数意思吧!不然看不懂
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-25 08:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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