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
👆👆👆👆👆
2024/9/19時点の情報
この記事を書いた時点での最新はRelease10763だが、パッケージ名をランダム化する機能が削除されている。冗長でバグだらけだったからとのことだが……
しかしこの機能を使いたいためひとつ前のRelease10657を利用。なおこのバージョンまでSuperuserのデフォルト設定が「除外」になっておりシステムアプリを含む全てのアプリが除外された状態になっていたり(さすがに過剰)、APModuleのオンラインアップデータが機能しなかったり(パッケージをDLするだけで自動インストールが始まらない)とあるのでパッケージ名検出の問題がなければ10763を使ったほうがいい。
10657以下から10763にアップデートするときは /data/adb/ap/package_config を削除し、Superuserの設定をやり直すこと。
目次
これは何?
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を準備
※init_bootではない。
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が入っているとスマホ単体でポチポチ選ぶだけなので手軽。
※繰り返すがinit_bootではない
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を取り出さないといけない。
パラメータの設定ができるようだがよくわからんので空欄のまま……
APModule
APModuleってのは要するにMagiskモジュール。AndroidPatch Moduleの略なんだろうか?
Zygisk_mod
Zygiskをスタンドアロンで実装するZygisk Nextが現在クローズドソースなので、それのオープンソース版といったところ。
気にしない人は別にZygisk Nextでいい……が、APatch10657では最新のZygisk Nextをインストールできない。
MagiskにはZygiskが組み込まれているため必須ではないが、KernelSU/APatchでは組み込まれていないのでこれを入れないとZygiskが使えない。
"开启强制卸载" という設定項目があるが翻訳すると「強制アンインストールを有効にする」ということからしてこれがEnforce Denylistのスイッチという認識でいいんだろうか?
Zygisk Assistant
Magiskで言うところのShamiko。コレを入れることで上述した除外スイッチが所謂MagiskHide的な動きになる。
Shamikoと同じくEnforce Denylistをオフにする必要があるためお忘れなく。
Shamikoも使えないわけではないのだが0.7.4までしか対応しておらず、それ以上のVerを入れてもグレーアウトして有効にできない。
なおShamikoとの共存もできるが果たして効果は……? これで勝ったと思うなよーーー!が見たい人はShamikoも入れよう。
Play Integrity Fix
いつもの。MEETS_DEVICE_INTEGRITYを通すやつ。
systemless hosts KernelSU module
KernelSUおよびAPatch環境でAdAwayを動作させるために必要。
LSPosed_mod
いつもの。元のLSPosedが開発停止しておりマネージャーが起動しないなどの問題が起こるためこちらに。
ReVanced Magisk Module
最早これ無しでは……
zygisk-detach
このモジュールは選択したアプリをPlayストアから切り離す。つまりPlayストアから見ると未インストール状態になる。
何とは言わないが勝手に更新してほしくないアプリに対して使用する。Playストアから自動更新を切ってもいいが……
Magiskでは設定するために別途zygisk-detach-appを入れる必要があったが、KernelSU/APatchではモジュール一覧からウェブUIを開いて設定できるためアプリを入れる必要はない。
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においてコイツが入っているとスクリーンレコードが壮大にバグり散らかして録画は止まらんし発熱も止まらんしファイルは保存されてないしという状況になったため削除。そういう意味では効果はあった。
playcurl
APModule
旧名はPlay integrity NEXTとかfp-downloaderとか。
昔と違って手間がなく、30分おきにfingerprintをチェックしてBANされていれば新しいものを自動で取ってくる。要するにとりあえず入れておけばいいわけだが、勝手に動いてほしくなければ停止させることもできる。
が、Play Integrity Fixをアップデートしたらある時を境に勝手に消されるようになった。要らなくなったのかもしれない。
まあ特に問題も起こってないので消したままにしている。
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にするという方法で解決。