LocationSpoofer README

The project's README from github.com/HuangZhuoRui/LocationSpoofer. As one markdown file: README.md.

LocationSpoofer

基于 KernelSU + LSPosed 的 Android 系统级虚拟定位与无线环境伪装框架

Android system-level location spoofing and wireless environment simulation framework based on KernelSU + LSPosed

License: GPL-3.0 Android Kotlin Compose KernelSU LSPosed Telegram

简体中文 | English


📢 加入我们的 Telegram 交流群 进行技术探讨、催更、吹牛逼、搞抽象。

📖 查看 LocationSpoofer 详细使用教程


项目简介

在现代 Android 系统的风控与反作弊环境中,传统的“模拟位置(Mock Location)”开发者选项已被商业 SDK(如高德风控、腾讯安全、百度定位、网易易盾、各类考勤及打卡风控系统)列为高风险特征。这类检测机制不仅验证 isFromMockProvider / isMock 标志位,还会主动采集并交叉比对设备所处的周围物理环境:

LocationSpoofer 是专为应对深度风控检测而设计的系统级虚拟定位与无线环境模拟方案。 项目基于 KernelSU / APatch / Magisk 获取底层 Root 权限,并利用 LSPosed (libxposed API 101+) 框架在 Zygote 阶段注入目标应用进程,以高物理契合度拦截并伪造所有与位置、卫星、基站、Wi-Fi、蓝牙、传感器相关的底层 API 响应,确保应用获取自洽且真实的虚假环境指纹。


功能特性

┌─────────────────────────────────────────────────────────────────────────┐
│                             LocationSpoofer                             │
│                    系统级虚拟定位与无线环境模拟                         │
└─────────────────────────────────────────────────────────────────────────┘
        │                            │                            │
        ▼                            ▼                            ▼
  【空间定位与物理仿真】       【无线电与传感器模拟】         【反检测套件】
  • 三地图引擎自由切换         • Wi-Fi 扫描与连接态伪装       • Xposed 堆栈调用帧清洗
  • WGS-84/GCJ-02/BD-09 自适应 • 2G-5G NR 蜂窝基站小区模拟   • ClassLoader 探测隔离
  • Ornstein-Uhlenbeck 抖动    • BLE 蓝牙信标扫描过滤         • isFromMockProvider 抹除
  • 步态横向摇摆与高斯噪声     • WiGLE / OpenCellID 云端导入  • AppOps OP_MOCK_LOCATION 隐藏
  • 真实路网拟合与红绿灯停候   • 空间反距离加权 (IDW) 插值    • Settings.Secure 开关覆写
  • 悬浮窗遥控阻尼摇杆         • 步频与计步传感器联动         • MultiDex 动态 Class 拦截

1. 多地图引擎与坐标系适配

2. GPS 物理抖动与步态模拟

真实 GPS 芯片输出的坐标因电离层延迟、多径效应及接收机热噪声,天然具有高斯分布的白噪声特征。

3. 反检测与 MultiDex 支持

4. Wi-Fi、基站与蓝牙环境模拟

5. 卫星矩阵与 NMEA 模拟

6. 传感器与步频模拟

7. 路线规划与红绿灯模拟

8. 用户界面


系统架构

本项目采用 MVVM + Clean Architecture,并按职责拆分为 6 个 Gradle 模块:

模块 类型 职责
app Android App 宿主壳工程:Application / MainActivity、签名与打包配置、聚合各模块的 Koin DI;仅把 xposed 模块的产物(LocationHooker 类与 META-INF/xposed/* 元数据)打进最终 APK 供 LSPosed 扫描加载,自身不直接调用其代码
app-ui Android Library 全部 Jetpack Compose UI:页面、弹窗、自研“液态玻璃”组件(ui/liquid)与 ViewModel 层
service Android Library 前台保活服务 SpoofingService、悬浮摇杆 FloatingJoystickService、开机自启广播等后台/服务层
xposed Android Library LSPosed / Xposed 注入模块本体:LocationHooker 入口 + hooks/、hooks/network/ 下的各类 Hook 实现
core-data Android Library app / app-ui / service 三端共用的数据与业务层:Room 数据库、各类 Repository,以及 ConfigManager、RootManager、EnvironmentScanner 等核心工具类
core-geo 纯 Kotlin/JVM 全项目唯一不依赖 Android 的模块:坐标系换算、路线几何与运动真实度引擎,以及 Hook 端与 App 共用的系统识别规则(vendor/)

两个变体统一通过 libxposed 的远程配置通道传递 JSON,Hook 从内存缓存读取:

┌─────────────────────────────────────────────────────────────────────────┐
│     LocationSpoofer 宿主进程(app / app-ui / service / core-data)      │
│  ┌─────────────────────────┐  ┌──────────────────────────────────────┐  │
│  │     Triple Map Engine   │  │          RouteStateMachine           │  │
│  │ (AMap / Baidu / Google) │  │     (IDLE / READY / RUN / PAUSE)     │  │
│  └────────────┬────────────┘  └──────────────────┬───────────────────┘  │
│               │                                  │                      │
│  ┌────────────▼──────────────────────────────────▼───────────────────┐  │
│  │                    ConfigManager(core-data)                     │  │
│  │     序列化配置与坐标系映射,通过框架发布完整配置快照     │  │
│  └──────────────────────────────────┬────────────────────────────────┘  │
│  ┌──────────────────────────────────▼────────────────────────────────┐  │
│  │                    SpoofingService(service)                     │  │
│  │           前台保活服务、悬浮摇杆控制器与路网 / 步态计算           │  │
│  └───────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────┬───────────────────────────────────┘
                                      │ (ConfigManager 发布远程偏好 / 远程文件)
                                      ▼
               ┌─────────────────────────────────────────────┐
               │ 框架管理的远程偏好 / 配置文件 │
               └──────────────────────┬──────────────────────┘
                                      │ (框架通知 → 后台解码 → 原子更新内存缓存)
                                      ▼ LSPosed / libxposed (API 101+) 注入
┌─────────────────────────────────────────────────────────────────────────┐
│                              目标 App 进程                              │
│  ┌───────────────────────────────────────────────────────────────────┐  │
│  │                         LocationHooker                            │  │
│  │  • Location/GNSS:BaseLocationHooker、GnssStatusHooker 等         │  │
│  │  • 地图 SDK:AMapHooker / BaiduMapHooker / TencentMapHooker       │  │
│  │  • hooks/network/:Wifi* / Cellular* / Bluetooth*Hooker 等        │  │
│  │  • SensorStepHooker(计步)/ AntiDetectionHooker(反检测)        │  │
│  └───────────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────────┘

[!NOTE] 跨进程通信 (IPC) 设计: ConfigManager 使用 XposedService.getRemotePreferences() 发布完整 JSON 快照;UTF-8 配置超过 128 KiB 时先写入框架管理的独立远程文件,再原子发布文件指针,避免大配置占满 Binder 事务。全局与非全局版共用这一通道,无需修改 SELinux 策略或向公共临时目录写配置。 Hook 在模块加载时获取初始快照并注册配置变化监听,由后台线程解码、归一化后替换内存缓存;Hook 调用只读缓存。后台每秒检查框架偏好的内存快照以重试启动时的失败,路线派发和服务发现仍由独立定时器执行。 App 私有偏好保存最新期望状态,发布失败自动重试,框架重连后重新发布;停止或暂停请求不会被较早的活动配置覆盖。新通道发布成功后会清理旧配置、探针及脚本。框架仍负责配置持久化,此方案并非完全不落盘。 需要框架实现远程配置能力。升级后安装对应变体、启用模块并重启设备,再开始模拟;全局版可在“系统适配 → Hook 运行状态”检查配置来源为 libxposed:remote-preferences 或 libxposed:remote-file,并核对各进程的发布时间。此次通道迁移尚需真机复验。

系统适配(全局方案)

全局方案直接 Hook 系统服务,不同厂商 / 系统版本的内部实现不一样,需要逐个适配:


环境要求


使用指南

1. 编译与安装

# 1. 克隆代码仓库
git clone https://github.com/your-username/LocationSpoofer.git

# 2. 编译 Debug APK 并直接安装到设备
./gradlew installDebug

2. 权限与激活

  1. 打开 KernelSU / APatch / Magisk 管理器,授予 LocationSpoofer Root 权限。
  2. 打开 LSPosed 管理器,在模块列表中找到 LocationSpoofer 并启用。
  3. 在模块的作用域(Scope)中,勾选需要进行定位伪装的目标应用(如微信、企业微信、钉钉、超星学习通、百度地图、高德地图等)。
  4. 强行停止勾选的目标 App(或重启手机)以使其加载 Hook 逻辑。

3. 常见场景

定点模拟与环境锁定

  1. 启动 LocationSpoofer,在主页地图上拖动准星或搜索栏搜索目标位置。
  2. 在底部抽屉开启所需伪装开关:伪造 Wi-Fi、模拟基站、模拟蓝牙、模拟传感器计步、开启随机抖动。
  3. 点击“启动模拟”接管系统 GPS。
  4. 如需锁定使用具体的本地采集点,可在“管理数据”中点击对应采集点进行锁定绑定。

路线模拟

  1. 切换至“路线规划”标签页,在地图上依次标记多个路点。
  2. 设定移动模式(循环 / 往返 / 单程)以及速度档位(步行、跑步、骑行、自驾或自定义速度)。
  3. 开启 “使用真实路线规划”(系统将自动拉取真实道路轮廓并标记红绿灯等待节点)。
  4. 点击“开始模拟”。可随时开启“悬浮窗摇杆”在前台微调坐标与速度。

实地采集与数据自定义

  1. 开启“设置” -> “环境图谱与扫街” 模式,手机将在后台记录沿途的真实 Wi-Fi、基站与蓝牙信标。
  2. 进入“管理采集数据”页面,可查看列表、编辑备注,或手动指定/修改某条 Wi-Fi(如 SSID、BSSID、RSSI 等)或基站小区数据。
  3. 支持将采集到的无线电指纹一键导出为 JSON 文件,用于备份或共享导入。

独立应用坐标系配置


技术栈


免责声明

本程序仅供学习研究、技术交流以及个人合法合规测试(如开发者定位测试、设备兼容性调试)使用。 使用者请勿将本工具用于任何违法违规或违反相关平台服务协议的活动(包括但不限于虚假打卡、网络考试作弊、商业欺诈等)。 使用本模块造成的任何账号封禁、数据丢失、法律纠纷或其他直接/间接损失,均由使用者自行承担,作者不对此承担任何责任。


开源协议

本项目基于 GNU General Public License v3.0 协议开源。

Copyright (C) 2026 SuseOAA

LocationSpoofer (HuangZhuoRui/LocationSpoofer)

Searching Database…

2K ·GitHub
archived
这是干什么的?LocationSpoofer 是一个基于 KernelSU + LSPosed 的安卓系统级位置伪造和无线环境模拟框架。它同时伪造 GPS、Wi-Fi、移动网络、蓝牙和传感器数据,让那些把模拟位置标志和真实无线信号交叉核对的 App 看到的是一套前后一致的假环境。
这是一个我直接打开的 App,还是挂在其他 App 上的东西?它是一个 LSPosed/Xposed 模块:你在 root 管理器和 LSPosed 里启用它,在它的「作用域(Scope)」里勾选目标应用,它就会在 Zygote 阶段注入这些应用,拦截位置、卫星、Wi-Fi、基站和传感器相关的 API。
怎么把它跑起来?安装 APK,在 KernelSU/APatch/Magisk 管理器里授予它 root 权限,在 LSPosed 中把它启用为模块,在它的 Scope 里勾选目标应用,然后强制停止(或重启)这些应用,让钩子生效。
需要 root 和特定的 Xposed 框架吗?需要:安卓 8.0(API 26)或更高版本,通过 KernelSU/APatch/Magisk 获取 root,以及 LSPosed(API 101+)或其他兼容 libxposed API 101+ 的框架。
它能对系统里所有 App 一次性全局伪造位置吗?不能,这不是全局方案。你必须在 LSPosed 的 Scope 里逐个添加目标应用,因为作者选择不为每个手机厂商单独维护系统级适配。
这到底是给谁用的?面向做正规位置测试和设备兼容性调试的开发者和研究人员;README 中明确声明不得用于考勤打卡、考试作弊或欺诈。
它是怎么让模拟的 GPS 轨迹看起来自然,而不是一个静止的点?它使用 Ornstein-Uhlenbeck 均值回归随机过程产生缓慢漂移(严格限制在 4 米以内),走路或跑步时再叠加一个高斯分布的横向「步态抖动」,模拟真实 GPS 芯片和人类步伐的天然噪声。
它怎么避免被识别为钩子/Xposed 模块?它会清理堆栈跟踪中 Xposed/LSPosed 的包名,通过 Class.forName/ClassLoader.loadClass 阻止对它类的反射探测,并把 isFromMockProvider/isMock 以及相关的 Settings/AppOps 标志永久覆写为 false。
它能沿真实的道路模拟移动,而不只是走直线吗?可以。路线模拟模式会通过地图路径规划贴合真实道路形状,检测到红绿灯时自动暂停 15 秒,模拟过程中还提供悬浮摇杆手动调整速度和方向。
选地点可以用哪些地图?高德地图 3D 版、百度地图和 Google Maps 都已集成;高德地图是所有地方的默认兜底选择,因为它不依赖谷歌服务;如果你自己提供 API key,也可以用 Google Maps。
Size
<0.1 MB
Stars
2K
Updated
CommitOct 18
Age
5mo
Commits · 90 Days