[Android] APatchを導入する [root]

投稿者: | 2024年7月12日

Google「もしかしてApache」
ぼく「違う」

👇👇👇👇👇
[DEV] APatch - an alternative root solution to KernelSU and Magisk | XDA Forums
GitHub - bmax121/APatch: The patching of Android kernel and Android system
👆👆👆👆👆

Last Update: 2024/12/2

この記事を書いた時点での最新はRelease10763だが、パッケージ名をランダム化する機能が削除されている。冗長でバグだらけだったからとのことだが……
しかしこの機能を使いたいためひとつ前のRelease10657を利用。なおこのバージョンまでSuperuserのデフォルト設定が「除外」になっておりシステムアプリを含む全てのアプリが除外された状態になっていたり(さすがに過剰)、APModuleのオンラインアップデータが機能しなかったり(パッケージをDLするだけで自動インストールが始まらない)とあるのでパッケージ名検出の問題がなければ10763を使ったほうがいい。

10657以下から10763以降にアップデートするときは /data/adb/ap/package_config を削除し、Superuserの設定をやり直すこと。そのままだと動作がおかしくなる。

->2024/11/27
フォークらしいAPatch Nextに移行した。何とは言わないが色々いける。将来的にはAPatchに統合されるらしい……?
モノの出所がいまいちわからんので特にリンクを貼ったりしないが、もし試したいなら上記XDAのスレッドでCherish Peekaboo 1.5について調べたりすると見つかるかもしれない。

余談だが本家のNightly版はこのへんからいける。Telegramのディスカッショングループの方でも拾える。

目次


これは何?

MagiskでもKernelSUでもないもう一つのルートソリューション。
MagiskとKernelSUのいいとこ取りしたような存在とのことで、大半のMagiskモジュールがそのまま適用できて良い。

動作要件などは上記GitHubに書かれてあるのでそちらを参照してほしいが、現代の端末は大抵問題ないだろう。
ただしSamsungを除く。

もちろんこの先にApache HTTP Serverの話は出てこない。
名前が悪いのはまあそう。


入れた経緯

REDMAGIC OS 9.0.18が来ていたのでアップデートを入れたかったが、TWRP入れたりしているためそのままではOTAアップデートが失敗する。もしかしたらrecoveryを元に戻せば動いたのかもしれないが、9.0.17のバックアップを取っていなかった。recoveryは9.0.13から変わってないだろうから一度試してみても良かったが、クリーンな状態で9.0.18のEDL ROMを作りたかったのもあり初期化することにした。
で折角なのでついでに色々入れ替えてやろうかと。イー○ラス動くか気になってたしな……

ちなみにEDL ROMはZTE Family Toolboxで簡単に作成できた。

まあ経緯なんてのはどうでもよくて、ここからが本題。


boot.imgを準備

ROMが配布されていたりEDL ROMを用意しているならそこから持ってくればいい。
配布が無いならTWRPから作業するなりKernelSUあたりを使って頑張るなりしてddコマンドで引っ張り出す。
例えばboot_a.imgを引っこ抜くならこのように。

# dd if=/dev/block/bootdevice/by-name/boot_a of=/sdcard/boot_a.img

パッチする

APatchを起動し、右上のボタンからパッチする。
用意したboot.imgを選択して任意のSuperKey(あとで使うので忘れないように)を入力したら開始!
たぶんDownload以下に生成されるがパスは確認しておくように。

なお「KPMを組み込む」ボタンを押すとこの段階でKPModuleを組み込むことが出来る。

パッチが完了したらPCに転送してfastbootあたりでflashする。
以下はfastbootコマンドの例。スロット未指定なので現在動作中のスロットに書き込まれる。
TWRPが入っているとスマホ単体でポチポチ選ぶだけなので手軽。

fastboot flash boot apatch_patched.img

インストールする

パッチ済みboot.imgが入った状態でAPatchを開き、パッチ時に入力したSuperKeyを入力する。
SuperKeyが合っていればAndroidPatchをインストールするボタンが出現するので、これを押せば導入完了!簡単だな!
あとはsuを許可したいアプリにチェックを入れるだけ。Magiskと違ってアプリからsu要求が飛んできたりはしないので予め許可する必要がある。

なおチェックを入れていない状態でアプリ名のあたりをタップすると除外設定が開く。いわゆるDenylist的なものだが、おそらく期待しているであろう動作をさせるには別途モジュールのインストールが必要。しかしAPatchが中々に優秀なため除外しなくてもだいたい問題なく起動する。


入れているモジュール紹介

ここからは余談みたいなものだが、うちの端末に入れている各種モジュールをご紹介だ。

KPModule

たぶんKernelPatch Moduleのこと。モジュールファイルの拡張子は.kpmとなっており、.zipではない。

モジュール追加に関して 「埋め込む」「インストール」「ロード」 の3つの項目があるが、まず「インストール」は現状未実装なので無視。
「ロード」は即座に適用されるが、再起動すると消える。一旦試したいときにヨシ。
「埋め込む」でboot.imgに埋め込まれる。こちらは再起動しないと適用されないが、アンロードするまで維持される。


Cherish Peekaboo

hide系のやつらしい。とりあえず入れている。
APatchのXDAの#1にアタッチされているが、zipなので注意。展開して中身のkpmを取り出さないといけない。
パラメータの設定ができるようだがよくわからんので空欄のまま……

注意: v1.5以降はAPatch Next専用になるため、v1.4.2を使用する必要がある。


APModule

APModuleってのは要するにMagiskモジュール。AndroidPatch Moduleの略なんだろうか?


ReZygisk

Zygiskをスタンドアロンで実装するZygisk Nextがワケあって現在クローズドソースなので、それのオープンソース版といったところ。絶賛開発中の新生。
MagiskにはZygiskが組み込まれているため必須ではないが、KernelSU/APatchでは組み込まれていないのでこれを入れないとZygiskが使えない。

現時点でも使えるが、まだRelease Candidateの段階なので問題があるかもしれない。
信頼されている開発者なので特に気にしない人は別にZygisk Nextでいい。一方でAPatch10657では最新のZygisk Nextをインストールできない。その場合はZygisk_modも選択肢としてあるがこちらはアーカイブになっており今後更新されない。


Zygisk Assistant

Magiskで言うところのShamiko。コレを入れることで上述した除外スイッチが所謂MagiskHide的な動きになる。
Shamikoと同じくEnforce Denylistをオフにする必要があるためお忘れなく。

Shamikoも使えないわけではないのだが0.7.4までしか対応しておらず、それ以上のVerを入れてもグレーアウトして有効にできない。
なおShamikoとの共存もできるが果たして効果は……? これで勝ったと思うなよーーー!が見たい人はShamikoも入れよう。


Play Integrity Fork

いつものやつのフォーク版。MEETS_DEVICE_INTEGRITYを通す。pif.jsonが同梱されないため何らかの方法で用意しないと機能しない。
用意するのがダルい人向けに /data/adb/modules/playintegrityfix/autopif2.sh を実行することでいい感じに生成されるようになっているが、それすらダルい人のためのモジュールが次のやつ。


playcurlNEXT

playcurlの新バージョンにあたる。入れておくだけでfingerprintをいい感じにやってくれる。
デフォルトだと60分間隔でチェックするようだが、 /data/adb/modules/playcurl_NEXT/minutes.txt の値を変更することで1〜1400分の間でチェック間隔の調整ができる。そんな高頻度でチェックする必要もない気もするので1200に設定している。


bindhosts

KernelSUおよびAPatch環境でAdAwayを動作させるために必要。
AdAway利用の場合は特に設定する必要なく入れるだけだが、このモジュール自体が同等の機能を持っているためAdAwayを入れなくてもhostsベースの広告ブロックが使える。

v1.7で仕様が変わったためひと手間必要。
このページを参考にDeveloperModeをオンにし、modeを2に設定する。
少なくともv1.7.2時点においてmode=0かつAPatchだとAdAwayが動作しないため、従来方式であるmode=2にしないといけない。


LSPosed_mod

いつもの。元のLSPosedが開発停止しておりマネージャーが起動しないなどの問題が起こるためこちらに。


ReVanced Magisk Module

最早これ無しでは……


zygisk-detach

このモジュールは選択したアプリをPlayストアから切り離す。つまりPlayストアから見ると未インストール状態になる。
何とは言わないが勝手に更新してほしくないアプリに対して使用する。Playストアから自動更新を切ってもいいが……
Magiskでは設定するために別途zygisk-detach-appを入れる必要があったが、KernelSU/APatchではモジュール一覧からWebUIを開いて設定できるためアプリを入れる必要はない。

環境次第かと思うが、再起動するとdetach設定が毎回初期化される場合がある。
細かい原因はわかっていないが、初回の設定をWebUIから行うと detach.bin がパーミッション600で生成された一方、zip直下に detach.txt を入れてからインストールするとパーミッション644で生成されたのでその辺りも関係あるかもしれない。ターミナルコマンドで設定する方法は試していないので不明。
どちらにせよ detach.bin を読み込めてないのが問題だとは思うが、少なくとも detach.txt を入れ込む方法ではうまく行っている。あとdetachしたいアプリが固定なのでこのほうが楽というのもある。


Disable high volume warning

クソみたいな音量警告を黙らせるやつ。何もかもEUのせい。


Twemoji-Remastered

システムの絵文字をTwitter(自称X)のやつにする。全ては最も優れたデザインのthinking-faceのため。


NovaInstaller

Nova Launcherをシステムアプリ化する。必要かと言われたら微妙だ……


REDMAGIC Addons

REDMAGIC限定。
中国版ROMにあってグローバル版ROMにない(別途apk取ってくれば使えるが)いくつかの機能を追加したり、一番デカいのは(何故か制限されている)ミニアプリ化できる対象を拡張する。これによってVivaldiとかブルアカとかアークナイツとかもミニアプリで動作するようになりめちゃくちゃ便利になる。


LSPosedモジュール

リポジトリから取ってこれる。
GravityBoxくんはもう居ない……というかLSPosed自体だいぶ下火な気がする。


ImNotADeveloper

IAmNotADeveloperではない。使い方はIAmと同じくUSBデバッグを隠したいアプリにチェックを入れるだけだが、IAmでは隠せなかったいくつかのアプリ(というかゆうちょ系)が隠せる。ただしVpassに使うと(少なくともうちの環境では)立ち上がらなくなる。


Enable Screenshot

旧名Disable FLAG_SECURE、おすすめアプリ(システムフレームワークとシステムUI)のみチェックを入れる。
スクショが制限されているアプリでもガン無視してスクショが取れる。セキュリティ的にはよくない。


おまけ: 過去に入れていたモジュール

問題が起こるなどに気づいたために消したモジュール


YAKT (Yet Another Kernel Tweaker)

APModule
カーネルのパラメータを微調整してくれるやつ。
何どう変わったのかはわからんが少なくとも体感1.3倍増しくらいの速度でバッテリー減ってる気がしたので消した。
まあ昔ならともかく今の時代こういうのは純正が一番いい。特にハイエンド機は。


GPU Turbo Boost

APModule
GPUの動作を効率化するらしいが実際のところは不明。
REDMAGIC 9 Proにおいてコイツが入っているとスクリーンレコードが壮大にバグり散らかして録画は止まらんし発熱も止まらんしファイルは保存されてないしという状況になったため削除。そういう意味では効果はあった。


Play Integrity Fix

APModule
いつもの。MEETS_DEVICE_INTEGRITYを通すやつ。
v18以降エラーが出て入らないのでv17.9を入れる必要があった。今後改善する可能性もある。
しかしコレにこだわる必要もないため削除。


playcurl

APModule
旧名はPlay integrity NEXTとかfp-downloaderとか。
昔と違って手間がなく、30分おきにfingerprintをチェックしてBANされていれば新しいものを自動で取ってくる。要するにとりあえず入れておけばいいわけだが、勝手に動いてほしくなければ停止させることもできる。

が、Play Integrity Fixをアップデートしたらある時を境に勝手に消されるようになった。要らなくなったのかもしれない。
まあ特に問題も起こってないので消したままにしている。


systemless hosts KernelSU module

APModule
KernelSUおよびAPatch環境でAdAwayを動作させるために必要。
どの組み合わせがどう悪いのかは知らないが、これが有効の場合に何らかのテキストファイルエディタを起動するとシステムがフリーズして再起動するようになったため削除。


Magisk built-in BusyBox

APModule
BusyBoxを組み込む。BusyBoxが要らない人には要らない。
これを入れているとzygisk-detachがアプリを読み込まなくなってしまったため削除。


NotifyIntercept

LSPosedモジュール
キーワードマッチングで通知を黙らせる。つまり消せない通知を消す。
黙らせたい通知を出しているアプリにチェックを入れたうえで、NotifyInterceptの設定画面で改めて対象アプリを有効にし、スマホを再起動すると適用される。通知タイトルか通知内容のどちらか、あるいは両方でキーワードマッチングできる。設定した文章が含まれていれば対象とするので明示的にワイルドカードを入れる必要はないというかそんなものはない。

がいまいち動作が怪しく機能しないことも多々。そしてREDMAGICOSを9.0.20にしたら動かなくなった。
というかroot要らず通知キャンセラーで事足りる。


Hide My Applist

LSPosedモジュール
著名なroot隠しモジュールだがしばらく更新されておらず環境により動作が怪しいことがある。
というかコイツがあるせいでイー○ラスからrootがバレているということが発覚したため削除。何ならその状態になるとこれを消してもイー○ラスが検知し続けて端末本体を初期化するまで直らない。Void app dataをONにしたのが原因なのかもしれない。
/data/system/hide_my_applist_なんたら のディレクトリを消せば直る。ここを前方一致で見てるっぽい。本来ここはroot権限がないと見に来れないはずだが何故かうちの環境では見えているらしい。原因はわからん。

そしてそもそもAPatch環境なら何もせずともイー○ラスが起動する。除外設定すらしていない。
→イー○ラス5.10.0でAPatchマネージャを検出するようになったが、パッケージ名を見ているだけっぽいのでAPatchを隠せば(パッケージ名をランダム化すれば)いける。

今度はVpassに対してUSBデバッグが隠せなくなったが、USBデバッグを常時ONにする必要もないためTasker(とAutoTools)を使って「USB充電時」のみadb_debug=1にするという方法で解決。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です