見出し画像

Play Integrity Fixのつかいかた(v14系列&dev対応/2024年版)

日本語で真面目に書かれた世界で最初のきじ。
一応ミ田氏作「強力なRoot検知機能で起動しないアプリを動かす方法」の補間的位置づけ。ある程度わかる人向けです。

【お知らせ】
v15系列は操作が複雑なため、再改訂を実施中です
・更新ハゲしいので、一部古い情報かもしれませんがご了承願います。
・osm0sis氏のPlay Integrity Forkをベースにしたつかいかたも執筆中です。


背景

バグったデバイスのpropsを使うことでMEETS_STRONG_INTEGRITYが突破できた事件以来、Play Integrity Fix(以下、PIFix)とGoogle(以下、G社)の攻防は熾烈を極めています。
先月~今月にかけてはは幾度もモジュールが使用していたfingerprintが無効化されMEETS_BASIC_INTEGRITYしか通らない状態に。PIFixは矢継ぎ早なアップデートを余儀なくされた他、G社対策の為に一時クローズドソース化されたこともありました。
このいたちごっこはYouTubeとuBlock Originの攻防にも似ていますが、決定的に違うのはPIFixが使えるfingerprintには限りがある※、という点。要はどのみち全てのMEETS_DEVICE_INTEGRITYが通るfingerprintが無効化され、G社の勝利が確定してしまうという、何とも悲惨な未来です(現在進行系)。

たとえそれをしても、結局のところ、GoogleはすべてのfingerprintをBANするつもりです。
遅かれ早かれGoogleが勝つとわかっている戦争なのです、どうしようもない。このモジュールの保守を続けるべきかどうかわかりません。
.propファイルを読めるようにするつもりだが、何も約束できません。

https://xdaforums.com/t/module-play-integrity-fix-safetynet-fix.4607985/post-89164994

しかし、いたちごっこを止めるための一手として、PIFix作者のchiteroman氏が繰り出したのがv13.1です。本記事ではこれを踏まえ、更にアプデされたv14.4をベースに、よりBANされにくいDEVICE_INTEGRITYの通し方について記述していきます。

※ただ一回BANされたfingerprintが再度使えるようになっている報告もあり、その辺はG社に遊ばれている柔軟に対応されてるようです。

v13.1から何が変わったのか?

一言で言うと、従来では固定されていたデバイスのfingerprintを、ユーザーの手で変えられるようになりました

しかし@osm0sisが言ったことを踏まえると、Googleは私たちにもっと慎重になってほしいだけなので、私たち全員が同じfingerprintを持っているならそれはちょっと明白ですが、もし私たちが個別に異なるモノを使い始めたら、Google は私たちを放っておくかもしれません

https://xdaforums.com/t/module-play-integrity-fix-safetynet-fix.4607985/post-89173166

まあ理屈としては、全員が異なるfingerprintを使えばG社は積極的にBANしなくなるだろう、ということです。fingerprintを読者の好きなものに書き換えることで、よりDEVICE_INTEGRITYをBANされにくくできましょう。
ちなみに著者はこの方法を使い始めて以来、(実験でpropを試した時を除き)一度もDEVICE_INTEGRITYが点かなくなった事は無いです(ドヤ顔)。
いよいよお待ちかねのやり方は、以下に列記していきます。

pif.jsonの書き換え

まず前提として、PIFixを使うにはZygiskの有効化が必要です。Magiskを使う場合はこちらを参照しつつ素直に有効化だけでおk。KernelSUやAPatchの場合は専用モジュール「Zygisk Next」が必要になります。

2024年初頭に起きたLSPosed事変によってオリジナルのNextは開発中止されたため、サポートを継続しているフォーク版を使うことがおすすめです。
APatch用とありますがKSUやMagiskもサポートしており、難なく動きます。

後はいつもどおり、Play Integrity Fixをインストールします。

ここからが本題。任意のファイルマネージャでダウンロードしたPIFixのzipファイルを展開し、中にあるpif.jsonを開きます。おすすめはテキストエディタも標準付属したSolid Explorerですが、勿論別途に開く術があるならMaterial Files等、他のものでも構いません。

いつもどおりZenfone 9でテスト

ちなみに要rootディレクトリにアクセスできるマネージャ(先に上げた2者は両方共対応している)を用いて、/data/adb/pif.jsonまで潜り改変する手もあります。こちらは今から入力するfingerprintが機能しなくなった際切り替える時に使いましょう。更新やアンインストールをしてもこのファイルは書き換わらない事があるので注意。

さて、pif.jsonの構造は次のようになっています…しかしこの例示したfingerprintは、例によってBeingEvilG社の手で使用不能にされてしまったため、変更していきます。
なおデフォルトのpif.jsonは値の所が完全に空白になっています。

{
    "PRODUCT" : "bullhead",
    "DEVICE" : "bullhead",
    "MANUFACTURER" : "LGE",
    "BRAND" : "google",
    "MODEL" : "Nexus 5X",
    "FINGERPRINT" : "google/bullhead/bullhead:8.0.0/OPR6.170623.013/4283548:user/release-keys",
    "SECURITY_PATCH" : "2017-08-05",
    "FIRST_API_LEVEL" : "23"
}

これをそれぞれbuild.propから抽出して書き換えることで、任意のデバイスとしてPlay Integrityに検証させることができます。ポイントとしては、SECURITY_PATCHのビルド日付が2018年以前であること。これならDEVICEが通る確実性が高いそうです。尤も2018年以前だろうと通らない例外や、逆に2019年以降で通った例の報告もありますが。

{
    "PRODUCT" : "ro.product.name",
    "DEVICE" : "ro.product.device",
    "MANUFACTURER" : "ro.product.manufacturer",
    "BRAND" : "ro.product.brand",
    "MODEL" : "ro.product.model",
    "FINGERPRINT" : "ro.build.fingerprint",
    "SECURITY_PATCH" : "ro.build.version.security.patch",
    "FIRST_API_LEVEL" : "ro.product.first_api_level"
}

ちなみにro.product.nameはro.product.system.nameなどの名前だったりする場合もあります(OnePlusの端末など)
またFIRST_API_LEVELは24(Android 7 Nougat)のpropが推奨されています。
しかしchiteroman氏のてれぐらでの報告によれば、APIをnull(API=23,Android 6 Marshmallow)に書き換えれば通ってしまうA11~A12端末も少なからずある模様です。この点踏まえて、API以外を変えながら通るpropを探してみるのも一興でしょう。
build.propsなんて何処から持ってくるんだよ!って方、ネットの海を探せば結構転がってるので頑張って生きてるやつ見つけてください…個人的には、同じメーカーのデバイスのfingerprintが良いのではと勝手に思ってます。

PixelFlasherやGeneratePIFなど、pif.json作成を支援してくれるツールも幾つかあるので、使ってみると良いと思います。KernelSUが非対応だったりで動作確認できないのでここでは深く掘り下げませんが…

書き換えてインストールor再起動すれば、変更したpropsが適用されます。Playストアの開発者オプションに眠るPlay Integrityのチェッカーを用いて、MEETS_DEVICE_INTEGRITYが通るかをチェックしましょう。
(SPICなどサードパーティ製のチェッカーは現在、余りに使われすぎてAPIエラーを吐いている場合がままあります)

ネットに転がってない私の前世機のfingerprintは通りました

注意点&マイ動作報告。

既に冒頭に上げた前提記事を読んだ人には周知の事実ですが、Play Integrityを通すにはShamikoMagiskHideを使って、GMSからrootを隠すのが必須です。KernelSUならKSU Unmount Module(てれぐらとかに転がってる)、APatchならQingyueを使うのが良いと思います。
この辺再設定時などに意外と忘れがちなので注意しましょう。

  • ゆっくり育てていってね、大概のアプリ・ゲームはrootを隠すだけでちゃんと動きます。

  • Google WalletはDEVICEが通ってれば動きます。STRONGは今のところいりません。

  • おサイフケータイはもっと緩く、BASICでも動作しました(まだSafetyNet見てるのかもしれませんが、仮にIntegrityに切り替えてもWalletに準ずるでしょう)。

  • UberのクライアントアプリもDEVICEの他、IAmNotDeveloperとHide My Applist(HMA)でガチガチに固めれば動きました。
    動かん報告が出てていろいろ確認中です。

  • NetFlixSTRONGのない端末でインストールを禁じているとする記事もありますが、実のところPlayプロテクト認定の無い端末でインストールを蹴ってる、というのが現状のようです。これはDEVICEが通ってればどうにかなります(インストールできねぇ!って場合はGMSとストアのキャッシュを消してみてください)。

  • Vポイント v1.9.0も私の環境では登録画面まで進めました…が、そっから先で独自のroot検知やってる可能性もあるので参考までに(持ってない)。
    正直KernelSUで駄目ならxposedモジュール必須かな…などと思ってます。

  • 唯一STRONGを見てるとされるマイナポータルFeliCaの有無で検知を変えている節があるらしく、HMAでおサイフケータイ関連のアプリを丸ごと隠せば登録まで進むことができました。

一刻も早くこの熾烈な攻防にmodderが勝利できることを祈っています。

おしまい。


この記事が気に入ったらサポートをしてみませんか?