美文网首页
iOS判断虚拟定位

iOS判断虚拟定位

作者: Fendouzhe | 来源:发表于2024-08-11 14:07 被阅读0次

    虚拟定位对于自己app调试会非常有用。但是很多app开发商可能不希望自己的产品被虚拟定位给干扰了。安卓系统中,在Android7.0后,app开发商必须声明自己支持虚拟定位后,才能收到虚拟定位数据。苹果有没有做类似的功能呢?

    经过测试后,发现检测虚拟定位也是非常容易的事情。

    1. 如何检测注入app的修改方式:这种方式涉及到软件注入和防注入。本人对此技术了解不多,不在此展开。

    2. 如何检测xcode虚拟定位:xcode虚拟定位会使用gpx协议的文件,仅仅支持坐标,不支持海拔,海拔返回值是0,并且海拔精度返回值是固定的-1。 所以检测方式非常简单: 判断海拔和海拔精度是否是这两个固定值就好了。

    3. 如何检测通过iAP协议的外设定位:苹果在外设定位也做了一定的限制,首先海拔虽然能显示,但是精度只是在小数点后一位。另外,经纬度的精度也比较有限,大概仅仅是小数点后6、7位。但真实坐标的海拔精度应该是能到小数点后13-15位。所以检测方式也显得非常简单:通过判断这几个数值的精度就能确定定位是否来自外设了。

    另外在git上找到个现成的检测外设定位的库:https://gitee.com/coffee__li/iap2-location-checker (本人未测试,但看了下原理和我分析的是一致的)

            /**
             虽然第三方app可以修改位置,只是修改了经纬度,但是其他数据并没有修改,比如海拔垂直精度等数据,我们可以从这些参数入手
             NSLog(@"定位信息:%lf,%lf,%lf,%lf,%lf,%lf,%lf",location.coordinate.latitude,location.coordinate.longitude,location.horizontalAccuracy,location.verticalAccuracy,location.altitude,location.course,location.courseAccuracy,location.speed);
             
             Xcode:22.281960,114.163171,5.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000
             爱思助手:30.879535,120.934785,5.000000,-1.000000,0.000000,-1.000000,-1.000000,-1.000000
             */
            
            NSLog(@"定位信息:%lf,%lf,%lf,%lf,%lf,%lf,%lf",location.coordinate.latitude,location.coordinate.longitude,location.horizontalAccuracy,location.verticalAccuracy,location.altitude,location.course,location.speed);
            if (-1.0 == location.verticalAccuracy&&0.0 == location.altitude) {
                NSLog(@"虚拟定位");
            }
    

    参考文章

    苹果虚拟定位技术原理和检测
    IOS 越狱插件-虚拟定位、WIFI修改
    ios开发上班打卡防虚拟定位篡改
    iOS 外接设备虚拟GPS心得
    如何设置iOS虚拟定位
    未越狱iPhone修改定位/iPhone虚拟定位/iPhone模拟定位,苹果MFi外设
    iOS判断虚拟定位
    iOS 外接设备虚拟GPS以及防止心得

    相关文章

      网友评论

          本文标题:iOS判断虚拟定位

          本文链接:https://www.haomeiwen.com/subject/fyxrkjtx.html