Android基于Xposed修改微信运动步数实例

前言: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,具体代码如下

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()函数:

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

在计数传感器将步数返回微信运动之前修改步数,加上了1168步:

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

为了便于调试,将传感器的一些数据打印了出来:

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的入口设定为该WeixinSport类。

注:该类中的代码参考了乌云上蒸米大神的文章,该文章地址:http://drops.wooyun.org/tips/8416

三、测试

将该APK安装重启后打开微信运动,行走几步后再点击排行榜,发现步数增加了1168。

以上所述是小编给大家介绍的Android基于Xposed修改微信运动步数实例,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-09-12 06:46:28

Android基于Xposed修改微信运动步数实例的相关文章

怎样实现-微信运动步数怎样修改??

问题描述 微信运动步数怎样修改?? 有人会修改微信运动里的步数吗??里面的步数会每天更新,有人会修改吗,求教 解决方案 微信运动步数修改器(ios) 解决方案二: ???????????

Android 使用Fragment模仿微信界面的实例代码

什么是Fragment 自从Android 3.0中引入fragments 的概念,根据词海的翻译可以译为:碎片.片段.其目的是为了解决不同屏幕分辩率的动态和灵活UI设计.大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而诞生了fragments . fragments 的设计不需要你来亲自管理view hierarchy 的复杂变化,通过将Activity 的布局分散到frament 中,可以在运行时修改activit

微信运动步数捐赠方法详解

给各位微信软件的使用者们来详细的解析分享一下微信运动步数捐赠的方法. 方法分享: 1.首先我们要关注并启用微信运动功能,进入到微信运动界面;     2.进入微信运动后,我们点击右下角的更多,在弹出的菜单中点击捐赠步数;     3.接着我们就能看到腾讯公益的相关爱心工程,今日向上君共走了10961步,所以可以捐赠的数也是这么多,点击马上捐出10961步;     4.接着弹出确认界面,确认我们的捐赠步数和腾讯基金会匹配的金额数,然后点击确认捐出;     5.然后就完成了捐赠步数的功能,提示我

iphone微信运动步数为零不更新处理办法

微信运动步数为零不更新怎么办 1.如果我们在微信中关注微信运动时在弹出是否允许访问健康我们点击不允许的话,则会无法记录运动步数哦! 2.现在我们要打开只需要在iphone中点击设置中的"隐私",然后打开"运动与健康",把微信打开,就可以了 3.Phone5S/iPhone6/iPhone6 Plus支持微信,而其它版本的不支持微信软件,如果需要要安装第三方软件才可以了. 小技巧:不想别人看到自己的步行数据的方法 想要统计每天的走路数据,又不会暴露隐私还是有办法的.以

小程序页面可以放置转发按钮,同时开放了微信运动步数背景音乐播放等更多基础能力

小程序页面可以放置转发按钮,同时开放了微信运动步数背景音乐播放等更多基础能力.小程序转发更简单了:小程序页面可以放置转发按钮.在小程序页面右上角"-"的转发功能基础上,新增在页面内放置转发按钮,用户点击后,即可将喜欢的内容分享给好友或群聊,体验更加流畅.开发者可以根据小程序的功能,展示最适合的按钮形式. 使用指引 转发按钮,旨在帮助用户更流畅地与好友分享内容和服务.转发,应是用户自发的行为,且在需要时触手可及.开发者在使用时若遵从以下指引,会得到更佳的用户体验. 含义清晰:明确.一目了

Android应用中对于微信分享的实例及问题

源码地址 如何分享 分享无相应 分享结果如何接收响应 微信 分享回调 (提示几点关键问题:   debug_key 一定要获得对应的签名码 然后和weixin官网的appid对应     ) 几点注意事项  1)必须新建一个包位置是     <you package>.wxapi 2)并在此包下简历class     WXEntryActivity.class 3)AndroidManifest.xml  需要添加对应Activity的声明      <activity        

微信运动接口-怎样获取微信运动里面的步数和排行榜信息

问题描述 怎样获取微信运动里面的步数和排行榜信息 我的应用要获取微信运动里面的步数和排行榜信息,请问微信有没有提供这样一个接口呢 解决方案 基于Xposed修改微信运动步数 解决方案二: 步数一般都是读的系统的一些信息.http://bbs.feng.com/read-htm-tid-9069030.html 但是排行榜应该是微信后台服务器处理的.需要破解微信App等来看接口

Android计步模块实例代码(类似微信运动)

最近在项目中研究计步模块,每天0点开始记录当天的步数,类似微信运动.碰到了不少坑今天有时间整理出来给大家看看. 做之前在google.baidu.github上搜了个遍没找到好的,大多数都是需要在后台存活,需要后台Service. 对于现在的各大手机厂商为了提高电池的续航里程(省电),基本上AlertManager. android.intent.action.BOOT_COMPLETED.后台Service都是被干掉的. 后台保活策略Service,基本上没什么用,被手机系统干掉只是时间问题,

Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果

转载请注明出处:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新颖的,从一张图片中扫一下竟然能直接加好友,不可思议啊,那时候还不了解二维码,呵呵,然后做项目的时候,老板说要加上二维码扫描功能,然后自己的屁颠屁颠的去百度,google啥的,发现很多朋友都有介绍二维码扫描的功能,然后我就跟着人家的介绍自己搞起了二维码扫描功能,跟着人家的帖子,很快我的项目就加入了扫描