位置偽装をアプリから隠すことはできるか
「偽装を検出されないようにするには?」は、ほかのどの質問よりも多く寄せられます。短く答えると、最初の最もわかりやすい手がかりを隠すことは技術的には可能ですが、それで目的は果たせません。アプリはさらに 3 つの独立した方法で偽装を知り、システムを改変する代償は割に合わないほど大きいのです。以下では、検出が実際にどう行われるのか、そして私たちがこの方法を説明もサポートもしない理由を説明します。
アプリはどうやって偽装を知るのか
段階は 4 つあり、互いに独立しています。
1 つ目は、座標自体のフラグです。Android はテスト用の情報源からの地点すべてに専用のフィールドで印を付け、アプリはそれを 1 行のコードで読み取ります。これは公開されたシステム標準のインターフェースで、秘密の確認ではありません。
2 つ目は端末の完全性です。ブートローダーのロック解除や root は、座標がどうなっているかに関係なく、プラットフォームの構成証明から見えます。アプリはあなたが位置を偽装しているかを知る必要はありません。システムが改変されていることがわかれば、動作そのものを拒否すれば済みます。
3 つ目は周囲との照合です。スマートフォンには周りの Wi-Fi ネットワークや携帯基地局が見えており、その顔ぶれは「移動」した先の座標と一致しません。両者を照合するのは、サービスにとって簡単です。
4 つ目はサーバー側の分析です。1 分で 500 km の移動、完全に真っすぐな軌跡、1 m も変わらない精度。こうしたものはすべて、端末のフラグが 1 つもなくてもサービス側から見えます。

root という方法でできること、できないこと
インターネット上のガイドが説明しているのは同じことです。ブートローダーのロックを解除し、root を取得し、システム層に介入して座標から仮の情報源のフラグを取り除くモジュールをインストールする。
これで閉じられるのは、4 つの段階のうち 1 つ目だけです。端末の構成証明は、ブートローダーのロックを解除した時点で必ず失敗します。それも偽装のためではなく、改変そのもののためです。ネットワークとの照合とサーバー側の分析は、そもそも端末とは関係ありません。それを行うのはサービスで、スマートフォン上のモジュールは影響しません。
結果は取引です。最も目立つ確認をオフにすると同時に、2 つ目の、もっとずっと大ざっぱな確認「端末が改変されている」をオンにしてしまいます。そもそも目的だったアプリ(銀行、配達、企業の勤怠管理)にとっては、以前より悪い結果になります。以前は動作して偽装した座標を無視するだけだったのに、今は起動すらしません。
改変後に使えなくなるもの
ほとんどの端末では、ブートローダーのロックを解除するとすべてのデータが消去され、保証が無効になります。これは細かい注意書きではなく、メーカーの公式な立場です。
さらに続きます。銀行アプリやタッチ決済は、構成証明に失敗した端末では動作を拒否し、一部の行政サービスや企業のサービスも同様です。OTA アップデートはインストールできなくなるか、インストールするとシステムが壊れます。完全性チェックはもうあなたを守りません。root 権限を持つ悪意あるアプリは、役に立つアプリと同じ能力を得るからです。
別の項目として、スマートフォンが使えなくなるリスクもあります。重要なパーティションがロックされた端末での書き込みの失敗は、サービスセンターでしか直せず、無償とは限りません。

しかも不安定な理由
上記をすべて脇に置いても、こうした方法は長続きしません。仮の情報源のフラグは Android のバージョンとともに変わってきました。Android 12 より前はアプリはあるフィールドを読み、Android 12 からは別のフィールドを読むようになり、古い回避策は機能しなくなりました。プラットフォームの構成証明は端末ではなくサービス側で更新されるため、あなたの関与なしに、任意のタイミングで壊れます。
実際には、絶え間ない手直しを意味します。システム、アプリ、構成証明そのもののアップデートのたびに、回避策がまだ機能するか確認し、また何かを設定し直さなければなりません。私たちはこれを許容できるとは考えず、誰にもおすすめしません。だからこそ Mock Location はフラグを隠さず、今後も隠しません。
アカウントにとっての結末
位置を確認するサービスは、意地悪でそうしているのではありません。それらにとって位置は事実の証明です。配達員が配達を記録し、従業員が現場にチェックインし、ユーザーが料金プランのために地域を証明する。こうした証明を偽ることはサービスの規約に違反し、しばしば契約にも違反します。
結果は予想どおりです。返金も審査もないアカウントの停止、業務の場合は雇用主との話し合い、場合によっては法的な請求もあり得ます。位置偽装そのものの合法性についての私たちの立場は 別の回答 にあります。自分の位置を変更する権利はありますが、その位置に頼るサービスを欺くのは別の話です。
正当な目的で偽装が必要な場合
良い知らせがあります。大多数の使い方は、何も隠さなくても機能します。そこでのアプリはそもそもフラグを読まないからです。
地図とナビ、天気、周辺検索、地域の情報や価格、位置に依存するシナリオのテストは、どれも偽装した座標をそのまま受け入れます。必要なアプリがこのグループに入るかは 1 分で確認できます。偽装をオンにして、何が表示されるかを見てください(確認方法)。
アプリがフラグを読み取るものだとわかった場合、唯一機能する選択肢は、確認を回避することではなく、別の方法で目的を果たすことです。地域のコンテンツに必要なのは GPS よりもネットワークであることが多いです:位置偽装か VPN か。自分のアプリのテストには、偽装が組み込まれていて誰も欺かないエミュレーターとデバッグビルドを使います(QA 向けの解説)。
まとめ
偽装の検出を完全に防ぐことはできません。確認には 4 つの段階があり、システムを改変するとそのうち 1 つは閉じられますが、「端末が改変されている」というフラグが立ち、同じアプリがさらに早く動作を拒否するようになります。
Mock Location は Android 標準の仕組みの範囲内だけで動作します。その仕組みとは何か、root が不要な理由、アプリに実際の座標が見える理由 は別に説明しています。確認を回避するガイドは公開しません。慎重だからではなく、それでは目的が果たせず、ユーザーにもとの問題より大きな問題をもたらすからです。