本文將會詳細介紹怎麼開發一個屏蔽微信(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小王,如果喜歡我的文章,可以掃碼關注我