Skip to content

Latest commit

 

History

130 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LocationSpoofer

基于 KernelSU + LSPosed 的高保真 Android 系统级虚拟定䜍䞎无线环境䌪装暡块

High-fidelity Android system-level location spoofing and wireless environment simulation module based on KernelSU + LSPosed

License: GPL-3.0 Android KernelSU LSPosed Telegram

简䜓䞭文 | English


📢 加入我们的 Telegram 亀流矀 进行技术探讚、催曎、吹牛逌、搞抜象。

📖 查看 LocationSpoofer 诊细䜿甚教皋


📖 项目简介

圚现代 Android 系统的风控环境䞭䌠统的“暡拟䜍眮Mock Location”匀发者选项早已被各类反䜜匊 SDK劂高執风控、腟讯安党、眑易易盟等列䞺高风险特埁。它们䞍仅胜借蜻束检测到 isFromMockProvider 标志还䌚通过收集呚囎的以䞋信息来识别匂垞

  • Wi-Fi BSSID 列衚
  • 移劚基站蜂窝小区的蜂窝指纹
  • 附近 BLE 蓝牙信标
  • 甚至通过对定䜍数据序列进行傅里叶变换FFT来识别规埋的静态或线性暡拟蜚迹。

LocationSpoofer 是䞓䞺应对歀类高区床风控而讟计的系统级虚拟定䜍䞎无线电环境克隆方案。 它基于 KernelSU / Magisk / APatch 获取底层 Root 权限并利甚 LSPosed (libxposed) 框架泚入目标进皋以极高的物理契合床拊截并䌪造所有䞎定䜍、眑络环境盞关的底层 API 响应确保应甚圚无法察觉的情况䞋获取高床䞀臎的虚假䜍眮指纹。

Tip

🌟 最新版本重芁曎新

新增了曎完敎的 Wi-Fi 环境暡拟 侎 移劚基站暡拟可从本地扫街数据、WiGLE 云端热点数据以及 OpenCellID 基站数据䞭构建目标坐标附近的真实无线电指纹并圚目标 App 进皋内同步䌪造 WifiManager、TelephonyManager、PhoneStateListener 侎 TelephonyCallback 等接口返回让䜍眮、Wi-Fi、运营商、基站小区䞎信号区床保持䞀臎。


✹ 栞心特性䞎技术内幕

1. 🌐 地囟匕擎䞎自适应坐标系翻译噚

  • 地囟无猝切换囜内讟倇自劚初始化高執或者癟床 3D 地囟海倖讟倇自劚切换至 Google Maps 进行路线规划䞎十字准星埮调。
  • 独立应甚坐标系适配埮信、孊习通、癟床地囟等䞍同应甚对定䜍接口的期望坐标系䞍同。若盎接䌠入 GCJ-02 䌚圚癟床地囟䞊产生数癟米偏移。LocationSpoofer 支持䞺每䞪目标 App 单独指定 GCJ-02 (火星坐标)、WGS-84 (GPS 原始坐标) 或 BD-09 (癟床坐标)。
  • 零延迟翻译圚 Xposed 挂钩时盎接从䞻进皋预先计算奜的经纬床数据读取规避高频 Hook 场景䞋的䞉角凜数匀销。

2. 🛰 高保真 GPS 物理匕擎䞎随机枞走抖劚

真实 GPS 芯片蟓出 of coordinates 因电犻层闪烁、倚埄效应及接收机噪声倩然具有高斯分垃的癜噪声。若返回静态坐标或机械的盎线坐标极易被反䜜匊检测。

  • Ornstein-Uhlenbeck 随机过皋我们匕入了高斯随机枞走物理暡型来生成自然䜍眮抖劚其状态方皋定义䞺 $$\mathrm{d}X_t = -\alpha X_t \mathrm{d}t + \sigma \mathrm{d}W_t$$ å…¶äž­ $\sigma$ 䞺挂移区床$\alpha$ 䞺均倌回園系数本暡块讟定䞺 0.05即每秒将圓前挂移拉回 5%。它既产生了笊合物理规埋的䜎频猓慢挂移又䜿挂移量圚 3-Sigma 原则䞋䞥栌有界硬性限制圚 4 米内防止挂移无限发散匕起“䜍眮瞬移”告譊。
  • 步频暪向抖劚Gait Jitter圓倄于步行或跑步暡匏时匕擎自劚沿圓前移劚方向的正亀暪向䞊根据步频呚期的统计抂率斜加 0.15 * N(0,1) 米的高斯暪向䜍移完矎暡拟真实人行时身䜓巊右晃劚的步态特埁。
  • 海拔高床䞎粟床GDOP慢挂移粟床倌Accuracy及海拔高床Altitude䞍再是死板的垞量而是圚基准倌附近进行垃朗运劚匏的猓慢波劚暡拟倧气对流层延迟䞎卫星几䜕分垃的自然变化。

3. 🛡 党方䜍反检测套件Stealth & Anti-Detection

  • 深床调甚栈枅掗Stack Traces Scrubbing劚态拊截 Throwable.getStackTrace 和 Thread.getStackTrace䞀旊发现调甚栈䞭包含 de.robv.android.xposed、io.github.libxposed、lsposed 等敏感调甚垧自劚抹陀让反䜜匊 SDK 无法圚调甚铟回溯䞭发现 Xposed 框架。
  • 类加蜜隔犻Hook Class.forName 和 ClassLoader.loadClass对于䞊述敏感类名的查询盎接拊截并抛出 ClassNotFoundException。
  • Mock 属性圻底抹陀
    • 将 Location.isFromMockProvider() 和 Location.isMock() 的返回倌氞久区制芆写䞺 false。
    • 针对 Android 12/13+ 系统通过反射区制将 Location 内郚私有字段 mMock 和 mIsFromMockProvider 重写䞺 false并移陀 Extra Bundle 䞭可胜残留的 mockLocation 标记。
    • 拊截 AppOpsManager 的 OP_MOCK_LOCATION (58) 权限查询区制返回 MODE_IGNORED (1)什目标 App 讀䞺系统没有向任䜕蜯件授权暡拟䜍眮。
    • 拊截 Settings.Secure äž­ mock_location 及 allow_mock_location 的读取返回 0关闭状态。
    • 隐藏 LocationManager 䞭的虚拟 Test Provider将其䞀埋重呜名并䌪装䞺系统的原生 gps 提䟛者。

4. 📶 无线电环境克隆䞎空闎热力插倌匕擎

倧倚数反䜜匊 SDK 䌚采集呚蟹的无线电指纹。劂果䜠定䜍到北京䜆手机扫出来的 Wi-Fi 列衚党圚䜠䞊海的家里瞬闎就䌚被标记匂垞。

  • 实地扫街扫描噚EnvironmentScanner支持圚背景运行扫描以 10s 闎隔自劚保存䜠真实走过的物理䞖界䞭的 Wi-Fi 接入点SSID/BSSID/RSSI/频率/信道/Wi-Fi标准、基站小区信息GSM, WCDMA, CDMA, LTE, 甚至是 5G NR 的完敎蜂窝指纹 MCC/MNC/LAC/CID/TAC/PCI/NCI 及 dbm 信号区床以及附近 BLE 蓝牙信标。
  • 空闎反距犻加权IDW插倌圓虚拟定䜍圚地囟䞊运劚时系统䌚圚 Room 本地数据库䞭检玢 50 米范囎内的历史采集点。䜿甚反距犻平方比䜜䞺权重 $$w_i = \frac{1}{d_i^2}$$ 对呚蟹所有 Wi-Fi RSSI 信号区床、蜂窝 dbm 级蓝牙 RSSI 进行劚态差倌计算。这䜿手机圚虚拟移劚时Wi-Fi 信号䌚圚后台平滑衰减和增区暡拟最真实的信号过枡绝无指纹突变垊来的安党隐患。
  • Wi-Fi 扫描䞎连接态暡拟Hook WifiManager.getScanResults()、getConnectionInfo()、getConfiguredNetworks()、getDhcpInfo() 等接口按目标坐标返回䌪造的 SSID/BSSID/RSSI/频率/信道/加密胜力同时同步 Wi-Fi 匀关状态、连接眑络、眑关䞎 DHCP 信息。
  • 真实品牌 OUI 前猀匹配圚无本地采集数据的空癜区域系统采甚 TP-Link、Huawei、ZTE、Xiaomi、Cisco 等真实䞭囜䞻流品牌路由噚的合法 MAC 前猀Organizationally Unique Identifier生成虚拟 Wi-Fi BSSID拒绝因随机生成非法 MAC 而被反䜜匊厂商识砎。
  • 云端联合䌪装 (WiGLE API)可配眮 WiGLE API 密钥实时圚线拉取党球指定经纬床呚囎真实物理存圚的 Wi-Fi 热点并写入本地环境数据库后续可犻线倍甚。
  • OpenCellID 基站数据富入可配眮 OpenCellID API Key按目标坐标查询附近真实蜂窝小区自劚完成 GCJ-02 到 WGS-84 坐标蜬换、bbox 扩展查询、字段園䞀化䞎本地猓存。
  • 移劚基站䞎运营商接口暡拟芆盖 TelephonyManager.getAllCellInfo()、getCellLocation()、getNetworkOperator()、getServiceState()、getSignalStrength()、listen()、requestCellInfoUpdate()、registerTelephonyCallback() 等读取路埄支持 GSM/WCDMA/LTE/NR 小区信息、MCC/MNC/LAC/CID/TAC/PCI/NCI、RSRP/dbm 信号区床䞎运营商名称暡拟圓云端数据猺少 LTE/NR 时䌚补充合成 LTE 䞻小区以兌容只读取 4G 的检测蜯件。

5. 🛰 卫星矩阵䞎 NMEA 协议生成噚

  • GNSS Status 劫持Hook 系统的 GnssStatus 类暡拟倚蟟 20+ 颗包括 GPS、北斗、GLONASS 的卫星分垃矩阵泚入真实的 PRN 标识、信噪比CNR、俯仰角、方䜍角等并正确汇报 usedInFix参䞎定䜍计算状态。
  • NMEA 语句流劚态拌装劫持 OnNmeaMessageListener。根据圓前的暡拟䜍眮、航向角、速床和暡拟出的卫星圚内存䞭劚态组装笊合囜家标准的原始 \$GPGGA, \$GPRMC, \$GPGSA, \$GPGSV 语句并计算校验和Checksum实时蟓出满足对底层 NMEA 信号进行硬栞校验的 App。

6. 🔀 智胜路线富航䞎红绿灯停候系统

  • 真实物理路眑拟合支持点对点或倚路点航线讟计。匀启“䜿甚真实路线”后系统将通过路埄搜玢算法拟合实际道路蜮廓防止蜚迹穿墙或走盎线。
  • 红绿灯智胜识别路线规划成功后匕擎䌚自劚解析路段䞭的红绿灯总数并随机分发至折线拐角倄。圓暡拟噚运行到红绿灯点时䌚自劚停驻 15 秒再重新加速完矎暡拟真实的蜊蟆行蜊特埁。
  • 悬浮窗摇杆提䟛悬浮窗虚拟摇杆可圚前台盎接手劚埮调坐标。支持根据摇杆拉䌞幅床圚 0 ~ 10 m/s 之闎平滑过枡并圚蜬向时应甚航向角阻尌。

🏛 系统架构

本项目采甚 MVVM 架构并利甚 Root 权限规避了 Android 11+ 的沙盒可见性隔犻实现零权限跚进皋配眮䌠递

┌─────────────────────────────────────────────┐
│            LocationSpoofer (宿䞻 App)       │
│  ┌──────────┐  ┌──────────────────────────┐ │
│  │ Dual-Map │  │    RouteStateMachine     │ │
│  │(高執/谷歌)│  │    (IDLE/READY/RUN...)   │ │
│  └────┬─────┘  └────────────┬─────────────┘ │
│       │                     │               │
│  ┌────▌─────────────────────▌─────────────┐ │
│  │            ConfigManager                 │ │
│  │  (将配眮序列化通过 Root 权限写入 Temp)   │ │
│  └──────────────────┬───────────────────────┘ │
│  ┌──────────────────▌─────────────────────┐ │
│  │           SpoofingService               │ │
│  │       (前台通知服务 & 蜚迹计算匕擎)       │ │
│  └────────────────────────────────────────┘ │
└─────────────────────┬───────────────────────┘
                      │ (写入配眮 JSON)
                      ▌
        ┌───────────────────────────┐
        │ /data/local/tmp/ 配眮文件  │
        │    (chmod 777 + chcon)    │
        └─────────────┬─────────────┘
                      │ (读取配眮守技线皋 1000ms 猓存)
                      â–Œ LSPosed 泚入
┌─────────────────────────────────────────────┐
│              目标 App 进皋                  │
│  ┌────────────────────────────────────────┐  │
│  │            LocationHooker              │  │
│  │  • Location API / Baidu / Tencent SDK  │  │
│  │  • WiFi & 蜂窝基站 (2G-5G NR) 环境泚入    │  │
│  │  • 蓝牙 BLE 扫描过滀                    │  │
│  │  • Anti-Mock & Xposed 堆栈枅掗反检测   │  │
│  │  • GnssStatus 卫星 & NMEA 暡拟          │  │
│  └────────────────────────────────────────┘  │
└─────────────────────────────────────────────┘

Note

关于跚进皋通信 (IPC) 的讟计决策 目标 App 进皋圚沙盒内运行时由于 Android 11+ 包可见性及 SELinux 策略若䜿甚 ContentProvider 䌚富臎䞻线皋卡顿并产生 Failed to find provider info 错误。 宿䞻 App 借助 Root 权限将配眮以 JSON 栌匏写入 /data/local/tmp/locationspoofer_config.json并赋予 777 权限及 shell_data_file SELinux 䞊䞋文。 目标沙盒内的 LocationHooker 启劚䞀䞪后台守技线皋每 1000ms 匂步读取文件并存傚圚 Volatile 内存䞭。䞻线皋的 Hook 方法读取配眮时氞远是 0-IO 延迟圻底杜绝了因频繁读取配眮富臎的目标 App 界面䞢垧䞎卡顿。


📋 环境芁求

  • 系统版本Android 8.0 (API 26) 及以䞊
  • Root 管理噚已获取 Root 权限区烈掚荐䜿甚 KernelSU / APatch亊支持 Magisk。
  • Xposed 框架已安装并激掻 LSPosed或蟃新版本的 LSPosed 支线版本。

🚀 快速匀始

1. 猖译䞎安装

# 克隆本仓库到本地
git clone https://github.com/your-username/LocationSpoofer.git

# 猖译 Debug 版本并盎接安装至讟倇
./gradlew installDebug

2. 权限䞎激掻步骀

  1. 打匀 KernelSU / Magisk / APatch 管理噚授予 LocationSpoofer Root 权限甚于圚 /data/local/tmp 写入共享配眮 JSON 文件。
  2. 打匀 LSPosed 管理噚扟到 LocationSpoofer 暡块将其募选启甚。
  3. 圚暡块的䜜甚域Scope䞭募选需芁进行定䜍䌪装的目标应甚劂埮信、钉钉、超星孊习通等。
  4. 区行停止募选的目标 App或重启手机以䜿其加蜜 Xposed 挂钩逻蟑。

3. 䜿甚场景最䜳实践

💻 定点环境欺骗

  1. 启劚 LocationSpoofer圚䞻页地囟䞭长按或利甚搜玢栏搜寻指定地点。
  2. 圚䞋方抜屉䞭选择匀启需芁䌪装的项目䌪造 Wi-Fi 数据、暡拟基站数据、暡拟蓝牙数据、匀启蜻埮抖劚。
  3. 点击“启劚暡拟”即可接管系统 GPS。

🚗 高仿真路线埀返暡拟

  1. 点击䞻页䞋方的“路线规划”进入选点阶段圚地囟䞊䟝次点击标记倚䞪路点。
  2. 讟定控制暡匏䞺“埪环自劚”并选择䜠的移劚档䜍步行、跑步、骑行、驟驶或自定义速床倌。
  3. 启甚“䜿甚真实路线规划”圚联眑情况䞋系统䌚自劚拉取高執/谷歌路眑进行粟准曲线拟合并配眮红绿灯停留等埅。
  4. 点击“保存路线”以䟿于䞋次盎接从“路线库”䞭䞀键加蜜。
  5. 点击“匀始暡拟”歀时可随时启劚悬浮窗䜿甚“手劚摇杆”通过悬浮窗摇杆圚前台操控实时前行或后退。

🕵‍♂ 无线电信号采集实地扫街

  1. 圚物理䞖界䞭掻劚前进入 LocationSpoofer “讟眮” -> 匀启 “环境囟谱䞎扫街” 采集暡匏。
  2. 歀时暡块䌚自劚圚后台静默扫描并保存圓前䜍眮对应的 Wi-Fi/基站/蓝牙特埁到本地 Room 数据库。
  3. 采集完成后可以随时圚“管理本地采集数据”䞭猖蟑采集点倇泚、剔陀无效数据或者以 JSON 文件栌匏富出 倇仜、共享给他人富入。
  4. 䞋次圓䜠圚虚拟定䜍䞭选择暡拟该经纬床时系统将通过 IDW 插倌算法 完矎重现采集到的物理信号场。

📍 解决特定 App 定䜍偏移

  • 劂果䜠发现埮信、孊习通等应甚定䜍产生了几癟米的固定挂移
    • 进入 LocationSpoofer “讟眮” -> 点击 “配眮应甚坐标系”。
    • 点击“添加应甚包名”扟到产生偏移的目标 App。
    • 将其底层的坐标标准修改䞺 WGS-84 (原生 GPS 坐标) 或 BD-09 (癟床地囟坐标)系统将圚 Hook 层自劚蜬换地囟即可完矎重合。

🛠 技术栈䞎䟝赖库

  • 匀发语蚀100% Kotlin
  • 界面框架Jetpack Compose & Material Design 3
  • 䟝赖泚入Koin
  • 底层数据库Room Database (SQLite)
  • 眑络请求OkHttp 3 & Kotlinx Serialization
  • 地囟组件AMap 3DMap SDK (䞭囜倧陆讟倇) / Google Maps & Places SDK (海倖讟倇)
  • Xposed 框架LSPosed API 93 / libxposed (service 暡匏)

⚠ 免莣声明

本皋序仅䟛孊习研究、技术亀流以及䞪人合法合规测试劂匀发者定䜍测试、讟倇兌容性调试䜿甚。 䜿甚者请勿将本工具甚于任䜕违法违规或违反盞关平台服务协议的掻劚包括䜆䞍限于虚假打卡、眑络考试䜜匊、商䞚欺诈等。 䜿甚本暡块造成的任䜕莊号封犁、数据䞢倱、法埋纠纷或其他盎接/闎接损倱均由䜿甚者自行承担䜜者䞍对歀承担任䜕莣任。


📜 匀源协议

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

Copyright (C) 2026 SuseOAA

About

LocationWarlock Android location environment simulation tool

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages