Xposed hook SensorManager
本篇继续新增hook sensorManager. 用于替换运动量的数值。
public class SportHook {
private static final String TAG = "SportHook";
private static int stepCount = 1;
public static void hook(XC_LoadPackage.LoadPackageParam lpparam) {
if (!lpparam.packageName.equals("com.tencent.mm")) return;
Log.i(TAG, "hook: start");
try {
final Class clazz = XposedHelpers.findClass("android.hardware.SystemSensorManager$SensorEventQueue", lpparam.classLoader);
XposedBridge.hookAllMethods(clazz, "dispatchSensorEvent", new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
// ((float[]) param.args[1])[0] = ((float[]) param.args[1])[0] + 1123 * stepCount;
((float[]) param.args[1])[0] = 1123 * stepCount;
stepCount++;
}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
}
});
} catch (Throwable e) {
Log.e(TAG, "hook: ", e);
}
Log.i(TAG, "hook: end");
}
}
如上,直接修改dispatchSensorEvent 方法中参数的值。
这里不考虑加速度传感器的问题。
public class HookModule implements IXposedHookLoadPackage {
public static final String TAG = "HookModule";
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
Log.e(TAG, "handleLoadPackage");
SportHook.hook(lpparam);
}
}