GPS 欺騙如何運作,以及為什麼 App 會偵測到它
位置、軟體假 GPS 和模擬位置標記實際上是如何運作的,以及為什麼真實的 RF 訊號會產生一個真正的定位,不會留下任何模擬標記。
「GPS 欺騙」這個詞被用來指兩種完全不同的東西,而這兩者的差異,正是為什麼有些方法會被抓、有些不會的關鍵。一種是在軟體層注入假座標;另一種是發射真實的無線電訊號。以下說明它們各自如何運作,以及 App 實際上會檢查什麼。
手機如何知道自己在哪裡
GNSS 接收器(GPS,加上它的兄弟系統 Galileo、GLONASS 與 BeiDou)會聆聽來自頭頂衛星的微弱無線電訊號。每顆衛星都會廣播它發送訊息時的時間;接收器測量每個訊號抵達所花的時間,將其轉換為距離,然後解算出地球上唯一一個與所有距離相符的點。那個解算出來的點就是你的定位。手機上所有與位置相關的功能(地圖、地理圍欄、「附近」、遊戲)都建立在這個定位之上。
軟體假 GPS:注入座標
假 GPS App 不會碰觸無線電。它利用作業系統的開發者掛鉤,直接塞一個座標給系統,並要求「改回報這個」。這方法簡單又免費,但會留下指紋。在 Android 上,任何透過這種方式產生的位置,都會帶有 isFromMockProvider 旗標,而且啟用它需要開發人員選項和「模擬位置」設定。在 iOS 上,Apple 直接禁止這類 App,因此軟體途徑需要一台電腦、越獄(jailbreak),或是用短期憑證側載(sideload)的 App。
為什麼 App 會抓到
偵測成本大多很低,因為軟體途徑的動靜很大:
- 模擬旗標。 一行程式碼就能讀取
isFromMockProvider;被標記的定位直接丟棄。光是這一步,就能攔下絕大多數隨意的欺騙者。 - 完整性驗證。 Play Integrity(Android)和越獄/開發者模式檢查(iOS)會注意到軟體途徑所需的修改過的環境。
- 交叉比對。 一個強化過的 App 可以將你的 GPS 定位與你的網路 IP、手機能看到的 Wi-Fi 和基地台、以及你的動作感測器進行比對,然後標記出一個與所有這些資訊都不相符,或是跳躍速度超過人類移動速度的 GPS 位置。
RF 模擬:真實訊號,真正的定位
AnyLocate 的運作層級更低一層。它不是注入座標,而是將真實的衛星訊號廣播到裝置自己的接收器中,接收器會鎖定訊號並以正常方式計算出定位。在模擬位置層級,其結果與真實位置無法區分:沒有注入的座標,因此沒有 isFromMockProvider 旗標、沒有模擬位置設定、無需 root 或越獄,完全沒有常見偵測器被設計來尋找的那些東西。這個位置會落在真實的道路上,並平滑地更新,因為它是接收器自己產生出來的。
VPN ≠ GPS
一個常見的死胡同:VPN 改變的是你的 IP 位址,而不是你的 GPS 定位。Snap Map、Pokémon GO 和大多數地圖功能都會忽略 IP,只讀取衛星位置,所以 VPN 在地圖上什麼都移動不了。移動你的地圖位置意味著移動定位,那是 GPS 層級的事,而不是網路層級。
它的邊界在哪裡
誠實說明邊界是重點。控制衛星訊號會設定所有從 GPS 定位衍生出來的一切。它不會改變你的網路 IP、你的帳號或帳單區域、手機感測到的 Wi-Fi 和基地台環境,或是你的動作感測器,因此任何以那些為門檻的東西(綁定登入帳號的區域鎖、IP 檢查、融合 Wi-Fi 定位、步數計交叉比對)都是另一回事。衛星層級是 AnyLocate 能乾淨且完整控制的範圍;它不會宣稱能控制其他層級。