0

我知道有一些应用程序可以伪造设备位置,但具体来说,我想要做的是使用从 url 获取的位置。

我应该寻找什么方向来设置设备上的位置。

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

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

4

3 回答 3

2

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

为了欺骗所有应用程序的位置,您必须修补 Core Location 调用的系统代码。该系统代码的文档为零,因为它都是 Apple 专有的。由于某种原因,您必须找到对 Apple 代码进行逆向工程的人。

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

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

于 2010-07-01T19:22:36.777 回答
1

好吧,在 iPhone 上获取位置的方法是通过CLLocationManager. 如果要获取自定义位置,则只需将其子类化并覆盖该startUpdatingLocation方法以调用 super,然后自己调用委托方法即可。就像是:

@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];
于 2010-05-21T21:10:57.007 回答
0

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

于 2011-07-15T20:44:26.473 回答