Amazon Fire HD 10 で root 権限を取らずに、システム・アプリを無効化した時のメモ
この作業を行ったFire HD 10(2017)のシステムは Fire OS 5.3.6.4 (2018/11/13) です。 (「設定」ー「端末オプション」ー「システムアップデート」で表示されるバージョン)
参考にしたWebページ
・xda [GUIDE][NO ROOT][LATEST VERSION] Disable System Apps on Fire HD 7/8/10:
・FireOS 5.6.0.0 のAmazon関連パッケージ一覧
環境構築
Amazon Facebook ShareアプリでOSの脆弱性を用いて、システム管理ユーザIDに昇格して「pm hide」コマンドを通してしまう方法のようだ。
Amazon Facebook Share (com.amazon.unifiedsharefacebook.apk)の配布元は
・xdaよりダウンロード (上のxda GUIDEの本文に貼られたリンク)
ダウンロードしたファイルを、Fire HDの /sdcard/Download
に保存してインストールする
adb install -r -d /sdcard/Download/com.amazon.unifiedsharefacebook.apk
adb shellでFire HDのシェルに入り、run-as コマンドを用いて、id=2000以外に昇格できることを確認する。
$ adb shell $ id uid=2000(shell) gid=2000(shell) groups=1003(graphics) ...(以下略) $ run-as com.amazon.unifiedsharefacebook $ id uid=32067(amz_u0a67) gid=32067(amz_u0a67) groups=1003(graphics), ...(以下略)
この状態で、pm hide コマンドを用いて、パッケージを無効化していく
$ pm hide [パッケージ名]
パッケージを戻すときは、pm unhide を用いる。pm hideで無効化したものは、pm disable したものと違って、pm list コマンドでは表示できなくなってしまう。
どのパッケージを無効化したかは、次の方法で知ることができる。
$ pm list package > all.txt $ pm list package -u > uninstall.txt $ diff -u all.txt uninstall.txt | grep -e '+' | sort
無効化したパッケージ
パッケージ名 | 説明 |
---|---|
com.amazon.kindle.otter.oobe.forced.ota | OTA(自動システムアップデート)関連 |
com.amazon.kindle.otter.oobe | |
com.amazon.device.software.ota | OTA(自動システムアップデート)関連 |
com.amazon.device.software.ota.override | OTA(自動システムアップデート)関連 |
amazon.alexa.tablet | Alexa 関連 |
com.amazon.alexa.modeswitch | Alexa 関連 |
com.amazon.alexa.youtube.app | Alexa 関連 |
com.amazon.vans.alexatabletshopping.app | Alexa 関連 |
com.amazon.alexa.externalmediaplayer.fireos | Alexa 関連 |
com.amazon.dee.app | Alexa |
com.amazon.knight.calendar | Alexa 関連 |
com.amazon.comms.knightcontacts | Alexa 関連 |
com.amazon.comms.knightmessaging | Alexa 関連 |
com.amazon.knight.blink | Alexa 関連 |
com.amazon.virtual.dash.knight.app | Alexa 関連 |
com.amazon.knight.ecs | Alexa 関連 |
com.amazon.knight.hds | Alexa 関連 |
jp.co.omronsoft.iwnnime.mlaz | wnn 日本語変換IME |
jp.co.omronsoft.iwnnime.languagepack.zhcn_az | wnn 日本語変換IME |
com.amazon.geo.client.maps | Amazonマップ |
com.amazon.geo.mapsv2.services | Amazonマップ |
com.amazon.geo.mapsv2 | Amazonマップ |
com.amazon.ags.app | Amazonゲーム |
com.amazon.kindle.kso | Amazonキャンペーン |
com.amazon.cloud9 | Silk Webブラウザ |
com.amazon.cloud9.kids | Silk Webブラウザ |
com.amazon.cloud9.systembrowserprovider | Silk Webブラウザ |
com.amazon.cloud9.contentservice | Silk Webブラウザ |
com.amazon.kcp.tutorial | チュートリアル |
com.amazon.dp.contacts | 連絡先 同期 |
com.amazon.dp.fbcontacts | |
com.amazon.pm | ペアレンタル・モニター |
com.amazon.unifiedsharesinaweibo | 中国 SNS微博 |
com.amazon.tahoe | Free Time |
com.amazon.kindle.personal_video | Amazonビデオ |
org.mopria.printplugin | Mopria Print Service |
com.amazon.mp3 | Amazonミュージック |
com.amazon.photos.importer | Amazonフォトインポート |
com.kingsoft.office.amz | Kingsoftオフィス |
com.amazon.kor.demo | 店頭用デモ画面 |
com.audible.application.kindle | Audible |
com.amazon.windowshop | Amazonでお買い物 |
com.goodreads.kindle | Goodreads |
com.amazon.unifiedsharegoodreads | Goodreads |
com.amazon.csapp | ヘルプ |
com.amazon.advertisingidsettings | 広告設定 |
com.amazon.comms.multimodaltachyonarm | Tachyon Calling App |
com.amazon.kindle.unifiedSearch | 検索 |
com.android.calendar | Android標準アプリ:カレンダー |
com.android.deskclock | Android標準アプリ:時計 |
com.android.email | Android標準アプリ:メール |
com.android.protips | Android標準アプリ:ホーム画面のヒント |
条件により無効化できるパッケージ
パッケージ名 | 説明 |
---|---|
com.amazon.photos | Amazonフォト(壁紙設定機能の無いランチャーを使う時に必要) |
com.amazon.firelauncher | Amazonホーム画面(他のランチャーがあれば不要) |
Amazonホーム画面以外のランチャーを使う
任意のホーム画面をダウンロードし、インストールした後に、Launcher Hijackをインストールしてランチャーを選択する。
・xda New: Any Launcher, No Root (Launcher Hijack V3)
「Android 設定」 ー 「ユーザー補助」 ー 「To detect home button press」を有効(ON)に変更する。
Amazonホーム画面以外のランチャーで、ウィジェットを有効化する
xdaのHow to Use a Custom Launcher With Widgets on Amazon Fire OSに書かれている方法でOK
私が使っているのは Xperia Home(com.sonymobile.home)なので、adbでシェルに入り、次のように権限を与えるコマンドを実行する
adb shell appwidget grantbind --package com.sonymobile.home --user 0
一時的にroot権限を得る方法が発表される (2019年4月)
『Amazon Fire HD 8 (2018 第8世代)の一時root権限取得と不要アプリ無効化』のmtk-su
プログラムを使うことで、一時的にroot権限を得られる
shell@suez:/ $ cd /data/local/tmp shell@suez:/data/local/tmp $ id uid=2000(shell) gid=2000(shell) groups=1003(graphics),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats) context=u:r:shell:s0 shell@suez:/data/local/tmp $ ./mtk-su -v param1: 0x3000, param2: 0x10000, type: 9 Building symbol table kallsyms_addresses pa 0x40aa4600 kallsyms_num_syms 66781, addr_count 66781 kallsyms_names pa 0x40b26e00, size 832778 kallsyms_markers pa 0x40bf2400 kallsyms_token_table pa 0x40bf2d00 kallsyms_token_index pa 0x40bf3100 Patching credentials init_task va: 0xffffffc000e3a960 Possible list_head tasks at offset 0x368 0xffffffc020120368 0xffffffc017231a68 0x000000000000008c comm offset 0x5d8 comm: swapper/0 Found own task_struct at node 1 real_cred: 0xffffffc031b7c400, cred: 0xffffffc031b7c400 Parsing sel_read_enforce Found adrp instr at offset 4 ADRP x0, 0xffffffc000f46000 Found ldr instr at offset 28 LDR [x0,2116] selinux_enforce VA is 0xffffffc000f46844 Setting selinux_enforce Switched selinux to permissive New UID/GID: 0/0 starting /system/bin/sh shell@suez:/data/local/tmp # id uid=0(root) gid=0(root) groups=1003(graphics),1004(input),1007(log),1011(adb),1015(sdcard_rw),1028(sdcard_r),3001(net_bt_admin),3002(net_bt),3003(inet),3006(net_bw_stats) context=u:r:shell:s0
ファームウエアのアップデートをしたら、一時的にホーム画面が表示できなくなった件 (2021年12月)
ファームウエアをFire OS 5.3.6.4 (2018/11/13にアップデート) から Fire OS 5.6.9.0 にアップデートを行った。
手順は次の通り
1) Fire OS 5.3.6.4 の状態で adb shell 接続し、mtk_su の方法で一時的なルート権限を得る
2) OTAファームウエア アップデート用パッケージを再有効化する
$ pm enable com.amazon.kindle.otter.oobe.forced.ota $ pm enable com.amazon.kindle.otter.oobe $ pm enable com.amazon.device.software.ota $ pm enable com.amazon.device.software.ota.override3) タブレットで、設定 → 端末オプション → システムアップデート の画面を開き、「アップデート」ボタンを押す
一気に最新ファームウエアにアップデートされるわけではなく、1段階ずつ、何回もアップデート用パッチが適用され再起動を繰り返すことになる。
何度か再起動され、幾段階かファームウエアがアップデートされたところで、なんとホーム画面が表示できない、文鎮化してしまったことに気づいた。
mtk-suで得たルート権限を使い、Amazonホーム画面を無効化(pm disable com.amazon.firelauncher)していたため、アップデートされたカーネルでは mtk-su が阻止されて、Amazonホーム画面を有効化出来ないのだ。
更に詳細な原因としては、これまでcom.amazon.firelauncherだけだったホーム画面のパッケージが、新しいファームウエアではcom.amazon.paladinという新たなパッケージが追加され、これがcom.amazon.firelauncherを呼び出す形になっているようだ。
今回、運が良かったのはファームウエアを最新版までアップデートしたのち、24個のシステムパッケージのアップデートがあり、このパッケージのアップデートで運良くAmazonホーム画面のパッケージもアップデートが掛かり、有効化されたのだ。
もし、このパッケージアップデートがなければ、無理やりadb経由でサードパーティーのホーム画面を実行する必要があった。
$ adb shell am start -n com.sonymobile.home/.HomeActivity
4)再びOTAファームウエア アップデート用パッケージを無効化する
mtk-su でrootが取れる前の方法、com.amazon.unifiedsharefacebookの権限を使う方法で、pm hideが可能になるのを利用してパッケージを無効化する。
$ run-as com.amazon.unifiedsharefacebook $ pm hide com.amazon.kindle.otter.oobe.forced.ota $ pm hide com.amazon.kindle.otter.oobe $ pm hide com.amazon.device.software.ota $ pm hide com.amazon.device.software.ota.overrideなおこの方法では、ホーム画面を別のものに入れ替えても、ホームボタンを押すとfirelauncherが呼び出されてしまい「要求された操作は許可されていません。機能制限の設定を確認してもう一度お試しください」のダイアログが出て先に進めなくなる。
$ pm hide com.amazon.paladin
$ pm hide com.amazon.firelauncher
... 別のランチャーを実行してホームボタンを押すと ...
$ am monitor
>Monitoring activity manager... available commands:
>(q)uit: finish monitoring
>** Activity starting: com.amazon.firelauncher
pm disableでないと、完全にfirelauncherを無効化出来ないからだ。