Как работает GPS-спуфинг и почему приложения его обнаруживают
Как на самом деле работают местоположение, программный fake-GPS и флаг mock-location, и почему настоящий RF-сигнал даёт подлинное определение без mock-маркера.
«GPS-спуфинг» — термин, которым называют две совершенно разные вещи, и именно в этом различии кроется причина, почему одни методы вас выдают, а другие — нет. Один подменяет координату программно, другой — излучает настоящий сигнал. Вот как работает каждый из них и что на самом деле проверяют приложения.
Как телефон узнаёт, где он находится
GNSS-приёмник (GPS плюс его собратья Galileo, ГЛОНАСС и BeiDou) слушает слабые радиосигналы спутников над головой. Каждый спутник передаёт время отправки своего сообщения; приёмник измеряет, сколько времени занял путь каждого сигнала, переводит это в расстояние и вычисляет единственную точку на Земле, согласующуюся со всеми измерениями. Эта вычисленная точка и есть ваше местоопределение. На нём строится всё, что связано с местоположением на телефоне: карты, геозоны, «поблизости», игры.
Программный fake-GPS: подмена координаты
Приложение для подмены GPS не трогает радиотракт. Оно использует отладочный программный интерфейс операционной системы, чтобы передать системе координату и сказать «докладывай вот это». Это просто и бесплатно, но оставляет след. На Android любое местоположение, полученное таким способом, несёт флаг isFromMockProvider, а для его включения нужны «Параметры разработчика» и настройка «Фиктивные местоположения». На iOS Apple просто запрещает такие приложения, поэтому программный путь требует компьютера, джейлбрейка или неофициально установленного приложения с короткоживущим сертификатом.
Почему приложения это ловят
Обнаружение в основном дёшево, потому что программный путь слишком заметен:
- Флаг фиктивного источника. Одна строка читает
isFromMockProvider; помеченное местоопределение отбрасывается. Этого одного достаточно, чтобы отсеять подавляющее большинство любителей. - Аттестация целостности. Play Integrity (Android) и проверки на джейлбрейк/режим разработчика (iOS) замечают модифицированное окружение, необходимое для программного пути.
- Перекрёстные проверки. Серьёзное приложение может сравнить ваше GPS-местоопределение с вашим сетевым IP, с видимыми телефоном точками Wi-Fi и вышками сотовой связи, а также с данными датчиков движения — и пометить GPS-позицию, которая противоречит всем им или перемещается быстрее, чем способен человек.
Радиочастотная симуляция: настоящий сигнал, подлинное местоопределение
AnyLocate работает на уровень ниже. Вместо подмены координаты он излучает аутентичный спутниковый сигнал прямо в приёмник устройства, которое захватывает его и вычисляет местоопределение обычным путём. На уровне фиктивных местоположений результат неотличим от реальной позиции: нет подставленной координаты, а значит, нет флага isFromMockProvider, нет настройки фиктивных местоположений, нет root или джейлбрейка — ничего из того, на что рассчитаны типовые детекторы. Позиция ложится на реальные дороги и обновляется плавно, потому что её выработал сам приёмник.
VPN ≠ GPS
Частый тупик: VPN меняет ваш IP-адрес, но не ваше GPS-местоопределение. Snap Map, Pokémon GO и большинство картографических функций игнорируют IP и считывают спутниковую позицию, поэтому VPN ничего не сдвигает на карте. Чтобы сдвинуть местоположение на карте, нужно сдвинуть местоопределение — а это уровень GPS, а не сети.
Где проходит граница
Честно обозначить границу — в этом и суть. Управляя спутниковым сигналом, вы задаёте всё, что выводится из GPS-местоопределения. Это не меняет ваш сетевой IP, вашу учётную запись или платёжный регион, видимое телефоном окружение Wi-Fi и сотовой связи, а также ваши датчики движения. Поэтому всё, что привязано к ним (региональные блокировки, завязанные на логин, IP-проверки, fused-определение по Wi-Fi, перекрёстный контроль по шагомеру), — это отдельная тема. Спутниковый уровень — тот самый, которым AnyLocate управляет чисто и полноценно; на остальные он не претендует.