iOS開發:Pokemon Go試玩,未越獄的iPhone偽造GPS定位資訊

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

最近Pokemon Go 火的不行,結果人家伺服器扛不住了,只接受GPS定位資訊在澳洲的用戶端的登陸請求。今天自己搞了個小Demo,在未越獄的iPhone上把系統的GPS定位資訊給改了。

步驟:

Xcode8-beta上建立一個空白工程 -> Edit scheme -> Default Location 選澳洲 -> Device選真機裝置,Run


Paste_Image.png

現在,看看自己手機(我是iOS10系統):
1.:


Paste_Image.png


2.高德地圖:


Paste_Image.png


3.系統相機隨便拍個照,查看位置資訊


Paste_Image.png

4.尋找我的iPhone


Paste_Image.png

現在美中不足是,即使應用刪除,GPS定位資訊還是假的,需要刪除應用重啟手機,才能恢複正常GPS。Demo我放在了Github上https://github.com/sueLan/RYFakeGPS。
用免費開發人員帳號也可以在真機上調試http://www.jianshu.com/p/540e722b8eff

早有Fake GPS這種提供虛擬定位資訊的應用。勞資以前沒有研究過.也有人逆向微博,在運行時修改定位信. 但這些方法的前提是你有個越獄裝置。Quora上早也有討論過,如何未越獄裝置上如何修改GPS定位資訊.各路神招:重載CLLocationManager方法、安裝GPS中繼器假冒GPS訊號、裝置代理程式、iOS模擬器Debug模式的Location類比......

GPS定位原理

我們先來看一個部落格,iOS定位原理.我抄了一段:

GPS定位原理:    這個是美國軍方搞的, 軍民兩用, 但仍然完全受軍方控制(比如可以隨時隨地設定某個地區收到的訊號與否及其精度), 其原理就是:利用天上的衛星(共24顆)不斷地廣播訊號, 地面的GPS接收裝置收到訊號後, 通過分析多個衛星訊號,就可以計算出地球座標, GPS保證全球任何一個地方(98%)都可以同時收到至少4個衛星的訊號, 從而可以準確確定您的經緯度以及海拔位置. GPS定位精度可達10米以內, 不過這是美國軍方控制的, 戰爭時期可能變的不穩定或者誤判. (不過我國也有自己的系統, 北鬥系統, 目前已經亞洲的覆蓋, 還在推廣中)衛星定位必須要能收到衛星訊號,因為衛星訊號都是很微弱的,雖然iPhone 4開始提升了GPS硬體的靈敏度,但仍然需要在窗戶旁,或者戶外使用,才能確保衛星訊號的強度和穩定性。與基站定位和WIFI定位相比,GPS耗電最大,速度最慢,但是精度最高。而iPhone的GPS與純粹的GPS定位不同, 稱為A-GPS, 即輔助GPS.(比GPS更優,不過GPS也分晶片和效能的,不是說所有的AGPS比所有的GPS都好)因為GPS定位中最耗時、最耗電的就是擷取當前天上的衛星資訊,哪些衛星可見、在什麼位置、時鐘是多少等等,這個過程可能花費數十秒甚至幾分鐘,而AGPS就是利用網路,首先將基站定位或者WIFI定位獲得的大概位置發到遠程伺服器,有伺服器進行查詢和計算,得出這個位置下當前衛星資訊,反饋給iOS裝置,iOS裝置就可以直接用這些資訊來接受衛星訊號,不用自己去掃描分析了。這樣可以極大提高定位速度,將初次定位時間縮短到1~2秒完成。A-GPS優點是定位快,缺點是需要網路,但也只是在初次定位時需要網路,因為一旦衛星資訊返回,在有限時間和範圍內,這些資訊無須改變,之後的GPS定位就不再需要連網,都是直接用這些衛星參數接受資訊了。在iOS裝置上,上述定位方式會綜合應用,一般地,可能先按照最快的“無網基站定位”返回一個位置,當有網路連接時,在用有網基站定點更新位置,然後,利用AGPS上網查詢衛星星圖,最後,在能收到GPS訊號的情況下,轉為使用GPS定位。根據當前訊號情況和網路環境,iOS可能在上述方式之間反覆迭代,不一定一致特定步驟或者方式,而且隨著iOS升級,定位順序和規則可能改變。

GPX FILES

GPX(GPS eXchange Format,GPS交換格式)是一個XML格式,為應用軟體設計的通用GPS資料格式。它可以用來描述路點、軌跡、路程。它用來儲存位置,海拔和時間。


Paste_Image.png

Xcode也是用GPX 檔案來儲存位置資訊.所以,我們還可以自訂一個GPX檔案,類比任意的位置資訊。


Paste_Image.png

https://blackpixel.com/writing/2013/05/simulating-locations-with-xcode.html
https://github.com/whilethis/location-simulation

大多數App取定位資訊的時候,都是調用用系統的Core Location API ,CLLocationManager.


Paste_Image.png

然而在此所有app調用定位服務後,擷取到的都是我在FakeGPS工程中選的Default Location的定位資訊。Why ? 有人說是bughttp://stackoverflow.com/questions/14285453/xcode-default-simulated-location


Paste_Image.png

各種聯想中...



文/藍新(簡書作者)
原文連結:http://www.jianshu.com/p/6b1a2bf25c4c

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.