代码之家  ›  专栏  ›  技术社区  ›  AtomRiot

设备的假位置(自定义)

  •  0
  • AtomRiot  · 技术社区  · 16 年前

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

    我应该朝哪个方向设置设备上的位置。

    我看到的场景是一个被越狱的Wi-Fi iPad与nexusone相连。nexusone将拥有一个后台服务,当接收到请求时,它将用其当前位置的gps数据进行响应。越狱后的ipad会有一个后台服务,它要么按时间间隔更新位置,要么按请求(取决于我必须如何实现它)向栓系nexusone服务提交请求。然后,这些数据将在ipad上设置,请求位置的应用程序将获得服务数据。

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

    3 回复  |  直到 16 年前
        1
  •  2
  •   TechZen    16 年前

    核心位置存在重大隐私和个人安全问题。因此,即使是越狱的设备也很难破解或欺骗。据我所知,位置是计算每次请求的位置(这就是为什么它耗尽电池。)没有文件或设置,可以很容易地设置。

    为了欺骗所有应用的位置,你必须修补核心位置调用的系统代码。该系统代码没有任何文档,因为它都是苹果专有的。你必须找到一个出于某种原因对苹果代码进行反向工程的人。

    您最好的办法是查看是否有一个自定义进程正在运行,该进程管理位置,然后将整个进程替换为您自己的进程,该进程只返回伪造的位置。

        2
  •  1
  •   Dave DeLong    16 年前

    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];
    
        3
  •  0
  •   AtomRiot    15 年前

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

    推荐文章