【旅行摄影大赛 顶尖】虚拟位置定位王破解版下载(虚拟精灵定位破解版)万万没想到

通过苹果 MFi 认证厂商会获得 MFI Accessory Interface Specification 文档,虚拟下载虚拟想其中描述了 USB 与外设之

虚拟位置定位王破解版下载(虚拟精灵定位破解版)万万没想到

 

Author: GeneBlueBlog: https://geneblue.github.io/什么是位置王破万没虚拟定位简而言之,利用软硬件更改手机系统的定位定位定位数据,从而让目标 app 获取错误的解版精灵定位信息虚拟定位常用场景

上下班打卡代购朋友圈装逼打车软件司机端抢单社交类软件,附近人,破解把妹,版万旅行摄影大赛 顶尖钓凯子凡是虚拟下载虚拟想和位置相关的应用,均有一定的位置王破万没应用场景,尽情发挥群众的定位定位才智虚拟定位原理经过调研 iOS 虚拟定位大概有三类技术路线:动态库注入

iOS 越狱后,安装使用具备虚拟定位功能的解版精灵越狱插件在上帝模式下,越狱插件可以肆意劫持系统函数或者在非越狱环境下,破解砸壳目标 app ipa 文件,版万重打包注入动态库这两种方式本质是虚拟下载虚拟想一致的,都是位置王破万没为了 app 进程运行时,注入运行动态库。定位定位

劫持 CoreLocation 中以下常用的获取定位信息的函数,即可篡改正常的定位数据:CLLocationManager->delegate() CLLocationManager->initialize

() CLLocationManager->setDelegate() CLLocationManager->startMonitoringSignificantLocationChanges() CLLocationManager-

>startUpdatingHeading() CLLocationManager->startUpdatingLocation() CLLocationManager->stopMonitoringSignificantLocationChanges

() CLLocationManager->stopUpdatingHeading() CLLocationManager->stopUpdatingLocation() 电脑端软件做过 iOS 开发的同学,可以观察一下 xcode 上有一个

Simulate location 的调试功能,这是面试技巧指导手册 精彩绝伦方便 app 开发过程中测试定位代码。

我们可以使用这个功能来模拟定位不过使用这种方式需要打开电脑,开启 xcode,然后再编写 GPX 文件,对于普通用户,这个门槛太高了国内的一些 iOS 助手类软件,将 Simulate location。

功能逆向出来,集成到自己的软件上,比如下面这个 iTools 软件:

闪电口外设典型产品如位移精灵,不但具备虚拟定位能力,还具备充电宝功能,多种用途,很方便啊,有木有。

那这个东西是啥原理呢?解释起来很简单,这也是苹果提供的功能,不是啥黑科技通过苹果 MFi(Made For iOS) 认证厂商会获得 MFI Accessory Interface Specification。

文档,其中描述了 USB 与外设之间的通讯协议 iAP2,该协议具备许多丰富的功能:

可以看到其中就有 location 定位功能,按照协议格式,发送对应位置数据,就可以更改定位信息电脑端 xcode 是不是也是使用 iAP2 协议呢?xcode 实现文档没有公开过,所以这个是未知的检测方法

知道了,这三种虚拟定位方式,我们只要找到正常定位与虚拟定位之间的差异就可以做到检测了动态库注入有几个明显特征:越狱环境,安装越狱插件,其动态库会被注入到目标进程非越狱环境下,砸壳目标ipa,注入动态库劫持(HOOK)定位函数

越狱环境可以检查设备是否越狱,非越狱可以检查 app 是否被重打包如此,检查定位函数是否被劫持比较关键函数 HOOK 涉及 OC 语言的动态特性,主要利用了 method_exchangeImplementations()。

将函数实现替换掉被 HOOK 的函数,其 IMP 实现会被劫持到注入的动态库中,所以我们检查函数 IMP 实现是否是原始 module 即可判断是否被 HOOK 了- (NSString *) getMethodIMPInfo:(。

NSString *) className, sel:(NSString *)sel { NSString *ret; Dl_info info; IMP imp = class_getMethodImplementation(objc_getClass([className UTF8String]), sel_registerName([sel UTF8String]));

if ( dladdr(imp, &info)) { ret = [NSString stringWithFormat:@"%@-%@-fname:%s-sname:%s-fbase:%p-saddr:%p"

, className, sel, info.dli_fname, info.dli_sname, info.dli_fbase, info.dli_saddr]; }

return ret; } NSString *ret = getMethodIMPInfo(@"CLLocationManager", @"delegate"); 电脑端软件使用电脑端软件虚拟定位时,app 获取定位信息与正常获取定位信息有差异。

正常获取定位的时代理方法会被执行 3 次:2020-09-25 14:37:25.587317+0800iOSApp[990:275020] 纬度为:22.996662, 经度为:113.328448 2020

-09-25 14:38:00.158517+0800iOSApp[990:275020] 高度为:23.031912 2020-09-25 14:38:04.869490+0800iOSApp[990:275020]

水平精确度:65.000000, 垂直精确度:10.000000 2020-09-25 14:38:22.238887+0800iOSApp[990:275020] 纬度为:22.996662, 经度为:113

.328448 2020-09-25 14:38:23.784470+0800iOSApp[990:275020] 高度为:23.031912 2020-09-25 14:38:25.844754+0800

iOSApp[990:275020] 水平精确度:65.000000, 垂直精确度:10.000000 2020-09-25 14:38:26.841710+0800iOSApp[990:275020]

纬度为:22.996667, 经度为:113.328447 2020-09-25 14:38:26.842180+0800iOSApp[990:275020] 高度为:23.047693 2020-09-25

14:38:26.842767+0800iOSApp[990:275020] 水平精确度:65.000000, 垂直精确度:10.000000使用xcode虚拟定位的 location 代理方法仅执行一次:

2020-09-25 07:41:57.466217+0100iOSApp[1005:276293] 纬度为:51.509980, 经度为:-0.133700 2020-09-25 07:41:57.466404+0100

iOSApp[1005:276293] 高度为:0.000000 2020-09-25 07:41:57.466511+0100iOSApp[1005:276293] 水平精确度:5.000000, 垂直精确度:

-1.000000多次实验后,发现以下特征:正常获取定位信息时, locationManager 代理方法会被回调 3 次,而虚拟定位,代理方法仅会被回调 1 次;正常定位可以获取海拔高度,水平精确度,垂直精确度,虚拟定位时,无法获取海拔高度,水平精确度,垂直精确度也是固定的错误值。

以上两点可以作为检查依据闪电口外设没有购买位移精灵,没有做测试,不过在 gayhub 上发现一份检查 iap2 外设定位的代码 iap2-location-checker其主要思路也是检查定位数据的精度。

还有一种思路是检查外设类型,获取外设的硬件信息,如 mac,manufacturer,brand 之类的信息,不过在高版本 iOS 中,需要额外申请权限,这里就没有实践了参考苹果虚拟定位技术原理和检测iOS上虚拟定位检测的探究

免越狱虚拟定位外挂的调试小记与检测方案Author: GeneBlueBlog: https://geneblue.github.io/

免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真切合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186