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

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11125|回复: 63
收起左侧

[Android 原创] 非Xposed版 修改微信摇塞子

  [复制链接]
fanmingyi 发表于 2018-7-29 22:39
本帖最后由 fanmingyi 于 2018-7-29 22:41 编辑

本文继续上篇文章微信6.6.7版本摇塞子破解思路(居多图)
本文不再粘贴java转smali语法详细过程,只是讲诉下思路


Xposed版本 不是所有手机环境都支持,所以我才想试试直接反编译代码写入微信apk中,这样用户就不需要配置什么复杂的环境.

第一个目标

效果如图



怎么做呢?很简单嘛拿TraceView 简体这个按钮触发点击事件在哪即可

.
可以看到点击处理在HomeUI$25这个类中

那么我们先写一个弹窗函数m_show函数 嵌入HomeUI$25这个类
public boolean m_show(View view) {
    try {
        //LauncherUI.m_instance_LauncherUI是一个上下文对象
        AlertDialog.Builder builder = new AlertDialog.Builder(LauncherUI.m_instance_LauncherUI);
        builder.setTitle("桂电的互联扫地僧");
        String options[] = new String[]{"抢红包", "塞子控制", "猜拳控制", "防撤销", "闪图保存"};

        builder.setItems(options, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
              

            }
        });

        builder.setNegativeButton("关闭", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });


        builder.show();
    } catch (Exception e) {
        Log.e("FMY=================", "m_show: ");
        e.printStackTrace();
    }
    return true;
}

特别提醒的就是上面这个java转smali会生成匿名类文件,请一并拷贝到反编译的微信中
上面这个方法是嵌入在我们要反编译之后的微信之中的,我们直接嵌入HomeUI$25这个类即可,当用户点击微信界面的十字先执行它原本的的onclick函数,我们在onclick函数中调用m_show()即可.(当然这里嵌入的是smali代码,上一篇文章讲诉过怎么做了)再来解决一个问题如何得到上下文对象实例?因为我们弹窗代码需要用到这个作为参数.
解决办法,也很简单,View有一个函数getContent来获取 .然后你会发现用这个方法不一定成功哦,这里不做原因解释我们直接干脆拿微信界面的Activity界面的对象实例.(Activity也是一个上下文对象的子类)
首先打开微信界面,然后再命令行输入 adb shell dumpsys acitivity top

我们这里采用的思想如下.在LanucherUi这个类中创建public的静态实例指向自己,伪代码如下(请自行修改微信源smali代码)

此时弹窗代码基本思路介绍完了.我们把弹窗完善下,当用户点击弹窗的控制撒子按钮时我们在弹窗一个选择1到6的选择界面,目的是让用户选择塞子点数.
这里直接贴代码吧
class HomeUI$25 {

   
    public void onClick(View view){
        /**
         * ************************
         * **********************
         * 这里注释表示原本程序的逻辑代码
         * *********************
         * **********************
         */
        m_show(view);//弹窗
        /**
         * ************************
         * **********************
         * 这里注释表示原本程序的逻辑代码
         * *********************
         * **********************
         */
    }
  
    public boolean m_show(View view) {
        try {
            AlertDialog.Builder builder = new AlertDialog.Builder(LauncherUI.m_instance_LauncherUI);
            builder.setTitle("桂电的互联扫地僧");
            String options[] = new String[]{"抢红包", "塞子控制", "猜拳控制", "防撤销", "闪图保存"};

            builder.setItems(options, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    switch (which) {
                        case 1:
                            dialog.dismiss();
                            ctl_dice();
                            break;
                    }

                }
            });

            builder.setNegativeButton("关闭", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });


            builder.show();
        } catch (Exception e) {
            Log.e("FMY=================", "m_show: ");
            e.printStackTrace();
        }
        return true;
    }

    public void ctl_dice() {
        try {
            AlertDialog.Builder builder = new AlertDialog.Builder(LauncherUI.m_instance_LauncherUI);
            builder.setTitle("选择点数");
            String options[] = new String[]{"1", "2", "3", "4", "5", "6"};
            builder.setItems(options, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                    //给bi类的dice变量设置摇骰子点数.这个类是上一篇文章中分析过的 用户随机生成一个0-5的数字
                    // 控制骰子.我们这里在手动的添加了一个静态int变量名为dice.后文在继续详细讲解
                    bi.dice = which;
                    Toast.makeText(LauncherUI.m_instance_LauncherUI, "修改点数成功", Toast.LENGTH_SHORT).show();
                }
            });

            builder.show();
        } catch (Exception e) {
            Log.e("FMY=================", "m_show: ");
            e.printStackTrace();
        }

    }


}

还有一处思想要改就是如何完美控制?上面一行代码如下
bi.dice = which;

上一篇文章解释过bi类中有个eF函数,我们在eF函数返回塞子点数.我们这里可以在这个类中创建一个变量叫dice,当调用eF的时候直接返回dice作为结果(当然你还要在eF中判断是否为当前函数调用是为了生成塞子点数,这个函数有可能为其他目的而被调用)

以上就是整体的思路.反编译会apk即可,实现非xposed实现点数控制现在网上有一些卖什么vip版本微信 原理也是如此.当然也可以添加微信帐号密码监听功能,所以请小心.为防止恶意应用.不打算放出修改后的apk.这篇文章我只是分享下我的思路 ,我并不厉害,我也只是刚入门,记录下学习过程.还请大家多多包涵​

免费评分

参与人数 6吾爱币 +14 热心值 +6 收起 理由
qtfreet00 + 9 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
笙若 + 1 + 1 谢谢@Thanks!
zhh4827 + 1 + 1 热心回复!
tielei + 1 + 1 谢谢@Thanks!
jay300400 + 1 + 1 很牛逼的样子啊
Ftimes + 1 + 1 我不晓得你在说啥子,但是我感觉你很牛批

查看全部评分

本帖被以下淘专辑推荐:

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

815802047 发表于 2018-7-29 22:57 来自手机
是一搂不
hackysh 发表于 2018-7-29 22:57
ww5231159 发表于 2018-7-29 23:34
Ftimes 发表于 2018-7-29 23:51
        我不晓得你在说啥子,但是我感觉你很牛批
luoyujiuyue 发表于 2018-7-29 23:53
我就想问问会不会封号
自然世界 发表于 2018-7-30 07:03 来自手机
不明觉厉啊。更新会出bug吗?
hx2157895 发表于 2018-7-30 07:23
6666666666666666666
Moyo 发表于 2018-7-30 07:29
我不晓得你在说啥子,但是我感觉你很牛批
wuyy 发表于 2018-7-30 08:46
这个可以学习一下
您需要登录后才可以回帖 登录 | 注册[Register]

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

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

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

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

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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