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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 61563|回复: 332
收起左侧

[Android 原创] 微信6.6.7版本摇塞子破解思路(多图)

    [复制链接]
fanmingyi 发表于 2018-7-28 00:32
本帖最后由 fanmingyi 于 2018-7-28 11:41 编辑

图片挂的可以先看我博客:https://blog.csdn.net/qfanmingyiq/article/details/81254913
为了上传图片花了一个早上找图床上传的= = 高亮后面再慢慢帮大家排版

备注:BuildProp Enhancer 是一个Xposed软件,可以让apk在不开启debugable的时候进行动态调试

在你无从下手的时候我使用DDMS中的traceView工具来帮助我们减少工作量。


打开微信界面

device-2018-07-27-220701.png


打开DDMS,在divices对应的启动应用列表中选择腾讯微信对应包名(com.tencent.mm


device-2018-07-27-220701.png


如果列表太多,可以使用adb shell dumpsys activity top 查看当前android手机最前面的界面的pid和一些信息


device-2018-07-27-220701.png


然后在回到ddms顺着pid查找即可如果在这里看不到应用,是因为app没有在清单文件打开debugable=true,在这里你可以选择以下两种方式。

1 使用apktools反编译 修改清单文件 在装回去(微信没有加壳,就算加了估计大家也可以在网上找到对应退壳教程)

过程略

2 使用 BuildProp Enhancer ,装载xposed开启后,在其启动界面勾选和配置如下
device-2018-07-27-220701.png

记得重启手机


3 刷机修改android系统源码中的 ro.debugable=1和ro.secure=1(不推荐)正式开始使用traceView工具(我发现很多人居然不知道这个工具的名字= =但却使用过。)
device-2018-07-27-220701.png


鼠标点击Start Method Profiling(开始方法性能分析,对应上图红色箭头按钮)。
然后弹出一个界面,这个界面就是要问你要不要设置采样率(每隔多少毫秒进行一次方法堆栈记录(就是记录方法的使用过程时间信息)统计)


device-2018-07-27-220701.png


然后点击微信界面摇骰子

device-2018-07-27-220701.png


再次点击右上角按钮

device-2018-07-27-220701.png


完成后


device-2018-07-27-220701.png


我们这里点击了一个骰子对吧?那必然触发android点击事件回调。关于事件分发机制这里不做过多讲解 ,我们在界面最下方的filter 输入click





然后发现其Children有两个分别 是self ********performItemClick(Landroid/view/View;IJ)Z**





根据分析只能是第二个选项然后点击********performItemClick(Landroid/view/View;IJ)Z**








我们发现有两个函数 占用cpu时间,所以我们需要跳去两个函数的父函数进行静态分析。这里我们用jeb2.2进行反编译成java源文件导入Android Studio( 后续下文简称AS








如果提示 JAVA heap 之类的错误 修改jeb目录下 bin/jeb.ini





jeb3.0+请修改批处理文件xxx.bat然后导入AS





接下来再回过头来看看我们要跳到父函数()





按下CTRL+SHIFT+N 输入对应类文件即可






在这里可以查看类结构。我们这里选择前面分析父函数




可不看部分:方法前面有个synthetic注释 。内部类私有属性或者方法被外部类访问时会成成synthetic类或者synthetic方法。比如你会看access$001等。
如何证明? 反射机制就有这个相关api
Method method;
method.isSynthetic()

为什么圈出两个函数?因为我们前面tracView不是说显示两个函数占用Cpu时间之和为100%嘛(肯定有喷子说不是还有其他函数调用吗为什么没有显示占用CPU?答不在采样频率窗口期)。又因为后一个函数要使用前面一个的返回值,所以很用可能前面才是关键。
所以我们这里跳转到实现c函数处,在AS双击c函数只会跳转到接口或者抽象类((c) g.n(c.class)).getProvider().c(emojiInfo);
实现类可以在tracview看到了




如法炮制跳转到c函数实现




Traceview攻击点击这个函数继续向下分析







同理有三个子函数分别占用cpu时间比,那么在AS跳转到父函数 ****emoji.e.g.c*****


先分析第一个方法返回Cursor对象,这个对象大家在做撸码DAO层的时候应该不陌生把?很明显跟这个没关系,第二个方法同理Du.getCount(),那么我们最后肯定落在第三个方法上
第一个方法:  
Cursor Du = i.aEA().igx.Du(bi.getInt(emojiInfo.getContent(), 0))
第二个方法
Du.getCount()
第三个方法
int eF = bi.eF(Du.getCount() - 1, 0);
点击进入eF函数




分析到这里发现一个断言和一个用于生成随机数的函数。我们假设是不是用这里随机函数生成塞子点数呢?我们继续返回****emoji.e.g.c*****这个函数回头看看





如何证明我们说的呢?

我们在eF函数加入两个函数,一个log,和一个打印方法堆栈函数
[Java] 纯文本查看 复制代码
 public static int eF(int i, int i2) {

        Thread.dumpStack();

        Assert.assertTrue(i > i2);
        int rel = new Random(System.currentTimeMillis()).nextInt((i - i2) + 1) + i2;

        Log.d("FMY", "eF() called with: i = [" + i + "], i2 = [" + i2 + "] ,rel =["+rel+"]" );
        return rel;
    }




对应smali:
[Asm] 纯文本查看 复制代码
.method public static eF(II)I
    .registers 6
    .param p0, "i"    # I
    .param p1, "i2"    # I

    .prologue

    invoke-static {}, Ljava/lang/Thread;->dumpStack()V


    if-le p0, p1, :cond_4f

    const/4 v1, 0x1

    :goto_6
    invoke-static {v1}, Ljunit/framework/Assert;->assertTrue(Z)V


    new-instance v1, Ljava/util/Random;

    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v2

    invoke-direct {v1, v2, v3}, Ljava/util/Random;-><init>(J)V

    sub-int v2, p0, p1

    add-int/lit8 v2, v2, 0x1

    invoke-virtual {v1, v2}, Ljava/util/Random;->nextInt(I)I

    move-result v1

    add-int v0, v1, p1


    .local v0, "rel":I
    const-string v1, "FMY"

    new-instance v2, Ljava/lang/StringBuilder;

    invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V

    const-string v3, "eF() called with: i = ["

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v2

    const-string v3, "], i2 = ["

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v2

    const-string v3, "] ,rel =["

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;

    move-result-object v2

    const-string v3, "]"

    invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v2

    invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-static {v1, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I


    return v0


    .end local v0    # "rel":I
    :cond_4f
    const/4 v1, 0x0

    goto :goto_6
.end method


smali删除所有java2smali工具生成的行号 就的.line xxx


这里我用apkkiller修改反编译回去即可。然后在安装回手机点击 查看日志




在这里打log是为了大家后面方便改塞子和猜拳代码的观察和修改最后大家生活愉快。
另一种思路:全局搜索 Ramdom 关键字然后逐个分析,但是我不推荐,前提是你知道他们开发者使用了这个函数用来生成塞子关键代码修改后的微信APK请稍等。。。

新建文本文档.txt

70 Bytes, 下载次数: 200, 下载积分: 吾爱币 -1 CB

apk下载地址

免费评分

参与人数 55吾爱币 +50 热心值 +51 收起 理由
彤哥来啦 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Kyo + 1 + 1 用心讨论,共获提升!
smk418 + 1 + 1 热心回复!
usermargin + 1 + 1 用心讨论,共获提升!
十里锦冬 + 1 我很赞同!
uatlaosiji + 1 + 1 我很赞同!
安尼大大 + 1 + 1 我很赞同!
xiezimc + 1 + 1 谢谢@Thanks!
Sunwish + 1 谢谢@Thanks!
cyj123 + 1 + 1 用心讨论,共获提升!
snccwt + 1 + 1 热心回复!
joker1998 + 1 链接:https://pan.baidu.com/s/1-g5JAHDpGKnbACNww7s-0A 密码:7usn
m1998ch + 1 + 1 谢谢@Thanks!
小_Ta + 1 谢谢@Thanks!
tugou1997 + 1 + 1 热心回复!
knx888 + 1 我很赞同!
aa8866ss + 1 + 1 用心讨论,共获提升!
你好大家看 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lsrteam70 + 1 + 1 谢谢@Thanks!
SomnusXZY + 1 + 1 谢谢@Thanks!
MapLeMr + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gvosr + 1 + 1 我很赞同!
skiss + 1 + 1 用心讨论,共获提升!
丶蜥蜴君 + 1 + 1 谢谢@Thanks!
tys88 + 1 + 1 热心回复!
591888122 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
lgl1990 + 1 + 1 热心回复!
Dreamer + 1 + 1 谢谢@Thanks!
gomg007 + 1 + 1 不错,是个好帖子
Interest_Maple + 1 + 1 谢谢@Thanks!
zswseu + 1 + 1 热心回复!
我的宝宝 + 1 + 1 谢谢@Thanks!
jj1989 + 1 + 1 我很赞同!
xwzj20170829 + 1 + 1 热心回复!
勤奋的刘小朵 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
stcdalyc + 1 + 1 教程很仔细
XCG0000 + 1 用心讨论,共获提升!
heimajun + 1 + 1 我很赞同!
lz2018 + 1 + 1 用心讨论,共获提升!
haoii123 + 1 谢谢@Thanks!
天天404 + 1 + 1 骰(tou2)子
GodIand + 2 + 1 谢谢@Thanks!
htianjun + 1 + 1 我很赞同!
AI小白 + 1 + 1 用心讨论,共获提升!
1218423706 + 1 + 1 热心回复!
hxddtc + 1 热心回复!
潘瓜花 + 1 + 1 热心回复!
多凉凉 + 1 + 1 用心讨论,共获提升!
InMyMind + 1 + 1 谢谢@Thanks! 顺便说一句是骰(tou)子
csd1259 + 1 + 1 我很赞同!
泽昊冫 + 1 + 1 热心回复!
Blanke + 1 图挂了
涛之雨 + 1 + 1 谢谢@Thanks!
xingyz + 1 + 1 用心讨论,共获提升!
小草编的戒指 + 1 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

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

Hmily 发表于 2018-7-28 07:58
请把图片上传论坛,外链一看就不支持才无法显示,方法参考这里:https://www.52pojie.cn/misc.php?mod=faq&action=faq&id=29&messageid=36
 楼主| fanmingyi 发表于 2018-7-28 10:52
Hmily 发表于 2018-7-28 07:58
请把图片上传论坛,外链一看就不支持才无法显示,方法参考这里:https://www.52pojie.cn/misc.php?mod=faq& ...

= =图片一天只可以上传20个 这都得换一周来上传....

点评

还真是,以前没注意,我刚调整了一天可以传50个了,试试?  详情 回复 发表于 2018-7-29 19:32
 楼主| fanmingyi 发表于 2018-7-28 00:42
排版乱的可以看我CSDN写的= = 有什么方法可以不改变排版复制到论坛啊下 https://blog.csdn.net/qfanmingyiq/article/details/81254913
 楼主| fanmingyi 发表于 2018-7-28 00:51
回答几个问题。为什么导入AS 不用 JEB? 因为卡。。。。第二搜索不方便。第三AS强大。第四 JEB重命名有些问题 ,估计是因为索引太多引起的。在AS重命名都要几分钟
爱你!又如何? 发表于 2018-7-28 00:55
好复杂啊,表示看不懂。
zhou220 发表于 2018-7-28 01:24 来自手机
字体好大啊
吕鼎 发表于 2018-7-28 08:03
楼主很厉害啊 谢谢分享
我不懂巍巍 发表于 2018-7-28 08:32

楼主很厉害啊 谢谢分享
小草编的戒指 发表于 2018-7-28 08:36
感谢楼主分享思路,我去是试试!
头像被屏蔽
sstm 发表于 2018-7-28 08:43
看看再说
您需要登录后才可以回帖 登录 | 注册[Register]

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

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

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

GMT+8, 2024-4-24 13:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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