以微信为例,实战练习一下使用Reveal、iOSOpenDev等工具注入APP的流程,积累经验。特别说明,文章内容仅供学习交流。

本文解决一个问题:如何伪造一个经纬度,在微信的附近的人中,看到外国的朋友。

想要伪造位置,最好的办法就是,找到获取位置的函数,返回一个目标位置即可。

(1)获取位置的函数

在定位这个函数时,可以从界面入手,通过Reveal找到相关界面的类,再借助classdump拿到的类信息,以及结合hook的输出,就会慢慢接近目标。

比如,“附近的人”,所在的背景viewcontroller是这样的:

ios国外地址生成器(微信伪造位置在附近的人中看到外国朋友)(1)

直接给出这个目标函数:SeePeopleNearBylogicController::onRetrieveLocationOK。

但要知道,跟踪的过程(甚至要反复尝试)是不可避免的,锁定目标的耗时跟经验与运气有关。

(2)修改返回的位置

onRetrieveLocationOK返回的是一个CLLocation对象。CLLocation是iOS sdk的一个类,功能很强大,比如经纬度、高度、温度、速度、距离等都可以获取。

所以,alloc一个这样的对象返回即可,比如这样:

mylocation = [[CLLocation alloc]initWithLatitude:la longitude:lo];

return mylocation;

这里的经度la,与纬度lo,就是我们要伪造的位置了,这个位置可以在地图上找到。

给出一个从文件读取位置并返回的示例:

ios国外地址生成器(微信伪造位置在附近的人中看到外国朋友)(2)

然后,准备好这个文件,每次进入“附近的人”时,都会读取文件拿到经纬度。所以,如果想换一个位置,那就改一下文件的内容就好(可以通过助手工具来修改),文件的内容只有一行,比如:23.2,113.3

(3)效果演示

假如伪造一个纽约的位置,这个位置是这样的:

ios国外地址生成器(微信伪造位置在附近的人中看到外国朋友)(3)

更改位置后,重新进入附近的人,看到的效果是这样的:

ios国外地址生成器(微信伪造位置在附近的人中看到外国朋友)(4)

拉到最下面:

ios国外地址生成器(微信伪造位置在附近的人中看到外国朋友)(5)

注意上图倒数第二项,金斯县,这个地方在哪里?

ios国外地址生成器(微信伪造位置在附近的人中看到外国朋友)(6)

所以,有理由相信,我们的确跑到纽约去了。

总结一下,这个例子使用了Reveal工具,经过反复注入与输出log定位到目标函数,然后进行修改达到目的。

,