国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android基于Xposed修改微信運動步數(shù)實例

2019-12-12 02:41:59
字體:
供稿:網(wǎng)友

前言:Zygote 是 Android 的核心,每打開一個 app,Zygote 就會 fork 一個虛擬機(jī)實例來運行 app,基于Xposed我們可以使用android hook技術(shù)對APK中的方法進(jìn)行調(diào)試、關(guān)鍵API攔截、外掛等。

這篇文章建立在Xposed模塊開發(fā)的基礎(chǔ)之上,沒有開發(fā)過Xposed模塊的請先看這篇入門教程《Xposed模塊開發(fā)入門教程》

一、微信運動修改步數(shù)原理

當(dāng)點擊微信運動排行榜的時候微信APP會獲取手機(jī)上計數(shù)傳感器的數(shù)值,然后傳感器會返回我們行走的步數(shù)。此時我們使用Xposed框架來hook計數(shù)傳感器的隊列函數(shù)dispatchSensorEvent(),該函數(shù)在Android.hardware.SystemSensorManager$SensorEventQueue這個類中。當(dāng)詢問傳感器的時候我們在數(shù)值上加上相應(yīng)步數(shù)返回給微信運動達(dá)到欺騙效果。

二、開發(fā)Xposed模塊

1.新建一個類WeixinSport,具體代碼如下

package com.example.administrator.weixinsport; import static de.robv.android.xposed.XposedHelpers.findClass; import java.lang.reflect.Field; import android.hardware.Sensor; import android.util.SparseArray; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.XC_MethodHook; import de.robv.android.xposed.XposedBridge; import de.robv.android.xposed.callbacks.XC_LoadPackage; /**  * Created by Administrator on 2016/5/11.  */ public class WeixinSport implements IXposedHookLoadPackage {  private static int stepCount = 1;  @Override  public void handleLoadPackage(XC_LoadPackage.LoadPackageParam loadPackageParam) throws Throwable {   // filter   if (!loadPackageParam.packageName.equals("com.tencent.mm")) {    return;   }   final Class<?> sensorEL = findClass("android.hardware.SystemSensorManager$SensorEventQueue", loadPackageParam.classLoader);   XposedBridge.hookAllMethods(sensorEL, "dispatchSensorEvent", new XC_MethodHook() {    @Override    protected void beforeHookedMethod(MethodHookParam param) throws Throwable {     ((float[]) param.args[1])[0] = ((float[]) param.args[1])[0] + 1168 * stepCount;     stepCount++;     Field field = param.thisObject.getClass().getEnclosingClass().getDeclaredField("sHandleToSensor");     field.setAccessible(true);     int handle = (Integer) param.args[0];     Sensor sensor = ((SparseArray<Sensor>) field.get(0)).get(handle);     XposedBridge.log("sensor = " + sensor);    }   });  } }

這段代碼中我們首先通過equals("com.tencent.mm")過濾出了來自微信的請求:

if (!loadPackageParam.packageName.equals("com.tencent.mm")) {    return;   } 

然后hook了android.hardware.SystemSensorManager$SensorEventQueue這個類中的dispatchSensorEvent()函數(shù):

final Class<?> sensorEL = findClass("android.hardware.SystemSensorManager$SensorEventQueue", loadPackageParam.classLoader);   XposedBridge.hookAllMethods(sensorEL, "dispatchSensorEvent", new XC_MethodHook() 

在計數(shù)傳感器將步數(shù)返回微信運動之前修改步數(shù),加上了1168步:

((float[]) param.args[1])[0] = ((float[]) param.args[1])[0] + 1168 * stepCount;     stepCount++; 

為了便于調(diào)試,將傳感器的一些數(shù)據(jù)打印了出來:

int handle = (Integer) param.args[0];     Sensor sensor = ((SparseArray<Sensor>) field.get(0)).get(handle);     XposedBridge.log("sensor = " + sensor);

2.修改xposed_init

com.example.administrator.weixinsport.WeixinSport 

將xposed_init的入口設(shè)定為該WeixinSport類。

注:該類中的代碼參考了烏云上蒸米大神的文章,該文章地址:http://drops.wooyun.org/tips/8416

三、測試

將該APK安裝重啟后打開微信運動,行走幾步后再點擊排行榜,發(fā)現(xiàn)步數(shù)增加了1168。

以上所述是小編給大家介紹的Android基于Xposed修改微信運動步數(shù)實例,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 沧州市| 洪雅县| 黄山市| 东阳市| 陇南市| 泽普县| 耒阳市| 漾濞| 海门市| 抚顺县| 岳池县| 大荔县| 衡阳市| 昌黎县| 营山县| 南漳县| 阿城市| 清河县| 全州县| 西乌珠穆沁旗| 思茅市| 兴国县| 金昌市| 宝坻区| 正镶白旗| 福建省| 高碑店市| 绍兴市| 建阳市| 昌图县| 太谷县| 高雄县| 丰宁| 龙山县| 浮山县| 渑池县| 酉阳| 永仁县| 马龙县| 开阳县| 体育|