http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 20273|回复: 37

[破解] 来个破解【小米火警】的教程

[复制链接]
发表于 2014-4-21 16:08:07 | 显示全部楼层 |阅读模式
现在小米的手机现在很火爆so 现在抢小米官网抢手机就很难
------现在出来很多抢小米的软件,今天就拿火警为例讲讲他的破解过程Let‘s Go-----






1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2014-4-21 16:09:44 | 显示全部楼层
不说废话了,开始
首先,不管那么多,拿
NETReflector  加载  小米火警.exe 再
175511qw03zvzzl15ylail.gif
 楼主| 发表于 2014-4-21 16:12:25 | 显示全部楼层
发现一堆乱七八糟的名字,这不科学啊undefined肯定是被混淆过了的,这就需要反混淆
还好 Blue 大教程里面的那个Reflexil 插件自带有反混淆的功能

180041eujyaeyozu9yiss3.gif
 楼主| 发表于 2014-4-21 16:15:37 | 显示全部楼层
怎么图片不能一下全部发出来?一发出来就变成小的啦~
180255g97vgzio5292g399.gif
 楼主| 发表于 2014-4-21 16:16:37 | 显示全部楼层
果然发现了,这exe 用了 Dotfuscator 混淆过了,,戳死它,这会生成一个 小米火警.Cleaned.exe 的文件,再用Re来加载它
戳得爽吧,这下代码好看多了undefined
终于开始正真的破解了
1.最核心的问题授权破解
用Bule大的方法。。直接搜索   “授权” 相信大家都会找到这个地方

 楼主| 发表于 2014-4-21 16:17:16 | 显示全部楼层
[C#] 纯文本查看 复制代码
string[] strArray = u.b("AddShouquan:" + xiaomiId + "||" + str).Split(new string[] { "||" }, StringSplitOptions.None);
            if (strArray.Length == 2)
            {
                MessageBox.Show(strArray[1], "授权结果");
                if ("OK".Equals(strArray[0]))
                {
                    this._vm.i[selectedItem].a(ai.e);
                    selectedItem.Message = "";
                    this._vm.i[selectedItem].b(true);
                    this._vm.i[selectedItem].t();
                }
            }
 楼主| 发表于 2014-4-21 16:18:20 | 显示全部楼层
幸福来的太容易了,很像关键代码,我的思路是看它授权成功的时候做了什么操作,,我再把这写操作注入到对象的构造器上面
在这里搞了好久。事实证明,不行。。怎么办undefined
最后,在Re里面乱翻代码,可以说这里面每个方法都给我翻过了几遍。看哪个方法比较可疑
后来注意到一个方法 Class121里面的 method_0 方法,很明显一看就知道是登陆的方法, 登陆成功之后做了两个操作

 楼主| 发表于 2014-4-21 16:19:10 | 显示全部楼层
[C#] 纯文本查看 复制代码
this.Enum0_0 = Enum0.const_4;
            this.miSekillPanelVM_0.method_6(this).XiaomiId = str3.Split(new string[] { "userId=" }, StringSplitOptions.None)[1].Split(new char[] { ';' })[0].Split(new char[] { ',' })[0];
 楼主| 发表于 2014-4-21 16:19:54 | 显示全部楼层
给ID赋值当然不用说啦。。关键在于 赋值了个 this.Enum0_0 = Enum0.const_4; 然后就没后续操作了,也就是说后续操作是通过判断this.Enum0_0的状态来进行操作 const_4 代表着登陆成功的状态,大家都知道登陆成功之后就是开始验证授权了,那就是说授权失败的状态也是通过赋值 Enum0_0的
好啦。解析来查找 给 Enum0_0 赋值的地方了

192730yz7lb818i7r3141c.gif
 楼主| 发表于 2014-4-21 16:20:57 | 显示全部楼层
这么多引用不怕,老实的一个个看下去,
在  Class121的method_11() 看到。。方法内容是根据Enum状态的不同执行不同操作,仔细一看,这分明就是整个,从登陆到抢购的执行流程嘛,
刚才登陆的时候 赋值了个  Enum0.const_4  ,那么找到这个状态接下去要执行的方法 ,跑不掉了吧,戳进去
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-6 11:28

© 2014-2021

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