Android插件:關閉WIFI下微信朋友圈視頻自動播放插件開發過程詳解

本文將會詳細介紹怎麼開發一個屏蔽微信(7.0.5)朋友圈WIFI下自動播放視頻插件

背景介紹

週五下班在地鐵上刷微信時看到一個新聞,說是微信更新後在WIFI下自動播放視頻還沒法關閉。這個問題前幾天我也遇到了,但是我記得設置裏邊有一個工作可以關閉視頻自動播放的,但是後來發現還是自動播放了。其實原因下邊這兩個網友說的已經很明白了。
在這裏插入圖片描述
在這裏插入圖片描述
後來我想了一下,這個功能肯定是在代碼裏有一個判斷,根據網絡類型來決定是否播放小視頻。那麼如果可以更改這個判斷條件的話,就可以屏蔽WIFI下自動播放視頻了。

開發思路

尋找Hook點

通過 adb shell dumpsys activity top可以確定朋友圈是 SnsTimeLineUI 頁面,使用Jadx 打開 dex文件可以看到SnsTimeLineUI 的代碼(圖 2.1)
在這裏插入圖片描述
圖 2.1
在這裏插入圖片描述
圖2.2
其實看到圖 2.2中的代碼,和我猜想的邏輯基本一致,其實只需關注WiFi判斷就可以了, 是否是WiFi環境是通過 rXJ.blP()方法判斷的,點進去看一下,如圖2.3所示。
在這裏插入圖片描述
圖 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小王,如果喜歡我的文章,可以掃碼關注我
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章