吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3530|回复: 2
收起左侧

[会员申请] 申请会员ID:初雪月夜【申请通过】

[复制链接]
吾爱游客  发表于 2015-10-20 00:30
1、申 请 I D : 初雪月夜
2、个人邮箱:qwx_01@126.com
3、原创技术文章:
看了http://www.52pojie.cn/thread-376901-1-1.html  milkice的文章,暴力的太可怕,于是我也拿来分析了一下代码,借鉴了milkice的分析思路,没有修改程序的逻辑结构,只改了验证部分。
工具用了.NET Reflector+插件的reflexil,其他几个工具也用过,这个最顺手,看起来很更好
先看看mcmyadmin.exe的加密方式, 1.png
貌似还加了RSA的签名认证?
不过根据这个程序的名字来看只是一个更新程序,后来验证没有这个更新程序主程序一样可以运行,分析了一下他的入口,
  Console.BackgroundColor = ConsoleColor.DarkBlue;    Console.ForegroundColor = ConsoleColor.White;这两句,ok有颜色了,这主程序没用了。分析的时候有个ds引用,随手点开看看,有Gzip,直接用C#自己带的Gzip一下,下面是代码,除了最后的那些,剩下的是复制milkice的。
[C#] 纯文本查看 复制代码
            byte[] array = File.ReadAllBytes(@"C:\Users\qwx\Desktop\mcserver\mcmyadmin\McMyAdmin.ebi");[/font]            for (int i = 0; i < g.Length; i++)
            {
                if (array[i] != g[i])
                {
                    Console.WriteLine("Unrecognised File Header");
                }
            }
            MemoryStream memoryStream = new MemoryStream(array, false);
            BinaryReader binaryReader = new BinaryReader(memoryStream);
            memoryStream.Seek(-12L, SeekOrigin.End);
            int num = binaryReader.ReadInt32() - 2;
            int num2 = binaryReader.ReadInt32();
            int num3 = binaryReader.ReadInt32();
            memoryStream.Seek((long)(-(long)(num + 20 - num3)), SeekOrigin.Current);
            int count = binaryReader.ReadInt32();
            int count2 = binaryReader.ReadInt32();
            memoryStream.Seek(0L, SeekOrigin.Begin);
            byte[] array2 = new byte[]
        {
            31,
            139
        };
            binaryReader.ReadBytes(4);
            byte[] signature = binaryReader.ReadBytes(count);
            byte[] keyBlob = binaryReader.ReadBytes(count2);
            memoryStream.Seek(8L, SeekOrigin.Current);
            byte[] array3 = binaryReader.ReadBytes(num);
            byte[] array4 = new byte[num + 2];
            array2.CopyTo(array4, 0);
            array3.CopyTo(array4, 2);
            byte[] array5 = new byte[num2];
            MemoryStream a_ = new MemoryStream(array4);
            GZipStream Compress = new GZipStream(a_, CompressionMode.Decompress);
            Compress.Read(array5, 0, num2);
            FileStream fs = new FileStream(@"C:\Users\qwx\Desktop\mcserver\mcmyadmin\McMyAdminb.ebi", FileMode.Create); //TODO:Enter your own output file directory
            //将byte数组写入文件中
            fs.Write(array5, 0, array5.Length);
[font=Tahoma, Helvetica, SimSun, sans-serif]fs.Close();
解析出来的文件直接丢到reflect里,解析一下下手破解,先看类名,有两个关于License的,在CCLClient里面包含一个LicenceData类,有名字和授权类型,分析一下, 2.png 这个数据在Mcmyadmin的config下被使用了,进去看了一下,有licensetype这种枚举milkice就是修改这部分的代码不过修改这个担心会对程序造成影响,所以还是对注册过程patch吧查看Licencing下的公共方法,初始化里面看到了个pubkeyRSA,作者真愿意用这东西。。。除了CheckActivationData这个私有函数不能被反编译之外其他都好说,我看不用msil,暂时一放,丢到reflecior里面的时候发现被混淆[module: ConfusedBy("ConfuserEx v0.4.0-46-g76ab048")]在52上找了个可以反混淆的http://www.52pojie.cn/thread-362111-1-1.html根据那个old版本的做下去做完之后 3.png 可以看到了看了一下这个函数,注册码的机制也明白了注册码先读入,在license.dat里然后RSA解密,再将解析出来的JSON串变回类,放到info里,本来可以修改公钥然后做注册机的,但是貌似没法修改,在config里,那个东西没法反编译。那么没办法,直接强行破解吧,首先先改LicenceData的初始化函数让他一开始就有GradeName,我们要Enterprise版!直接修改汇编由于我不会MSIL,所以自己写了个C#的小程序,丢到reflector里面一看照葫芦画瓢 4.png 一条一条添加 5.png 我笨,不知道有啥更好的方法。。。添加完了,保存一下,重新打开 6.png 搞定,其他参数不改也罢,除了那个ID被使用了之外其他的都没用接下来修改验证的其他方法,首先是CheckActivationData由于info这个变量在licensing初始化的时候已经被初始化了,所以全程不需要修改这个变量,那么,这个函数就全部return ture吧return true只需要两行代码,先将原来的IL代码全部删除替换为ldc.i4.1ret然后删除所有的variables下的内容,否则会出错。 7.png CheckActivationState这个函数不要动,涉及mcmyadmin的验证MigrateLegacyLicence这函数不知道干啥的,调用参数有两个,一个是key 一个是email,目测没啥用,暂时跳过(其实是我看不懂这方法,貌似里面也没有代码,一直调用基类的)PerformActivation这个好办,是将注册码写会文件的,我们没有文件,这函数没有返回值,那好说,直接全部清空~除了最后的ret之外,保存重开一下(我这里自己操作失误,写成了return true,reflector直接打不开这个方法了,而且还没备份,好吧,重新来过。。。)Requery函数像是重新查询key的,时时刻刻验证嘛,好吧,直接return true保存一下,所有的东西都改完了,那么,一定要运行起来看看了 8.png ok Enterprise看到颜色很别扭对吧,开头那两句C#的话就是为了这个,写个bat修改一下颜色吧,不贴了。Machine ID全部都为0,那个ID在MSIL里面很难初始化,我没弄好,反正也不影响使用,就这么放着吧于是,以上就是破解过程,不够详细,我自己在破解的过程中思考了很多,好多方法跳来跳去很难分析,不过静下心来看看这还是很简单的,最后传一下我修改好的那个ebi,论坛貌似不让上传exe,那就上传个txt

下载后自行改名成exe后缀,可以直接运行最后上一张结果图 9.png

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

Hmily 发表于 2015-10-20 12:31
ID:初雪月夜
邮箱:qwx_01@126.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

PS:论坛禁止变相上传附件,你那txt我给你删除了,登陆成功后把文章整理一下重新发布到脱壳破解区吧,附件可以重新上传。
初雪月夜 发表于 2015-10-20 14:04
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-15 20:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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