伪装任意app的位置信息 (微信/陌陌等通杀)内附彩蛋


#1

最近发现很火的一款微信的XX助手,能够实现在微信内部的地图中,选中任意一个位置把自己的坐标更改过去,觉得很神奇有没有,
今天我就带大家从头来实现这一个功能,并且可以应用在任意的APP中.


知己知彼方能百战百胜,首先我们要了解一下,APP是如何获取到位置信息的

要实现地图、导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作。Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图开发要配合定位框架使用。在Core Location中主要包含了定位、地理编码(包括反编码)功能。

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {    
    CLLocation *newLocation = locations[0];
    CLLocationCoordinate2D coordinate = newLocation.coordinate;    
    NSLog(@"旧的经度:%f,旧的纬度:%f",oldCoordinate.longitude,oldCoordinate.latitude);    
}

大概是这么实现的.

引用CoreLocation框架后,开始获取位置后,便会通过locationManager这个代理来回调,并通过
CLLocationCoordinate2D coordinate = newLocation.coordinate.
这句来获取到位置信息.
明白原理就简单了,接下来我们只需要在app内部hook到CLLocation的coordinate,并返回我们想要的地理位置就可以啦


代码其实很简单,主要是我们能明白实现原理.
明白了实现原理,剩下的工作就比较简单了,源代码如下:


%hook CLLocation
-(CLLocationCoordinate2D) coordinate{
  CLLocationCoordinate2D oldCoordinate = %orig;
  oldCoordinate.latitude = 40.1818750000;//新的latitude
  oldCoordinate.longitude = 116.5896720000;//新的longitude
  return oldCoordinate;
}
%end

打包注入任意一个app中,获取以下位置信息看看吧!


小彩蛋时间.
微信XX助手,号称全国任意定位加粉功能的免越狱实现过程

  1. 添加一条UITableCell
  2. 引用地图SDK
  3. 获取用户点击坐标的位置,保存
  4. 读取到模拟的位置并在coordinate返回.
  5. 重签名,打包

文章的最后引用张总一句话:

我重签名,重打包,做微信助手,但我知道,我妈死了 ------微信助手们

本文同步发布到我的微信公众平台,不得转载.

后续继续分享干货,欢迎关注我的公众平台


#2

直接这么搞很容易封号。

小朋友们还是too young too simple, sometimes naive

EDIT: 我不是说你,我是说黑灰产小朋友们:D


#4