Cydia Substrate 初尝试:刷计步软件数据

Cydia Substrate 初尝试:刷计步软件数据



Cydia

Cydia Substrate是一个代码修改工具,可以修改IOS、Android系统代码,从而实现自己的奇思妙想。Cydia的使用方法教程不再赘述,下面直接进入实战。

设备准备

一台Root过得Android设备,Android系统版本2.3-4.3。我当初不信邪,以为Android4.4肯定也可以,结果搞了半天发现是真的不行,所以还是谨遵官网指导,版本最高4.3,不能再高了。不知道怎么准备手机,可以看我的这篇文章如何搞机

探索

现在比较流行的是微信运动。微信做的真的很完善了,本希望反编译它的apk来找一个切入点,结果有两大难点让我无法进行下去:

  1. 代码量大:里面用了很多工具包,加上腾讯自己开发的代码,代码量着实不小。但是我们关注的点很明确,所以可以根据包名、类名来寻找,所以还是可以克服的。
  2. 代码名称混淆:里面好多类名和方法名反编译不出来,只能边看边猜,阅读难度略大。还有一些类直接反编译失败,所以我也是无能为力了,看的云里雾里,没找到正确的切入点。

这两点着实让我心灰意冷,如果哪位仁兄研究过,还请你赐教。还有,我不太清楚微信怎么自己统计步数的。

最后我找了一款比较流行的计步软件,是哪一款我就不说了,这个APP通过加速度传感器数据来计算步数。

我同样也是先反编译这个APP,结果问题和微信一样,暂时无法解决。最后,我选择了不Hook应用,而是Hook Android的API。这款软件采用了加速计数据统计步数,我则着眼于系统的加速计事件的产生过程,从中选择可以Hook的点。

思路

Android系统事件的收发机制很有意思,下面我们来研究一下一个系统事件,从注册监听到接收事件的过程。这里我只关注加速计事件。

监听器注册

Android应用开发,想要利用系统事件,则需要构造一个Listener,这里就是SensorEventListener。首先,你需要得到系统的SensorManager,然后从中获得想要的传感器,然后让SensorManager将该传感器注册入自己的Listener。

//获得传感器管理器
SensorManager mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
//获得加速度传感器
Sensor mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
//注册监听器
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);

我写的代码里的this就是这个Activity,我让Activity实现了SensorEventListener接口,监听器需要实现的方法如下:

    @Override
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
            double ax=event.values[0];
            double ay=event.values[1];
            double az=event.values[2];
            Log.d("YOULOG", ax+" "+ay+" "+az);
        }
    }

    @Override
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值