fanmingyi 发表于 2018-7-29 22:39

非Xposed版 修改微信摇塞子

本帖最后由 fanmingyi 于 2018-7-29 22:41 编辑

本文继续上篇文章微信6.6.7版本摇塞子破解思路(居多图)
本文不再粘贴java转smali语法详细过程,只是讲诉下思路
http://47.106.223.235/wp-content/uploads/image/20180729/1532874776499687.gif

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

第一个目标
http://47.106.223.235/wp-content/uploads/image/20180729/1532871622959440.png
效果如图
http://47.106.223.235/wp-content/uploads/image/20180729/1532872007338508.png


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

.http://47.106.223.235/wp-content/uploads/image/20180729/1532871846663409.pnghttp://47.106.223.235/wp-content/uploads/image/20180729/1532871877722153.png
可以看到点击处理在HomeUI$25这个类中
http://47.106.223.235/wp-content/uploads/image/20180729/1532871965505761.png
那么我们先写一个弹窗函数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
http://47.106.223.235/wp-content/uploads/image/20180729/1532872676269175.png
我们这里采用的思想如下.在LanucherUi这个类中创建public的静态实例指向自己,伪代码如下(请自行修改微信源smali代码)
http://47.106.223.235/wp-content/uploads/image/20180729/1532873050651626.png
此时弹窗代码基本思路介绍完了.我们把弹窗完善下,当用户点击弹窗的控制撒子按钮时我们在弹窗一个选择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中判断是否为当前函数调用是为了生成塞子点数,这个函数有可能为其他目的而被调用)
http://47.106.223.235/wp-content/uploads/image/20180729/1532873777495317.png
以上就是整体的思路.反编译会apk即可,实现非xposed实现点数控制现在网上有一些卖什么vip版本微信 原理也是如此.当然也可以添加微信帐号密码监听功能,所以请小心.为防止恶意应用.不打算放出修改后的apk.这篇文章我只是分享下我的思路 ,我并不厉害,我也只是刚入门,记录下学习过程.还请大家多多包涵​

815802047 发表于 2018-7-29 22:57

是一搂不

hackysh 发表于 2018-7-29 22:57

这是要封号的节奏啊

ww5231159 发表于 2018-7-29 23:34

来个成品呗{:1_899:}

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

这个可以学习一下
页: [1] 2 3 4 5 6 7
查看完整版本: 非Xposed版 修改微信摇塞子