乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      小議安卓定位偽造-實(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)營(yíng)商的基站三角定位,定位精度低功耗低。
      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ī)是國(guó)行的肯定不會(huì)帶此框架,必須root后才能安裝。我所使用的nexus 5是自帶的。
      2. 既然要使用google play的服務(wù)那在gfw的保護(hù)就必須得自備梯子了,我選擇的是showsocks,vps在香港。
      3. 安裝app,https:///pok%C3%A9mon-go/com.nianticlabs.pokemongo.
      4. 任天堂是一直不太care國(guó)服的,這次迫于服務(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)營(yíng)初期策略較為寬松寧放過不誤殺。

      為了測(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ū)域:美國(guó)/澳大利亞/英國(guó)/日本。我選擇將自己的坐標(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)論公約

        類似文章 更多