对于移动设备(手机)实现虚拟定位的总结(以及破解Fakelocation)

众所周知,目前相当多的app依赖定位实现考勤功能或是运动管理,比如钉钉和步道乐跑。因此,虚拟定位同时也是一个巨大的市场,淘宝一搜就有很多卖解决方案的。由于这是一种“马上就到你家门口”的顶级开盒手段,故我一直对位置信息非常敏感。此次想要总结一下目前现有的定位手段和虚拟定位方式。


首先用尽可能白话文的方式讲解目前移动设备常用的定位手段。

1.GPS定位

最最基础的定位方式。通过获得读取手机GPS信号的权限来定位。这也是最精确的定位方式。

2.ip地址定位

很简单的基础定位方式。本身公网ip地址就有区域专用网络地址,可以定位到以市为单位的范围内。而现在大多是内网动态ip,可以通过运营商的isp日志确定接入点的办理人信息,但一般app是没这个能力的,故难以用于精确定位。

3.基站定位

在使用移动信号时,手机会自动搜索并连接目前最佳的基站。每一个基站都有一个唯一识别码,同时也有一个唯一GPS位置,这两个信息进行匹配就可建立数据库。通过读取手机此时的LAC和CID码就可以确定此时连接的基站,根据基站信号范围确定大致位置。运营商也可以通过手机IMEI唯一识别码确定连接基站的设备,更进一步可以通过三角定位原理检测三个不同基站的信号强度大致测算出位置(不过实际使用很少,因为信号强度的影响因素太多了)。
参考:https://www.opengps.cn/Data/Cell/Search.aspx

4.wifi定位

由于大部分wifi设备的硬件MAC地址是唯一的,可以通过保存连接此WiFi的用户GPS位置大致确定路由器所在位置,建立MAC–>GPS的映射数据库,其他连接此wifi的用户的位置也可以大致确定出来。和基站定位比较类似,但限制更多。由于苹果可以读取所有用户的GPS地址,所以可以获得最准确的数据库来辅助Airtag和查找手机之类的定位。


先分析一下上述定位的局限性。
安卓的GPS开关可以硬件上关闭GPS信号的获取。IP地址可以使用网络代理隐藏真实IP。基站可以通过飞行模式切断联系。wifi定位可以修改路由或者手机识别的MAC码来欺骗。
大多数app只使用GPS定位,少数比如钉钉用上了三种方式。


然后再说一下虚拟定位的发展过程。
目前的安卓手机系统中,只有联想的ZUI和360手机的系统自带了位置穿越功能,具体实现原理是:
安卓开发者项目中本身有一个虚拟定位调试开关,可以设定一个app导入虚拟的GPS数据即可,无需Root。这也是目前免Root修改位置的唯一方法。
这种修改定位的方式实现难度很低,只需遵守开发手册的规范开发一个app即可。不过ZUI和360手机都快作古了,所谓的“为发烧而生”的小米却至今没有任何动作。我本来怀疑是否是国家出台文件限制内置虚拟定位功能,可是并没有搜到有关文件。也许这是一个内部规定。
而目前的ios,不越狱肯定是无法修改定位数据的,但是苹果开发工具xcode允许连接电脑的设备使用虚拟地址进行调试,因此有人写了一个程序实现苹果设备连接电脑来虚拟定位,后来爱思助手打包了该程序放入爱思的win和mac端里面。但是以此方法修改后海拔将会保持在0,且定位精度为小数点后4位,正常定位精度为小数点后8位,极其容易被反检测。
就功能丰富度而言,ios是全局位置修改,而ZUI和360可以分应用修改。ios可以模拟按照某个路径移动,但ZUI和360不行。ZUI可以用遥感调整模拟位置,但360只能固定到某个点。另外,ZUI和360都对微信小程序不起作用。
其余还有一大批水平参差不齐的虚拟定位APP,此处就不谈了。
非root最大的问题在于非常容易检测到异常。应用可以读取到虚拟定位开关是否打开,以及扫描包名确定用户是否安装黑名单内的app。同时,也可以通过其他定位手段察觉异常。

如果你的设备不打算root,推荐使用 GPS JoyStick,支持模拟路径,有广告。

但是在root之后,就出现了宛如救世主一般的app:大名鼎鼎的Fake Location。
fake location可以说是针对目前所有的反检测手段针对性反反检测。
在root情况下,可以修改连接基站的序号,修改连接wifi的Mac地址来实现无懈可击,同时可以通过隐藏root,修改包名来实现绕过黑名单。在功能上可以全局修改和分应用修改,路径模拟还可以自己设定步频,各个方面可以说都是完美的——除了收费。
一个月9元,包年一个月6元,带账号系统,无法买断,对于一个工具类app来说实在无法接受。
更无法接受的是最近的跑路状态。从2月到3月大约2个月时间内服务器无法访问,并且没有任何通知。好在最近(一周前)恢复正常,但是长久没有更新,且由于怕事对部分应用故意失效。鉴于之前有很多app也是这样跑路的,所以有点不值得信任。
好在NFG Multi crack这个破解内购的模块增加了对于fack location的支持:
https://github.com/rockz5555/NFG-Multi-Crack
只需安装此xposed模块即可。
已知问题:
首次使用此模块下载配置需要代理。
fack location依然需要登录账号才能破解。
此破解无法使用基站定位。


部分xposed模块也可以修改定位,但是太过简陋(只能手动输入经纬度),故不介绍。
由于特殊性,虚拟定位在半虚拟的root环境中(比如太极,virtualxposed)多半会失效,如果不想要root,可以考虑在完全虚拟环境中操作。(比如VMOS,虚拟精灵,但此类应用在安卓12中无法使用)


最后来一份网图:

小米国家监控中心.jpg

现在全民监控已是大势不可逆了。