FakeLocation需Root后启用基站模拟才能防止被高敏感App识别伪造位置。默认仅模拟GPS,而基站信息(MCC/MNC/LAC/CID)仍为真实值,导致坐标与基站不匹配触发风控;须通过LSPosed Hook TelephonyManager接口,并同步配置GPS与基站模板,且关闭移动数据和WiFi以确保参数生效。

当你在使用FakeLocation模拟位置时,发现某些应用(如银行类、出行类App)仍能获取到真实基站信息,导致虚拟位置被识别为伪造——这说明GPS坐标虽已覆盖,但基站定位层未同步修改,系统底层仍在返回真实MCC/MNC/LAC/CID数据。
为什么基站定位会“穿帮”
Android系统中,位置服务由三类信号源共同参与:GPS卫星、WiFi热点、蜂窝基站。FakeLocation默认仅启用GPS模拟,而基站信息由TelephonyManager.getCellLocation()等API直接读取硬件模块,若未主动Hook该路径,应用仍可调用getBaseStationId()、getLac()等方法获取真实小区ID和位置区码,从而交叉验证GPS坐标的合理性。
这种基站与GPS坐标不匹配的情况,会被高敏感应用判定为“位置异常”,触发风控拦截或功能禁用。
启用基站信息模拟(必须Root)
第一步:确认设备已获取Root权限并安装LSPosed(EdXposed已停止维护,LSPosed为当前主流兼容框架)
第二步:打开FakeLocation → 点击右上角齿轮图标 → 进入【高级设置】→ 开启【基站模拟】开关
第三步:点击【基站模板】→ 选择【新建模板】→ 手动输入以下4项关键参数:【MCC(移动国家代码)、MNC(移动网络代码)、LAC(位置区码)、CID(小区ID)】
第四步:返回应用列表 → 长按目标App → 弹出菜单中勾选【启用基站模拟】→ 保存后重启该应用
注意:同一城市不同运营商的LAC/CID范围差异极大,盲目填写会导致信号强度异常(如显示-110dBm却标称“满格”),建议从真实设备日志中提取——可安装Logcat Reader,过滤关键词“CellLocation”抓取当前值。
一键导入真实基站数据(推荐)
方法一:使用ADB命令导出当前基站快照
连接电脑 → 打开命令行 → 输入 adb shell dumpsys telephony.registry | grep "mCellLocation" → 复制输出中的lac=xxx,cid=xxx,mcc=xxx,mnc=xxx字段
方法二:在FakeLocation内直接采集(仅限已开启【基站模拟】且Root成功后的版本)
进入【基站模板】→ 点击【采集当前】→ 自动读取并生成带时间戳的模板,命名格式为“北京_联通_20260623_1528”
这一步操作起来很简单,直接点击就能完成,无需手动计算十六进制CID或校验LAC有效性。
双模协同校验:让GPS与基站坐标逻辑自洽
① 在地图界面选定目标位置(例如:上海市静安区南京西路1266号)→ 记录其经纬度(31.224229,121.452523)
② 使用高德/百度地图网页版搜索该地址 → 查看周边基站分布图 → 找到覆盖该点的主流基站(如:上海联通 LAC=12345 CID=67890)
③ 将第①步经纬度填入GPS模板,第②步参数填入同名基站模板 → 返回App配置页,为同一应用同时绑定这两个模板
④ 启动模拟前,务必关闭手机「移动数据」和「WiFi」——【否则系统可能优先使用网络定位覆盖你刚设的基站参数】
此时应用请求位置时,FakeLocation会同时返回伪造的GPS坐标与匹配的基站ID,两套数据在地理距离、信号强度、运营商归属上完全一致,大幅降低被检测概率。