基于Xposed修改微信运动步数
2017-06-11 20:05
190 查看
前言:Zygote 是 Android 的核心,每打开一个 app,Zygote 就会 fork 一个虚拟机实例来运行 app,基于Xposed我们可以使用android hook技术对APK中的方法进行调试、关键API拦截、外挂等。
这篇文章建立在Xposed模块开发的基础之上,没有开发过Xposed模块的请先看这篇入门教程《Xposed模块开发入门教程》
一、微信运动修改步数原理
当点击微信运动排行榜的时候微信APP会获取手机上计数传感器的数值,然后传感器会返回我们行走的步数。此时我们使用Xposed框架来hook计数传感器的队列函数dispatchSensorEvent(),该函数在android.hardware.SystemSensorManager$SensorEventQueue这个类中。当询问传感器的时候我们在数值上加上相应步数返回给微信运动达到欺骗效果。
二、开发Xposed模块
1.新建一个类WeixinSport,具体代码如下:
[java] view plain copy
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 {
}
这段代码中我们首先通过equals(“com.tencent.mm”)过滤出了来自微信的请求:
[java] view plain copy
if (!loadPackageParam.packageName.equals(“com.tencent.mm”)) {
return;
}
然后hook了android.hardware.SystemSensorManager$SensorEventQueue这个类中的dispatchSensorEvent()函数:
[java] view plain copy
final Class
这篇文章建立在Xposed模块开发的基础之上,没有开发过Xposed模块的请先看这篇入门教程《Xposed模块开发入门教程》
一、微信运动修改步数原理
当点击微信运动排行榜的时候微信APP会获取手机上计数传感器的数值,然后传感器会返回我们行走的步数。此时我们使用Xposed框架来hook计数传感器的队列函数dispatchSensorEvent(),该函数在android.hardware.SystemSensorManager$SensorEventQueue这个类中。当询问传感器的时候我们在数值上加上相应步数返回给微信运动达到欺骗效果。
二、开发Xposed模块
1.新建一个类WeixinSport,具体代码如下:
[java] view plain copy
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”)过滤出了来自微信的请求:
[java] view plain copy
if (!loadPackageParam.packageName.equals(“com.tencent.mm”)) {
return;
}
然后hook了android.hardware.SystemSensorManager$SensorEventQueue这个类中的dispatchSensorEvent()函数:
[java] view plain copy
final Class
相关文章推荐
- 基于Xposed修改微信运动步数
- 基于Xposed修改微信运动步数
- 基于Xposed修改微信运动步数
- 基于Xposed修改微信运动步数
- iOS 教你如何修改微信运动步数
- 2017QQ,微信安卓修改运动步数APP无限刷步数方法教程
- Objective-C修改运动步数
- 仿微信/QQ 开发基于XMPP的iPhone/iOS聊天客户端(二)修改密码
- 手把手教你修改iOS版QQ的运动步数
- 微信小程序微信运动步数处理
- Android基于Xposed修改微信运动步数实例
- 微信小程序实现运动步数排行功能(可删除)
- 微信小程序基于slider组件动态修改标签透明度的方法示例
- jQuery基于Canvas的微信运动折线图动态曲线图插件 - wcMotionChart
- 微信小程序仿微信运动步数排行(交互)
- 仿微信运动步数折线统计图
- [修改]jmagick的安装(基于windows),精简版步骤 --增加下载地址
- 【出版直播】博客园征途系列,《设计模式——基于C#的工程化实现及扩展》定价修改
- Scott Mitchell 的ASP.NET 2.0数据教程之二十三:基于用户对修改数据进行限制
- 基于GPRS/CDMA短消息功能修改负荷终端参数的程序设计