iOS逆向開發(6):微信僞造位置

仍然以微信爲例,實戰地練習一下使用Reveal、iOSOpenDev等工具注入APP的流程,積累經驗。這一系列的文章都是學習過程的總結,不帶任何商業目的。

本文解決一個問題:如何僞造一個經緯度,在微信的附近的人中,看到外國的朋友。

小白:我要瞬間移動到舊金山,看看黃師傅的寶芝林的同事們!

之前小程已經介紹了常規的注入流程,這裏只介紹一些差別的東西,以及具體的注入操作。

想要僞造位置,最好的辦法就是,找到獲取位置的函數,返回一個目標位置即可。

(1)獲取位置的函數

在定位這個函數時,可以從界面入手,通過Reveal找到相關界面的類,再借助classdump拿到的類信息,以及結合hook的輸出,就會慢慢接近目標。

比如,“附近的人”,所在的背景viewcontroller是這樣的:
附近的人所在的VC

小程直接給出這個目標函數:SeePeopleNearByLogicController::onRetrieveLocationOK。

但要知道,跟蹤的過程(甚至要反覆嘗試)是不可避免的,鎖定目標的耗時跟經驗與運氣有關。

(2)修改返回的位置

onRetrieveLocationOK返回的是一個CLLocation對象。CLLocation是iOS sdk的一個類,功能很強大,比如經緯度、高度、溫度、速度、距離等都可以獲取。

所以,alloc一個這樣的對象返回即可,比如這樣:

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

這裏的經度la,與緯度lo,就是我們要僞造的位置了,這個位置可以在地圖上找到。

小程給出一個從文件讀取位置並返回的示例:
僞造位置的示例代碼

然後,準備好這個文件,每次進入“附近的人”時,都會讀取文件拿到經緯度。所以,如果想換一個位置,那就改一下文件的內容就好(可以通過助手工具來修改),文件的內容只有一行,比如:23.2,113.3

(3)效果演示

假如僞造一個紐約的位置,這個位置是這樣的:
紐約的位置

更改位置後,重新進入附近的人,看到的效果是這樣的:
紐約附近的人1

拉到最下面:
紐約附近的人2

注意上圖倒數第二項,金斯縣,這個地方在哪裏?
金斯縣

所以,有理由相信,我們的確跑到紐約去了。

總結一下,這個例子使用了Reveal工具,經過反覆注入與輸出log定位到目標函數,然後進行修改達到目的。


:)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章