Android插件:关闭WIFI下微信朋友圈视频自动播放插件开发过程详解

本文将会详细介绍怎么开发一个屏蔽微信(7.0.5)朋友圈WIFI下自动播放视频插件

背景介绍

周五下班在地铁上刷微信时看到一个新闻,说是微信更新后在WIFI下自动播放视频还没法关闭。这个问题前几天我也遇到了,但是我记得设置里边有一个工作可以关闭视频自动播放的,但是后来发现还是自动播放了。其实原因下边这两个网友说的已经很明白了。
Android插件:关闭WIFI下微信朋友圈视频自动播放插件开发过程详解_第1张图片
Android插件:关闭WIFI下微信朋友圈视频自动播放插件开发过程详解_第2张图片
后来我想了一下,这个功能肯定是在代码里有一个判断,根据网络类型来决定是否播放小视频。那么如果可以更改这个判断条件的话,就可以屏蔽WIFI下自动播放视频了。

开发思路

寻找Hook点

通过 adb shell dumpsys activity top可以确定朋友圈是 SnsTimeLineUI 页面,使用Jadx 打开 dex文件可以看到SnsTimeLineUI 的代码(图 2.1)
Android插件:关闭WIFI下微信朋友圈视频自动播放插件开发过程详解_第3张图片
图 2.1
Android插件:关闭WIFI下微信朋友圈视频自动播放插件开发过程详解_第4张图片
图2.2
其实看到图 2.2中的代码,和我猜想的逻辑基本一致,其实只需关注WiFi判断就可以了, 是否是WiFi环境是通过 rXJ.blP()方法判断的,点进去看一下,如图2.3所示。
Android插件:关闭WIFI下微信朋友圈视频自动播放插件开发过程详解_第5张图片
图 2.3

功能实现

其实可以使用Xposed 的param.setResult(false) 来实现这个功能实现,关键代码如下:

clazz = loader.loadClass("com.tencent.mm.plugin.sns.ui.ar");
 if (clazz != null) {
 XposedHelpers.findAndHookMethod(clazz, "blP", new XC_MethodHook() {
   @Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
           param.setResult(false);
       super.afterHookedMethod(param);
               }
          });
    }

插件下载

  • github:https://github.com/852172891/XposedStopWxAutoplay

总结

其实这个插件原理十分简单,微信其实也做了混淆,但是日志信息没有清除。所以大家在项目发布时,一些日志要及时清理,特别要注意字符串。

我是IT小王,如果喜欢我的文章,可以扫码关注我
Android插件:关闭WIFI下微信朋友圈视频自动播放插件开发过程详解_第6张图片

你可能感兴趣的:(逆向与安全)