小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

小議安卓定位偽造-實(shí)戰(zhàn)足不出戶暢玩pokemon go瘦蛟舞

 新華書店好書榜 2016-07-16

本文旨在技術(shù)探討故本文不提供工具,正常玩家請(qǐng)勿模仿,游戲中虛擬位置有封號(hào)風(fēng)險(xiǎn)

0x00 安卓定位方式歸類


要偽造定位首先要摸清定位到底是如何實(shí)現(xiàn)的,首先從廣義上來區(qū)分安卓的定位方式實(shí)際上就gps和network兩種。但是network網(wǎng)絡(luò)定位過于抽象,到底是移動(dòng)網(wǎng)絡(luò)基站定位,還是寬帶ip定位還是wifi定位了,于是我又做了如下細(xì)分。

細(xì)分定位方式如下:

  1. GPS定位:通過衛(wèi)星定位,精度高耗電也高定位速度慢。但是需要搜索到三顆星以上才可以定位,室內(nèi)的大多無法使用。
  2. 網(wǎng)絡(luò)定位:多指wifi/寬帶ip定位,其實(shí)也包括移動(dòng)網(wǎng)絡(luò)也就是第三點(diǎn)。
  3. 基站定位:通過運(yùn)營商的基站三角定位,定位精度低功耗低。
  4. 混合定位:結(jié)合上面多種方式,AGPS定位。

  5. 第三方SDK: 百度地圖/高德地圖/谷歌地圖,本質(zhì)上還是使用上面4種方式。

通常位置信息權(quán)重排序 :gps > wifi > 基站 ,實(shí)際上還和信號(hào)強(qiáng)度,以及軟件算法等多種因素有關(guān)。

功耗排序 : gps > 基站 > wifi

0x01位置欺騙可行方案


針對(duì)上述定位方式可以假想如下方案進(jìn)行欺騙。

1.硬件放射gps信號(hào)欺騙。 成本較高,需要諸如hackrf這樣的硬件設(shè)備。我工位在窗戶邊真實(shí)gps信號(hào)十分強(qiáng),所以我偽造的信號(hào)就相對(duì)弱了導(dǎo)致整個(gè)方案成功率變低。具體操作可以參考下文。

http://drops./tips/10580

2.android位置模擬。這種方式需要打開gps定位并且進(jìn)入開發(fā)者模式開啟位置模擬,這個(gè)方案較易操作。但是很多app對(duì)這種行為作了檢測(cè),例如pokemon go在檢測(cè)到位置模擬后便會(huì)提示Failed to detect location

3.hook系統(tǒng)調(diào)用,篡改location返回值,需要root權(quán)限。這個(gè)是我最終采用到方案。這個(gè)方案的優(yōu)點(diǎn)是比較穩(wěn)定,被檢測(cè)到異常的概率比較小。既可以正常人肉跑動(dòng)玩游戲,也可以偷懶利用pc上的插件點(diǎn)擊鼠標(biāo)滿地圖抓小精靈。

07-14 12:30:40.573    2657-3291/? D/pokemongoH﹕ location = -35.19044856,149.0560237
07-14 12:30:40.573    2657-3291/? D/pokemongoH﹕ getLatitude Result : -35.19044856
07-14 12:30:40.583    2657-3291/? D/pokemongoH﹕ getLongitude Result : 149.0560237

4.模擬器提供位置模擬功能,ARM模擬器運(yùn)行緩慢,x86模擬機(jī)雖然快但是兼容性差。命令行指定坐標(biāo) :

telnet localhost 5554 
geo fix <longitude value> <latitude value>```

這類操作因?yàn)樾枰谀M器中進(jìn)行,所以體驗(yàn)和兼容性要差很多。

5.篡改軟件上傳的ip/wifi信息,實(shí)際操作難度較大。

0x02分析pokemon go APP


  1. 在android平臺(tái)要玩此游戲需要 google play 框架,如果你手機(jī)是國行的肯定不會(huì)帶此框架,必須root后才能安裝。我所使用的nexus 5是自帶的。
  2. 既然要使用google play的服務(wù)那在gfw的保護(hù)就必須得自備梯子了,我選擇的是showsocks,vps在香港。
  3. 安裝app,https:///pok%C3%A9mon-go/com.nianticlabs.pokemongo.
  4. 任天堂是一直不太care國服的,這次迫于服務(wù)器宕機(jī)的壓力Pokemon go更是對(duì)大陸地區(qū)進(jìn)行鎖區(qū)操作。當(dāng)你千辛萬苦完成上述兩個(gè)步驟后進(jìn)行進(jìn)入游戲會(huì)發(fā)現(xiàn)地圖上沒有任何小精靈和補(bǔ)給站以及道館。所以這個(gè)時(shí)候就需要使用到本文講解的技術(shù)定位偽造了。

先觀察下網(wǎng)上公開的Pokemon go鎖區(qū)圖,從下圖可以看出東三省和新疆部分地區(qū)是不在鎖區(qū)范圍可以正常游戲的。為什么這樣,我個(gè)人猜測(cè)有這樣兩個(gè)原因

  1. 這個(gè)長(zhǎng)方形的鎖區(qū)范圍從開發(fā)角度易于實(shí)現(xiàn)
  2. 游戲運(yùn)營初期策略較為寬松寧放過不誤殺。

為了測(cè)試Pokemon Go的定位方式,我做了如下操作。

1.設(shè)置系統(tǒng)使用wlan和移動(dòng)網(wǎng)絡(luò)定位會(huì)提示 GPS signal not found,當(dāng)設(shè)置僅gps定位gps/wlan/移動(dòng)網(wǎng)絡(luò)確定位置的時(shí)候可以正常游戲

2.監(jiān)控 location provider

07-14 12:30:22.573    2657-2657/? D/pokemongoH﹕ HOOK IT
07-14 12:30:40.553    2657-3291/? D/pokemongoH﹕ location provider is : gps
07-14 12:30:40.563    2657-3291/? D/pokemongoH﹕ location provider is : network

3.逆向app,在逆向過程中未發(fā)現(xiàn)調(diào)用getCellLocation/getBSSID方法,但是發(fā)現(xiàn)其有調(diào)用getLastKnownLocation。下文會(huì)描述這些方法的用處。

結(jié)論:pokemon go采用混合定位其中g(shù)ps定位為主,network定位為輔且gps定位可以獨(dú)立工作network定位無法獨(dú)立工作。

0x03偽造gps插件開發(fā)


上文已經(jīng)簡(jiǎn)單分析了安卓定位的方式以及pokemon go采用的定位方案,在hook系統(tǒng)api前要先對(duì)這些api簡(jiǎn)單了解下。

需要關(guān)注的api:類以及方法如下

Class:
android.location.Location
Method:
public double getLatitude ()   //獲取緯度,北緯為正數(shù),南緯為負(fù)數(shù)。
public double getLongitude ()  //獲取經(jīng)度

Class:
android.location.LocationManager
Method:
public Location getLastLocation ()
public Location getLastKnownLocation (String provider)  //通過provider獲取location

Class:
android.telephony.TelephonyManager
Method:
public CellLocation getCellLocation ()  //通過GSM獲取location

android.net.wifi.WifiInfo
public String getBSSID ()  //獲取wifi的bssid

通過分析定位代碼和android api可以發(fā)現(xiàn)不管采用何種定位方式,歸根到底還是要從loaction中取出經(jīng)緯度,也就是你的位置信息。所以這個(gè)類中的getLatitude/getLongitude方法就是hook的關(guān)鍵點(diǎn)。

現(xiàn)在已知開服區(qū)域:美國/澳大利亞/英國/日本。我選擇將自己的坐標(biāo)偏移到澳大利亞的堪培拉。

其實(shí)網(wǎng)上很多偽造位置的軟件,但是網(wǎng)上的軟件有三處不足:

1.可能有后門或者廣告

2.可能出現(xiàn)開飛機(jī)的現(xiàn)象(游戲中短時(shí)間大范圍變化坐標(biāo))后被封號(hào)。

3.可diy性差。

如果坐標(biāo)寫死,那么游戲依然是不能正常玩的,所以我是做了個(gè)偏移,就相當(dāng)于另一個(gè)地方有個(gè)影子同步在動(dòng)一樣。偏移量通過一個(gè)文件來計(jì)算,文件寫入的是需要偏移到的地址,這樣也方便與pc上的adb交互。如果炎炎夏日不想離開空調(diào)又想抓小精靈就只能再做個(gè)pc端控制偏移的插件來。

電腦控制端控制插件四個(gè)按鈕.

addlon: longitude + 0.0005

sublon: longitude - 0.0005

addlat: latitude + 0.0005

sunlat: latitude - 0.0005

最后效果如下。PS:平時(shí)抓精靈多建議關(guān)掉AR,這樣更流暢抓的成功率高一些。

待開發(fā)功能:

  1. 多角度移動(dòng),如果有多點(diǎn)觸控其實(shí)沒必要。
  2. 自動(dòng)跑步,檢測(cè)到小精靈的時(shí)候停下 (自動(dòng)加減坐標(biāo),監(jiān)控到震動(dòng)即停止跑步)
  3. pc端地圖同步,人物坐標(biāo)同步。
  4. ...

0x04 問我ios怎么辦


如果是ios用戶看到這里已是十分不易,所以附送一個(gè)ios pokemon go類似玩法:

https://github.com/kahopoon/Pokemon-Go-Controller

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多