首页
社区
课程
招聘
[原创]步数修改器,支持微信QQ支付宝,不需要Xposed,需要root
发表于: 2017-9-6 21:37 31892

[原创]步数修改器,支持微信QQ支付宝,不需要Xposed,需要root

2017-9-6 21:37
31892
 

https://github.com/iweizime/StepChanger

微信

微信的步数数据保存在/data/data/com.tencent.mm/MicroMsg/stepcounter.cfg/data/data/com.tencent.mm/MicroMsg/MM_stepcounter.cfg。这两个文件是Java序列化数据文件,使用ObjectInputStreamObjectOutputStream读写。

 

stepcounter.cfg中的数据是由SensorEventListener所在的com.tencent.mm:exdevice进程写入的,其格式如下:

{209=47669212487765, 201=11, 202=150160320, 203=45, 204=1501640915492}

其中

  • 键值201对应的就是当前今日步数
  • 键值202对应的是今日开始时间(timestamp / 10000)
  • 键值203对应的是step counter sensor的步数
  • 键值204对应的是上次保存时间
  • 键值209对应的是step counter sensor的时间戳

stepcounter.cfg中的数据由com.tencent.mm进程读取并上传今日步数,然后将上传结果写入MM_stepcounter.cfgMM_stepcounter.cfg文件格式如下:

{1=1501588258133, 2={"stepCounterRateUs":600000,"stepCounterSaveInterval":60000,"stepCounterSaveStep":50,"stepCounterMaxStep5m":1500,"deviceStepSwitch":1,"extStepApiSwitch":0,"stepExtConfig":{"version":1,"interval":7200},"stepCountUploadConfig":{"backgroundTimeInterval":60,"backgroundStepCountInterval":500}}, 3=1501640939165, 4=25}

其中:

  • 键值1对应的是啥,没看到
  • 键值2对应的的是配置
  • 键值3对应的是最后上传时间
  • 键值4对应的是最后上传步数

更改微信运动的步数很简单,只需要更改stepcounter.cfg文件中的当前今日步数,即201对应的值即可。

QQ

QQ的步数数据保存在/data/data/com.tencent.mobileqq/files/step.info。这个文件是一个加密文件,用的加密算法就是腾讯常用的TEA加密算法,网上已经又很多人给出了算法代码,我也会另外的文章中给出分析。加解密所用的密钥为4eY#X@~g.+U)2%$<

 

数据解密后,格式如下:

{"1504800000000_offset":0,"1504800000000_init":426,"1504800000000_total":2109,"isStepCounterEnable":true,"last_report_time":1504856818805,"1504886400000_init":2109}

其中:

  • 前缀1504800000000是今日开始时间戳
  • 前缀1504886400000是明日开始时间戳
  • 键值last_report_time对应的是最后上传时间
  • 键值_init就是今日开始时的step counter sensor的步数
  • 键值_total是当前step counter sensor的步数

这个文件由SensorEventListener所在的com.tencent.mobileqq:MSF进程写入,由com.tencent.mobileqq进程读取并上传,然后将上传结果写回step.info。当前今日步数step = _total - _init + _offset,所以更改_offset即可修改今日步数。

支付宝

支付宝使用SharedPreferences保存步数数据文件,分别是NewPedoMeterNewPedometer_private
NewPedoMeter_private主要由SensorEventLitstener所在的com.eg.android.AlipayGphone:ext进程写入,的数据如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="stepRecord">[{&quot;biz&quot;:&quot;alipay&quot;,&quot;steps&quot;:4248,&quot;time&quot;:1504162956624}]</string>
    <boolean name="step_not_keep_reg" value="false" />
    <string name="firstStep">{&quot;biz&quot;:&quot;alipay&quot;,&quot;steps&quot;:4248,&quot;time&quot;:1504162956624}</string>
</map>
  • 键值stepRecord键值对应的是一个记录数组,每条记录中的steps是保存的step counter sensor的步数,time是写入这条记录的时间,根据这些记录就可以算出一段时间内的步数,然后加上上次上传的步数就可以计算出当前步数了

NewPedoMeter数据如下:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <boolean name="startup" value="true" />
    <string name="baseStep">{&quot;steps&quot;:1135,&quot;time&quot;:1504162956624}</string>
    <boolean name="checkuser" value="true" />
    <string name="userId">2088802851669638</string>
    <string name="last_stepinfo_today">{&quot;biz&quot;:&quot;alipay&quot;,&quot;steps&quot;:1133,&quot;time&quot;:1504162998266}</string>
</map>
  • 键值baseStep是当前今日步数
    NewPedoMeter与当前今日步数的计算无关,只是保存com.eg.android.AlipayGphone进程上传数据的结果。计算当前今日步数时支付宝会向服务器请求上次上传的步数和上传时间,计算上次上传已来的步数,然后加上上次上传步数就是当前步数。要更改当前今日步数,只需要更改NewPedoMeter中的stepRecord的记录即可,最简单的一种方法就是只保留stepRecord中的最后一条记录,然后根据step counter sensor的当前步数相应的减小最后一条记录的steps值就可以了。

注意

在更改文件时,要注意缓存问题,否则更改无效。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 878
活跃值: (496)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
比较稳定的似乎是三星健康
2017-9-6 22:10
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
rrrfff 比较稳定的似乎是三星健康
好用吗?
2017-9-7 14:33
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
没卵用啊,给了root,加载都加载不出来
2017-9-7 16:04
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
哈哈不用XP能用吗
2017-9-8 07:24
0
雪    币: 930
活跃值: (1328)
能力值: ( LV15,RANK:750 )
在线值:
发帖
回帖
粉丝
6
更新原理
2017-9-15 16:41
0
雪    币: 3848
活跃值: (642)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
7
2017-9-15 16:47
0
雪    币: 3848
活跃值: (642)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
楼主你好,怎么看手机支不支持Step  Counter  Sensor功能?如果不支持,有没有其他方法可以代替啊?
2017-9-15 16:49
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习了。学习了。学习了。学习了。
2017-10-1 20:14
0
雪    币: 1631
活跃值: (1319)
能力值: ( LV7,RANK:117 )
在线值:
发帖
回帖
粉丝
10
666,支付宝10.1.8.112305亲测可用。(应该是最新版吧至少没提示我更新
2017-12-24 20:47
0
雪    币: 204
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
RaineChen 没卵用啊,给了root,加载都加载不出来
我也一样的情况,root了,无法加载!
2017-12-25 09:09
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
roceys 我也一样的情况,root了,无法加载!
可以尝试用文件管理器进入  /data/data/com.eg.android.AlipayGphone/shared_prefs/    将文件NewPedometer_private.xml  和  NewPedoMeter.xml权限改为666,应该就可以读取到数据了
2018-1-3 16:40
0
雪    币: 5
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
微信7.0好像文件改了
2019-3-31 17:46
0
雪    币: 227
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
微信7.0以后改了 stepcounter.cfg 变成PUSH_stepcounter.cfg,文件结构也变了,但还是类似,可直接修改不成功,微信会自动还原了。楼主怎么搞清楚原理的,能否研究下7.0 的
2019-4-23 15:02
0
雪    币: 930
活跃值: (1328)
能力值: ( LV15,RANK:750 )
在线值:
发帖
回帖
粉丝
15
fonely 微信7.0以后改了 stepcounter.cfg 变成PUSH_stepcounter.cfg,文件结构也变了,但还是类似,可直接修改不成功,微信会自动还原了。楼主怎么搞清楚原理的,能否研究下7.0 ...
暂时没时间
2019-4-25 10:14
0
游客
登录 | 注册 方可回帖
返回
//