FakeLoc

虚拟定位模块:选点、粘贴或手输坐标,把假位置作用于你指定的应用。

⚠️ 仅供合法用途,风险自负 —— 完整条款见文末免责声明。

功能

功能 说明
在地图上选点 腾讯底图,拖图钉 / 搜地址 / 点图反查,选完统一换算成 WGS-84
坐标输入 纬度 / 经度,六位小数;不做坐标系换算,输入什么就是什么
常用坐标 八个内置城市,点击即设为锚点
使用真实定位 以当前位置为起点(需要定位权限,受 5 秒节流保护)
粘贴解析 从剪贴板识别坐标、Google 地图链接、geo: URI、?lat=&lng= 参数
生效范围 作用域内全部应用,或只对勾选的那几个
信号微调 精度 / 海拔 / 速度 / 步行漂移(在设置页的「信号微调」页签)
假地址 城市 / 省 / 区跟着假坐标走(地图 SDK 反查,含 adcode 与城市编码),可单独关掉
反检测 抹掉 isFromMockProvider / isMock / AppOps / SettingsProvider 的 mock 标记;可锁定原始定位源(切断 WiFi 扫描、基站信息与原始 GNSS)—— 这是「地图先跳到模拟点、几秒后又跳回真实位置」的正解

使用方法

1. 安装

从 最新 Release 下载 FakeLoc-<版本>-release.apk,或在 LSPosed 管理器的「在线仓库」里搜 FakeLoc 直接装。

包名是 io.github.cobylinweiqi.fakeloc。APK 用本项目专用密钥签名,自己编译出来的包签名不同, 两者不能互相覆盖安装 —— 更新请始终走 Release。更早的 com.amo.fakeloc 是另一个 App, 如果你装过,需要先卸载。

2. 在 LSPosed 里激活

  1. 启用 FakeLoc 模块
  2. 配置作用域(这一步决定它到底管不管用):
    • 默认的 android 与 com.android.providers.settings 负责反检测的全局部分,建议保留
    • 再把你想要伪造定位的 App 逐个勾上
  3. 重启设备,或至少重启目标 App
  4. 打开 App,界面顶部不再显示「未连接到 LSPosed 服务」即表示握手成功

只勾目标 App 时,Google Play 服务的融合定位(fused)拿到的仍是真坐标 —— 那个位置是 GMS 在自己进程里算出来的。两个解法任选:把 com.google.android.gms 也加进作用域(轻量,推荐先试); 或者打开「系统级 hook」并把 system 加进作用域(覆盖最广,代价是作用域内所有 App 都被改写)。

「生效范围」名单只决定谁收到假位置,模块本身还得在 LSPosed 作用域里 —— 两者是与的关系。

3. 配置地图 Key(可跳过)

选点页的底图是腾讯地图,包里不含任何 Key,需要你自己去 腾讯位置服务 申请(免费额度够个人使用),再填进 App 的设置页 → 地图配置。 申请时控制台要填的包名与 SHA-1,App 设置页里都显示着,各带一个复制按钮 —— 直接复制,别手抄。 (官方 Release 的证书 SHA-1 是 28a3a1d6f8a0d9b00af1a33a70586cc0c20a04b0,自编译的包不一样。)

申请时还要勾上「逆地址解析」服务 —— 底图与地址查询是两套授权。只勾底图会得到一张画得好好的地图、 却永远读不出城市名,App 会明确提示「地址解析失败」。

不填 Key 也能用:手动输入坐标、粘贴解析、内置城市都不受影响,只是选点页没有底图。

4. 用起来

底部主按钮启动 / 停止,运行中也能改参数。首页状态卡上的三个 chip 显示当前的精度 / 海拔 / 漂移值。

锁定定位源(默认开)会切断目标 App 的 WiFi 扫描、基站信息与原始 GNSS。带着自研引擎的 App (高德这类)靠它才能被挡住「自己再算一个真实位置」这条路。代价是那个 App 失去基于 WiFi / 基站的 室内定位能力 —— 如果它因此报「定位失败」,把这个开关关掉即可。

5. 已知限制

  • 反检测不等于隐身。 它只抹掉 mock 标记;做多源交叉验证的 App(真 GPS 与网络定位对不上、 传感器与轨迹不符)仍可能看出异常。
  • 原始 NMEA / GNSS 观测数据只在系统级作用域开启时才被压制。只勾目标 App 时, addNmeaListener 之类仍能拿到与假坐标矛盾的真实卫星数据。
  • Wi-Fi / 基站指纹完全没做 —— 要对抗基于 BSSID 的定位,那部分得自己加。
  • system 作用域下是本机全量伪造,包括 FakeLoc 自己的「使用真实定位」按钮。
  • 功能开关只在运行中的进程生效,新增作用域内的 App 需要重启目标 App 一次。
  • 选点页需要联网(底图瓦片与地址查询都走 HTTPS)。地址查询用你填的那个 Key,Key 没勾「逆地址解析」时会解析不出城市名 —— 页面底部会直接说。

免责声明

一、使用边界。 本模块仅供开发调试、自动化测试与安全研究,且只应装在你自己拥有、并被 授权调试的设备上。用它做考勤打卡作弊、刷单、骗取补贴或优惠、绕过金融与支付类应用的风控、 伪造行程等,可能违反当地法律以及第三方应用的服务条款 —— 由此产生的一切后果由使用者承担, 与作者及贡献者无关。

二、账号与数据风险。 本模块 hook 的是真实的定位读取路径,目标 App 存在反作弊检测的可能: 轻则功能异常,重则账号被限制或封禁,在银行、支付、证券、保险类 App 上尤其不建议使用。 另外,伪造坐标并不改变基站、Wi-Fi、传感器等其它定位来源,某些应用据此就能判断出异常。

三、设备风险。 使用前提是设备已 root 并装有支持 libxposed API 101 的 LSPosed。root 会 降低设备的整体安全等级(部分应用会因此拒绝启动或限制功能),刷机、框架与本模块的兼容问题 也可能造成系统不稳定、数据损坏乃至无法开机。请自行做好备份。

四、按「现状」提供。 本项目不附带任何明示或默示的担保,包括可用性、正确性与特定用途的 适用性。代码由 AI 编写、人负责需求与验证,请在使用前自行评估。作者不对任何设备损坏、 数据丢失、账号封禁、法律纠纷或其它损失负责。

以上条款不排除或限制依法不能排除或限制的责任。


如果这个模块帮到了你,欢迎在 GitHub 仓库 点个 ⭐ Star。

Releases

1.6.0

Stable

9/29/2026, 8:52:06 AM

首个公开版本。

安装

从下面的 Assets 下载 FakeLoc-1.6.0-release.apk,装好后必须在 LSPosed 里启用本模块并勾选
作用域,否则一点效果都没有(完整步骤见 README 第六节)。

⚠️ 本版本的应用 ID 是 io.github.cobylinweiqi.fakeloc。 开发过程中的旧包名是 com.amo.fakeloc,
两者是两个不同的 App,装这个之前请先卸载旧的。改名原因见
README 第十三节。

这一版有什么

  • 不需要开发者选项里的「模拟位置」 —— 直接 hook android.location 的读取路径
  • 接管目标 App 内嵌的定位 SDK(高德 / 百度 / 腾讯)—— 覆盖那些完全不走系统定位的 App。
    这一条靠反射操作目标 App 自己的类实现,所以本包不链接、也不分发任何厂商 SDK
  • 反检测:抹掉 mock 标记(isFromMockProvider / isMock / AppOps / SettingsProvider),
    并可锁定原始定位源,断掉 App「自己再算一个真实位置」这条路
  • 选点页内置腾讯底图:拖图钉、搜地址、点图反查。包里不含任何 Key,Key 由使用者自己申请填入
  • 信号微调(精度 / 海拔 / 速度 / 步行漂移)集中在设置页的第二个页签,与地图配置分开

体积与构建

4.98 MB。早期版本 82.7 MB,两轮压下来:先只动打包方式(dex 压缩 + 只留 arm64-v8a),
再删掉随包的两家底图渲染器并打开 R8。做法与取舍写在
README 第五节。

签名

Release 用本项目专用密钥签名(CN=FakeLoc),SHA-1
28a3a1d6f8a0d9b00af1a33a70586cc0c20a04b0。

这一版之前用的是 Android 默认 debug 密钥,那样没法长期发布:debug 密钥跟着机器走,
换电脑或重装系统后 SHA-1 就变了,而 Android 只允许同签名的包互相升级 —— 已装用户从此
收不到更新。首个公开版本之前换掉,代价最小。

两条代价请留意:

  • 自己编译出来的 APK 和这个签名不同,不能互相覆盖安装。 仓库里没有 keystore.properties
    时 assembleRelease 回落到 debug 签名,那个包能装、能自用,但覆盖不了这个 Release;
    Android 要求签名一致才允许升级,换签名等于换一个 App,要先卸载
  • 地图 Key 绑定的是「包名 + SHA-1」,在腾讯位置服务控制台按官方 Release 登记时,
    SHA-1 填上面这个值(自己编译则填 App 设置页显示的那个)

已知未验证

腾讯底图的实际渲染需要使用者填好自己的 Key 后确认 —— 编译与逻辑侧都已验证
(模块加载、三条注入通道、R8 未误裁,均有真机 LSPosed 日志),但底图能不能画出来取决于
Key 是否有效,那一步只能由使用者本人在设备上确认。填了 Key 仍白屏请开 issue。

参考

思路参考 XposedFakeLocation(定位注入 +
现代 libxposed 架构)与 HideMockLocation(反检测),
代码为重新实现。详见 README 第十四节。

Assets

1