经纬度伪装与随机偏移
能伪装什么
Guise 修改目标应用通过 Android Location 对象读取到的三类坐标:
- GPS 定位 — 卫星定位的经纬度
- 网络定位 — Wi-Fi / 基站推断的经纬度
- 融合定位 — 以上两者融合后的结果
两种模式
| 模式 | 效果 | 场景 |
|---|---|---|
| 固定坐标 | 始终返回你配置的经纬度 | 模拟特定城市 |
| 随机偏移 | 在你配置的中心坐标周围随机偏移 | 更真实,避免坐标固定 |
随机偏移在一键随机时自动开启,范围全球有效(纬度 -90~90,经度 -180~180)。
覆盖范围
会被伪装的
Location.getLatitude()/getLongitude()— 最直接的读取Location.getLastKnownLocation()— 上次已知位置LocationManager.getProvider()相关回调- 应用通过 Android 标准位置 API 读到的所有经纬度
不受影响的
- IP 定位 — 这是网络服务端推断的,客户端 Hook 覆盖不到
- 卫星状态 — Guise 不伪造卫星可见数、信噪比等状态信息
- NMEA 数据 — 不伪造底层 NMEA 字符串
- 额外触发定位监听器 — Guise 不主动伪造回调
厂商私有接口
部分厂商 ROM 有私有位置查询接口(如小米、华为的私有 Location 扩展),这些不受通用 Android API Hook 影响,可能绕开伪装。
和「隐藏定位信息」的关系
Guise 有两组独立的定位开关:
| 开关 | 作用 |
|---|---|
| 经纬度伪装 | 给应用看假的坐标值 |
| 隐藏 Wi-Fi 定位信息 | 让应用看不到 Wi-Fi 热点信息 |
| 隐藏基站定位信息 | 让应用看不到基站信息 |
两组互不排斥,你可以只开经纬度伪装,也可以全开。隐藏定位信息的开关优先于自定义 SSID/BSSID/MAC 和 LAC/CID。
为什么不伪装 IP
IP 定位的本质是应用发请求到服务器 → 服务器根据来源 IP 判断位置。客户端侧 Hook 只能控制应用自己不读网络位置 API,但服务器拿到的还是真实 IP。要改变 IP 定位需要 VPN 或代理,这不在 Guise 的范围内。