前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对运动作弊APP的分析

对运动作弊APP的分析

作者头像
小道安全
发布2023-10-08 09:13:06
3430
发布2023-10-08 09:13:06
举报
文章被收录于专栏:游戏安全攻防游戏安全攻防

背景

在网络上获取到一个运动模拟器APP,宣称可以支持对市面上所有运动APP的步数的修改,最终快速实现到你设定的目标步数。

下面就开始对运动模拟器APP功能进行分析,解析下该APP如何实现修改步数功能原来,达到最终的作弊效果。

在进行解析功能之前先需要了解下xposed基础知识点和传感器知识点。

xposed基础

Xposed框架(Xposed Framework)是一套应用性非常广的HOOK框架,在Android 高权限模式下运行的框架服务,可以在不修改 APP源码的情况下,修改程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。

Xposed 框架的原理是通过替换系统级别的 /system/bin/app_process 程序控制zygote进程,使得app_process在启动过程中会加载 XposedBridge.jar 这个 jar 包,这个 jar 包里面定义了对系统方法、属性的一系列 Hook操作,同时还提供了Hook API 供我们二次开发 Xposed 模块的使用。

在系统启动时,zygote 进程加载XposedBridge.jar,将需要替换的方法通过JNI中的hookMethodNative指向Native方法xposedCallHandler,xposedCallHandler再调用handleHookedMethod来调用被劫持的方法,进而转入Hook逻辑。

在xposed进行hook操作过程中,必然会跟beforeHookedMethod和afterHookedMethod打交道,其中beforeHookedMethod是在函数运行前劫持HOOK功能,afterHookedMethod是hook后放行功能。

传感器基础

android 平台支持三大类传感器:

1、动态传感器:这类传感器测量三个轴向上的加速力和旋转力。这个类别中包含加速度计、重力传感器、陀螺仪和旋转矢量传感器。

2、环境传感器:这类传感器测量各种环境参数,如环境气温、气压、照度和湿度。这个类别中包含气压计、光度计和温度计。

3、位置传感器:这类传感器测量设备的物理位置。这个类别中包含屏幕方向传感器和磁力计。

android中传感器实现调用需要涉及到以下几个关键类和接口:

1、SensorManager

使用这个类来创建传感器服务的实例。该类提供了各种方法来访问和列出传感器,注册和取消注册传感器事件监听器,以及获取屏幕方向信息。它还提供了几个传感器常量,用于报告传感器精确度,设置数据采集频率和校准传感器。

2、Sensor

使用这个类来创建特定传感器的实例。该类提供了各种方法来确定传感器的特性。

3、SensorEvent

使用这个类来创建传感器事件对象,该对象提供有关传感器事件的信息。传感器事件对象中包含以下信息:原始传感器数据、生成事件的传感器类型、数据的准确度和事件的时间戳。

4、SensorEventListener

使用此接口创建两种回调方法,以在传感器值或传感器精确度发生变化时接收通知(传感器事件)。

功能分析

通过APP基本构成分析,该APP没有采用第三方加固进行对代码保护,并且所有功能都集中在java代码上。

允许振动功能:

android.permission.VIBRATE

允许程序写入外部存储:

android.permission.WRITE_EXTERNAL_STORAGE

允许程序可以读取设备外部存储空间:

android.permission.READ_EXTERNAL_STORAGE

程序的主入口:

com.specher.sm.MainActivity

通过ComponentName类可以实现打开启动另一个APP应用程序,通过这种方式判断当前运行环境是否安装了xposed框架。

ComponentName cn = new ComponentName(packageName, className); //第一个参数为包名,第二个参数类名

经过对整个APP代码的分析,这个app的主要核心功能在下图的3个类中,分别为:MainActivity、HookSensor、b,其中MainActivity类上面已分析主要是通过判断是否有安装xposed框架还有读取界面上的设置功能。

HookSensor类

这个是xposed模块的主要入口,通过xposed提供的接口函数进行对系统函数进行hook,从而达到改变修改流程作弊的功能。

android.hardware.SystemSensorManager$SensorEventQueue这个类是用于读取传感器数据的一个类。

android.hardware.SensorManager 获取物理传感器

这个类主要功能通过查找传感器相关的类,然后通过要进行hook的方法进行hook。

b类:

这个是xposed模块的关键hook调用类,通过采用beforeHookedMethod(这个方法中的代码逻辑会在hook住的方法调用前执行)进行hook调用操作。

通过响应SensorEvent传感器事件,进行判断传感器的类型,然后实现到对整个系统层面进行作弊修改功能。

//磁力传感器,基于硬件

public static final int TYPE_MAGNETIC_FIELD = 2;

//方向传感器,基于软件

public static final int TYPE_ORIENTATION = 3;

//陀螺仪传感器

public static final int TYPE_GYROSCOPE = 4;

//光线感应传感器

public static final int TYPE_LIGHT = 5;

//距离传感器,基于硬件

public static final int TYPE_PROXIMITY = 8;

//重力传感器,基于硬件或软件

public static final int TYPE_GRAVITY = 9;

//旋转矢量传感器,基于硬件或软件

public static final int TYPE_ROTATION_VECTOR = 11;

小结

以上只是对运动模拟器APP的简单分析,这仅仅就是一个xposed的插件,通过hook系统传感器方式实现整个手机系统进行作弊功能。

在目前的情况下,很多APP都对xposed进行对抗,因xposed是开源的,因此由于对抗也衍生了各种定制版本例如lsposed。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-05-24 07:30:00,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小道安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档