主页 > 新闻中心

iOS 虚造定位路理雷竞技APP与防御

小编 2024-05-09

  说到虚拟定位,常有印象都是安卓上的分身软件乃至体系自带的地点穿越(笔者已经运用过 ZUK Z2 体系自带的地点穿越),会以为 iOS 上虚拟定位较量艰苦。笔者没调研之前也是这么以为,之前已知的虚拟定位是运用 Xcode 增加 GPX 文献,编纂经纬度,从而实行虚拟定位。不过这种操作也惟有谙习 iOS 开拓的人本领操作,并且须要 mac 电脑,故而笔者印象中也是 iOS 上虚拟定位较量艰苦。

  然而原委调研之后,笔者创造,iOS 的虚拟定位没有那么艰苦,乃至比拟于安卓更简陋。下面就来先容一下 iOS 中几种虚拟定位的手腕。

  运用 Xcode 通过 GPX 文献虚拟定位,iOS 开拓通常较量谙习,操作步调是:

  谨慎:大凡处境下,运用 Xcode 运转虚拟定位,运转停留后,经纬度会还原成向来的。不过当运转了项目,然后直接拔掉数据线(是运转状况下拔掉),手机的经纬度就会向来是模仿的经纬度,思要还原须要重启手机或者守候 2~5 天自愿还原。

  这个手腕最是简陋,笔者之前不分明有这种手腕,下载一个爱思帮手,翻开,相接办机到电脑,抉择器械箱tab 下的虚拟定位

  谨慎:这种虚拟定位的手腕,真的是简陋。就目前而言,笔者考试后创造钉钉、企业微信外接设备,均没有对此类手腕检测照料。

  通过表接配置,发送虚拟定位这个手腕笔者之前十足都没领会到,不得不说,线,公民聪颖无尽壮大,此中代表是位移精灵。笔者没有添置表设,以是也没想法考试,不过可能附上一个视频,供大多参考:

  道理:通过 MFi(Made For iOS)认证厂商,可能得到 MFI Accessory Interface Specification 文档,此中供给了许多窜伏效用,包罗时辰通信、音笑数据通信、定位效用等等。此中定位效用的运用只须要照着文档,根据订定方式发送对应地点数据,即可。

  越狱配置虚拟定位,是越狱之后使器材备虚拟定位效用的越狱插件。正在天主形式下,越狱插件可能恣意挟造体系函数。譬喻:GPS 定位管家,不妨治理每个 iOS 利用的 GPS 地点。

  道理:越狱后,通过注入库,hook 了 CLLocationManager 中的定位署理手腕,从而窜改平常定位音信。

  举动开拓,分知道有哪些虚拟定位的,还不敷,还须要分明奈何这些虚拟定位的手腕奈何治理。特别是 OA 利用和游戏利用的开拓,须要格表谨慎。下面就来一步步看下:

  运用 Xcode 通过 GPX 虚拟定位和运用爱思帮手虚拟定位的,其最终的道理是雷同的,都是通过移用 com.apple.simulatelocation 供职,从而实行虚拟定位外接设备。

  定位的精度:虚拟定位的经纬度的精度不如可靠定位的精度高,以是可能通过定位经纬度的精度来决断

  定位的海拔值和海拔精度:虚拟定位的海拔值为 0,海拔笔直精度为-1;以是可能通过这两个值来决断

  定位回调移用次数:虚拟定位的回调只会移用一次,而可靠定位的会多次触发;以是可能通过触发次数来决断

  函数响当令间:虚拟定位的反响是立马返回,而可靠的不会;以是可能通过响当令间决断

  上面是笔者总结的网上给出的检测计划,下面来实验,看本相是否如上所描绘,下面笔者采用的是运用爱思帮手虚拟经纬度的手腕来模仿。**激烈谨慎:**运用第三方舆图的定位和体系定位回对下面临手腕也有影响!!!笔者这里吃了很大的亏,好家伙。

  1.定位的精度 获取经纬度的精度,不行运用%f来直接方式化,由于方式化字符串默认“%f”,默认保存到幼数点后第 6 位,对照不出来分别。代码如下:

  运用爱思帮手搜罗虹桥火车站地铁站,自愿定位到经纬度是 6 位,输入框中最多可输入幼数点后 8 位,开启虚拟定位后,结果如下:

  笔者这里测试了良久,因为幼数精度的题目,笔者换了好几种格式,最终结论是运用此手腕无法决断。固然爱思帮手设立的经纬度有个数节造,不过最终定位出来的经纬度和定位出来的并不沟通,且因为幼数精度题目,无法凿凿决断。故而此手腕行欠亨。

  从上面可能看出,平常定位和模仿定位的海拔和海拔笔直精度是差其余,故而可能用来辨别。不过线 的地方会不会被误杀,须要纳入酌量,待测试验证。

  3.定位回调移用次数 笔者正在定位类中,声明一个回调次数的属性,正在移用入手下手定位的手腕中赋值为 0,回调得胜的手腕中每次都加 1,且打印出结果。大致代码如下:

  笔者这边测试出来的结果,运用第三方舆图定位时虚拟定位冷静常定位的回调次数没有区别,故而,运用第三方舆图定位时此手腕也行欠亨。运用体系定位时,虚拟定位冷静常定位的回调次数差别,故而表面上运用体系定位时可能用此手腕辨别;不过运用这个决断的凿凿度并不高,由于体系定位不常也会只回调一次,并且,如果运用回调来决断,怎么辨别回调遣散,是一个题目,譬喻笔者写了一个延时 0.5s 后,来查看回调次数;以是创议可能用作参考,不过不创议举动决断凭借

  4.函数响当令间 笔者正在定位类中,声明一个入手下手时辰的属性,正在入手下手移用定位的手腕移用外接设备,然后定位结果的回调里取到遣散时辰,末了得出的时辰差即是响当令间。代码大致如下:

  凭据笔者测试出的结果,定位的间隔收集好的工夫并没有昭着差异,无法用固定的值辨别,故而此手腕也行欠亨。

  参考 iOS 防黑产作假定位检测工夫,根据著作描绘,定位对象CLLocation中有一个私有属性type,正在差别定位出处的处境下,值是差其余。

  笔者验证步调如下:正在定位得胜的回调中,决断CLLocation的 type 属性。

  平常定位时,Wi-Fi 翻开时,结果为 4;Wi-Fi 紧闭时,结果为 6;结果如下:

  笔者这边对照结果如下:运用体系定位时,平常收集下虚拟定位冷静常定位结果差别,不过收集欠好时,定位出处类型都是 1,故而辨别不凿凿;运用第三方体系定位时,虚拟定位冷静常定位结果沟通,无法辨别外接设备。

  这种虚拟定位的笔者没有配置实验雷竞技APP,但通过网上的原料,可能看出表接配置是通过蓝牙和手机相接,故而笔者推想,也可能凭据CLLocation的私有属性_internal中的 type 来决断雷竞技APP。由于 type=3 的界说是蓝牙等表部配置模仿定位天生的定位数据,以是这种虚拟定位应当可能通过此 type 值辨别。

  这种手腕,笔者目前调研到的有两种,一种是直接针对越狱配置,决断出 iPhone 已越狱雷竞技APP,就提示,从而避免;别的一种是决断署理手腕是否被 hook,以及署理手腕被 hook 的实行是否正在 APP 中。

  1.决断常见越狱文献,保卫一份常见越狱文献,决断此中一个存正在,则申明已越狱

  3.凭据能否读取体系全面利用来决断,已越狱的配置可能读取,未越狱的配置不成能

  手腕二决断署理手腕是否被 hook,以及 hook 的实行是否正在 app 中,参考 iOS 上虚拟定位检测的探究

  笔者验证的结果,通过特质值中的海拔和海拔精度可能决断出运用爱思帮手或者 Xcode 模仿定位,通过 type 可能辨别差别定位出处。为了凿凿,笔者通过海拔、海拔精度、type 三个字段连结起来决断。

  口试官:说说 Git 中 fork,clone,branch 这三个观点,有什么区别?

  口试官:说说你对 git reset 和 git revert 的领悟?区别?

  为什么人力资源数据剖析落地难 人力资源数据剖析落地难不难?谜底是多种多样的。假使让我答复,我的谜底是iOS 虚造定位路理雷竞技APP与防御