吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1925|回复: 46
上一主题 下一主题
收起左侧

[Android 原创] 浅修改一下安卓定位

  [复制链接]
跳转到指定楼层
楼主
debugal 发表于 2026-2-2 20:28 回帖奖励
前言
本操作是利用 开发者位置模拟+hook app方法,来实现位置修改。

一、简单尝试

最近有一个需要修改位置的需求,简单进行了尝试。以“咕咚”为例,实现位置修改。
由于定位都是由android.location.Location这个类提供的,查阅了一下开发文档,发现主要是getLatitude()和getLatitude()

于是借助xposed hook一下这两个方法,并在LSP里面勾选“咕咚”

此时发现,咕咚位置发生了变化,但是当我们开始跑步时,定位又消失了

   
也就是说还没开始的时候是通过getLatitude()和getLatitude()获取到了位置,但是开始跑之后,就不是通过这两个方法获取位置??还是什么情况?于是打印了一下堆栈

可以看到,app使用的是高德的SDK,并且是在onLocationChanged()时调用。也就是说,要我先主动触发位置改变,才会被监听到,从而修改位置。
那就不能通过hook Location去修改位置了,要去主动创建线程去一直模拟位置才行。

二、创建位置模拟线程


去了解了一下,大概有两种方法:1、通过root权限,hook安卓HAL、JNI层的系统代码实现。2、通过系统提供的模拟位置权限实现。
第一种最彻底,应该是hook hardware\qcom\gps\loc_api\libloc_api\gps.c里面的方法,类似FakeLocation。但是我也不会啊,所以决定在第二种的基础上做一些改善。
第二种有现成的“影梭”,感谢ZCShou作者的开源。稍微修改一下key的配置就能直接用了。
开始跑步,结果还是没有位置。而且连跑步之前的位置都变成了实际的位置。也就是说模拟的位置对app无效!!!


三、过检测


猜测主要是1、影梭对咕咚做了屏蔽。2、咕咚对模拟位置有检测。检查了一遍影梭的代码,发现没有什么问题,对高德地图也是生效的,那就是咕咚有模拟定位检查。
查了高德和安卓的文档,里面有检查的就只有这三个方法。那直接上hook代码返回false

成功显示!!之后就可以自定义位置信息啦。此方法只能在检测不严的情况下使用,对于严格的app会检测hook就需要更深入的研究。

四、更多信息

海拔:海拔也是Location里面的一个属性,可以直接提供。但是app会对比气压计传的数据,所以在提供设定的altitude时,还要hook android.hardware.Sensor修改气压计的海拔
步数:步数获取的方法有很多,大多数会通过SensorManager.getDefaultSensor(int type)来获取的,type主要有两个,分别是TYPE_STEP_DETECTOR和TYPE_STEP_COUNTER。而跑步软件则大多是用加速度传感器来实现,通过hook dispatchSensorEvent实现,float[] values里的值分别是xyz的加速度,修改对应值,模拟运动时的加速度就可以了。


五、总结
我比较菜。不足或者不对之处,请指正

image.png (110.41 KB, 下载次数: 1)

image.png

免费评分

参与人数 5吾爱币 +11 热心值 +5 收起 理由
wzl90327 + 1 + 1 谢谢@Thanks!
jaffa + 1 + 1 谢谢@Thanks!
wuai3456 + 1 + 1 用心讨论,共获提升!
buluo533 + 1 + 1 用心讨论,共获提升!
正己 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
dork 发表于 2026-2-3 19:31
likely001 发表于 2026-2-3 16:53
学习了,对于常年钉钉打卡的人来说刚好用的上

看到开发者位置模拟你就应该明白,像丁丁、WX一类压根用不了的。想什么呢
推荐
flychee 发表于 2026-2-3 17:10
沙发
likely001 发表于 2026-2-3 16:53
学习了,对于常年钉钉打卡的人来说刚好用的上
4#
≯美心遥控门≮ 发表于 2026-2-3 18:22
完全看不懂
6#
china08 发表于 2026-2-3 20:42
所有定位原理是一样的吗
7#
Tomoyo1014 发表于 2026-2-3 21:01
支持一下有这样钻研的精神
8#
zhangfeng_223 发表于 2026-2-3 21:38
支持一下
9#
 楼主| debugal 发表于 2026-2-3 22:21 |楼主
china08 发表于 2026-2-3 20:42
所有定位原理是一样的吗

原理应该都差不多,但我只是从系统提供的位置模拟+过app检测去实现的。对于严格的软件,还是要从安卓底层去hook+过检测才行,类似fakelocation。可以参考https://aggresss.blog.csdn.net/article/details/54323034
10#
ccnacomputer 发表于 2026-2-3 23:25
搞个成品
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-2-7 20:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表