设备的假位置(自定义)

时间:2010-05-21 20:55:38

标签: iphone cllocationmanager

我知道有一些应用可以伪造设备位置但具体我要做的是使用从网址抓取的位置。

我应该在设备上设置位置的方向。

我所拥有的场景是一个越狱的Wi-Fi iPad。 nexus将托管后台服务,当收到请求时,它将使用其当前位置的gps数据进行响应。越狱的ipad将有一个后台服务,可以通过向串联连接服务提交请求,在一个时间间隔或每个请求的基础上更新位置(取决于我必须如何实现它)。然后,该数据将在ipad上设置,请求位置的应用程序将获取服务数据。

目标是重新创建位置欺诈应用程序的功能,但欺骗位置来自nexus的gps通过服务,但我还没有找到如何设置的位置数据装置。我可以在每个应用程序的基础上实现这一点,但让任何应用程序都可以使用它会很棒。

3 个答案:

答案 0 :(得分:2)

Core Location存在重大隐私和个人安全问题。因此,即使是越狱设备,也很难破解或欺骗。据我所知,每次发出位置请求时都会计算位置(这就是它耗尽电池的原因。)没有可以轻松设置的文件或设置。

为了欺骗所有应用的位置,您必须修补Core Location调用的系统代码。该系统代码没有文档,因为它都是Apple专有的。您必须找到因某些原因而反向设计Apple代码的人。

您最好的选择是看是否有自定义进程运行管理位置,然后用您自己的一个替换整个进程,只返回欺骗位置。

无论如何,您基本上必须重新创建Core Location调用的整个界面,以确保每个应用程序中的每个Core Location调用都能正常工作。您正在API中查看大量低级C编码而没有文档。正确的可能性相当低。

答案 1 :(得分:1)

嗯,在iPhone上获取位置的方法是通过CLLocationManager。如果你想获得一个自定义位置,那么只需将其子类化并覆盖{em>不调用super的startUpdatingLocation方法,然后自己调用委托方法。类似的东西:

@interface CustomLocationManager : CLLocationManager {

}
@end

@implementation CustomLocationManager

- (void) startUpdatingLocation {
  [[self delegate] locationManager:self didUpdateToLocation:customLocation fromLocation:nil];
}

@end

然后你可以这样做:

CLLocationManager * manager = [[CustomLocationManager alloc] init];
[manager setDelegate:self];
[manager startUpdatingToLocation];

答案 2 :(得分:0)

挂钩到核心位置或使用定位缓存似乎是最好的方法。虽然我还没有实施任何东西。这是要走的路。