2019年06月20日

FireHD10 たった2回のコピペとSuperSUアプリでroot化!?

今更ながら、root化する必要があるんですかねぇ?(?_?)

過去記事を見てもらえば分かりますが、Google Playが使えて、Novaランチャーを使えるようになって、GoogleFontsの日本語8書体+αも使えるようになりましたからね。

この後root化して何かメリットがあるのか?

メリット

・アプリやブラウザでの広告ブロックが出来る(AdAway)
・履歴一覧を管理しやすくなる(Recently)
・再起動やシャットダウンがアプリから行える(Quick Reboot)
・ターミナルアプリでsuコマンドが使える(Termux)

デメリット

・root化していると使えないアプリがある(Rec-On)

このメリットとデメリットから判断して、あたし的には、メリットの方が重要と考えました。

それよりも何よりも、あたしはsuが使えないと内部解析も改造も何もできないんで〜す!。(*´ω`)

では、始めましょう。(^^)/

名付けて「コピペ2回で簡単root化!?」

@必要なもの

Amazonの呪縛からの解放(準備編).pdf
・Google Playを使えるようにしておく
・kindle_fire_usb_driver.zipダウンロード、解凍しておく
 ADBを使用してFireタブレットに接続する
・adb-setup-1.4.3.exeのダウンロード、インストールしておく
 15 seconds ADB Installer v1.4.3
・mtk-su_r16.zipのダウンロード、解凍しておく
 Experimental Software Root for HD 8 & HD 10
・SuperSU-v2.82-201705271822.zipのダウンロード、解凍しておく
 XDA[STABLE][2017.05.27] SuperSU v2.82

A準備作業

・kindle_fire_usb_driver.zipをインストールして正常にパソコンとFireHD10がMTPファイル転送できることを確認しておく
・adb-setup-1.4.3.exeをインストールしてc:\adbをカレントドライブとして、パソコンからFireHD10にデバッグ接続できることを確認しておく
・mtk-su_r16.zipを解凍してArm64フォルダにある「mtk-su」をc:\adbにコピーしておく
・SuperSU-v2.82-201705271822.zipを解凍してArm64フォルダにある「su」と「supolicy」と「libsupol.so」をc:\adbにコピーしておく

c:\adbの内容

2019-06-20 (1).png

Broot化作業

コマンドプロンプトを起動して、下の枠内すべてをクリップボードにコピーして貼り付けます。

cd \adb
adb push mtk-su /data/local/tmp
adb push su /data/local/tmp
adb push supolicy /data/local/tmp
adb push libsupol.so /data/local/tmp
adb shell
cd /data/local/tmp
chmod 755 mtk-su
./mtk-su


実行結果は、

2019-06-20.png

この状態でUID/GID:0/0でプロンプト#に変わっていることを確認します。
(もしそうなっていなければ、そうなるまで「./mtk-su」の実行だけを繰り返します)

2019/10/11追記
仮のroot権限が取得できるのは Fire OS 5.6.4.0 build 636558520だけのようです。
最新のbuild 636559820では出来なくなったそうです。

下の枠内すべてをクリップボードにコピーして、コマンドプロンプトに貼り付けます。

mount -o remount -rw /system
cp /data/local/tmp/su /system/xbin/su
cp /data/local/tmp/su /system/xbin/daemonsu
cp /data/local/tmp/supolicy /system/xbin/
cp /data/local/tmp/libsupol.so /system/lib/
cp /data/local/tmp/libsupol.so /system/lib64/
chmod 755 /system/xbin/su
chcon u:object_r:system_file:s0 /system/xbin/su
chmod 755 /system/xbin/daemonsu
chcon u:object_r:system_file:s0 /system/xbin/daemonsu
daemonsu --auto-daemon

実行結果は、

2019-06-20 (3).png

仕上げにGoogle PlayからSuperSUをインストールして設定します。

Screenshot_2019-06-04-10-08-53.png

起動します。

Screenshot_2019-06-04-10-09-04.png

続行をタップします。

Screenshot_2019-06-04-10-09-54.png

通常をタップします。

Screenshot_2019-06-04-10-10-03.png

完了すると

Screenshot_2019-06-20-10-13-26.png

再起動するのが良いでしょう。

再起動したら、SuperSUを起動して、設定タブをタップします。

Screenshot_2019-06-04-10-11-57.png

既定のアクセス権をタップします。

Screenshot_2019-06-04-10-12-06.png

許可をタップします。

Screenshot_2019-06-04-10-12-16.png

既定のアクセス権が許可に変わりました。

これでroot化作業は完了です。

やるなら自己責任でお願いします。

以上、参考まで。


これより下は、おまけ!?(*´ω`*)


root化したら次に何をするか?

Kindle Fire HD 10
Screenshot_2019-06-05-17-11-53.png
Novaランチャーを使っています。

Google Playを活用するには?

FireHD10のデフォルトマーケットアプリはAmazonアプリストアになっています。

ブラウジングしている時にGoogle Playアプリへのリンクがあってそれをタップすると、標準状態では外部マーケットを開こうとしているとブロックされ「Amazonアプリストアで続行しますか?」と問われます。

block.png

続行してAmazonアプリストアに行っても期待通りの情報は得られません。

デフォルトマーケットアプリをGoogle Playに変更するにはAmazonアプリストアを無効にします。

Termuxというターミナルアプリを起動して、rootユーザーで次のコマンドでAmazonアプリストアを無効にできます。

su
pm disable com.amazon.venezia

venezia.png

ただしAmazonアプリストアを無効にすると、AlexaやAmazon関連の設定情報にアクセスしようとする場合には逆にブロックすることになるので、そういう場合は有効にする必要があります。

Termuxというターミナルアプリを起動して、rootユーザーで次のコマンドでAmazonアプリストアを有効にできます。

su
pm enable com.amazon.venezia

venezia2.png

Novaランチャーをフル活用するには?

FireHD10のデフォルトホームアプリはFireランチャーになっています。

Novaランチャーをデフォルトホームアプリに変更することは標準状態ではできません。

またNovaランチャーのホーム画面にウィジェットを配置することも出来ません。

これを解消するには

@Link2SDというアプリを使用してシステムアプリに変更します。

system.png

ATermuxというターミナルアプリを起動して、rootユーザーで次のコマンドでFireランチャーを無効にします。

su
pm disable com.amazon.firelauncher

fire.png

BTermuxというターミナルアプリを起動して、rootユーザーで次のコマンドでウィジェット配置権限を付与します。

su
appwidget grantbind --package com.teslacoilsw.launcher --user 0

widget.png

ウザい広告をブロックするには?

広告をブロックするには野良アプリのAdAwayが良いでしょう。

日本の広告をより多くブロックするにはホストリストに以下を追加しましょう。


広告削除が有料のアプリもありますが、実はアプリによってはこれで広告をブロックしてくれるものもあります。

Chromeで常にpcサイト表示するには?

スマートフォンやタブレットのChromeは動作の基本はスマートフォンモードで、PCサイト表示はオプションとなっています。

FireHD10の画面ではPCサイト表示をデフォルトにしたいのに毎回変更する必要があります。

Chrome UAというアプリを使用してユーザーエージェントを「Chrome Desktop」に偽装することで、Chromeブラウザをスマートフォン表示ではなくPCサイト表示で起動できるように出来ます。

ua.png

ナビゲーションバーの履歴ボタンを使い易くするには?

ナビゲーションバーの履歴ボタンでは起動したアプリが表示されますが、それらを削除するには一つ一つスワイプしなければなりません。

Recentlyというアプリを使えば、アプリ履歴を表示したときに一括削除出来るようになります。

Screenshot_2019-06-05-16-45-23 1.png

アプリから再起動するには?

FireHD10で再起動したいと思ったら電源ボタンを長押ししなければなりません。

再起動したい場面は意外に多いのでもっと簡単にソフト的に再起動したいものです。

Quick Rebootというアプリを使えば、簡単にシャットダウンや各種再起動が出来るようになります。

reboot.png

以上。(*´ω`)

あたしの必須のアプリ



SuperSUでroot権限を放棄したくなったら?

SuperSUでルート化していましたが、このルート権限を放棄するには、SuperSUアプリを起動して設定画面から行います。

Screenshot_2019-06-04-09-54-28.png

この画面の「ルート権限を放棄(アンルート)」をタップすると確認画面が出ます。

Screenshot_2019-06-04-10-23-07.png

この画面の「続行」をタップすると完了です。

念のために再起動して/system/xbinの中身を確認してみました。

ルート権限放棄前
shell@suez:/data/local/tmp # ls -l /system/xbin
-rwxr-xr-x root shell 736336 2019-03-29 12:50 chkufsd
-rwxr-xr-x root root 75352 2019-05-31 15:52 daemonsu
-rwxr-xr-x root shell 63880 2019-03-29 12:50 dexdump
-rwxr-xr-x root shell 247776 2019-03-29 12:50 iwpriv
-rwxr-xr-x root shell 736336 2019-03-29 12:50 mkexfat
-rwxr-xr-x root shell 13592 2019-05-31 15:49 pidof
-rwxr-xr-x root shell 13856 2019-03-29 12:50 showmap
-rwxr-xr-x root shell 66440 2019-03-29 12:50 sqlite3
-rwxr-xr-x root shell 1481 2019-03-29 12:50 start-ufsd
-rwxr-xr-x root root 75352 2019-05-31 15:52 su
-rwxr-xr-x root root 75348 2019-05-31 15:49 sugote
-rwxr-xr-x root root 42404 2019-05-31 15:52 supolicy
-rwxr-xr-x root shell 791716 2019-03-29 12:50 test_system
-rwxr-xr-x root shell 13784 2019-03-29 12:50 trapz
-rwxr-xr-x root shell 87824 2019-03-29 12:50 vitals_collection_agent

root権限放棄後
shell@suez:/data/local/tmp # ls -l /system/xbin
-rwxr-xr-x root shell 736336 2019-03-29 12:50 chkufsd
-rwxr-xr-x root shell 63880 2019-03-29 12:50 dexdump
-rwxr-xr-x root shell 247776 2019-03-29 12:50 iwpriv
-rwxr-xr-x root shell 736336 2019-03-29 12:50 mkexfat
-rwxr-xr-x root shell 13592 2019-05-31 15:49 pidof
-rwxr-xr-x root shell 13856 2019-03-29 12:50 showmap
-rwxr-xr-x root shell 66440 2019-03-29 12:50 sqlite3
-rwxr-xr-x root shell 1481 2019-03-29 12:50 start-ufsd
-rwxr-xr-x root shell 791716 2019-03-29 12:50 test_system
-rwxr-xr-x root shell 13784 2019-03-29 12:50 trapz
-rwxr-xr-x root shell 87824 2019-03-29 12:50 vitals_collection_agent

これで、要rootアプリは使用できなくなりました。

root化するのも、ルート権限を放棄するのも簡単ですね。


もしFireロゴループに陥ってしまったら?

Fireロゴループとは?

20190420_122239.jpg

この画面がずぅ〜っと続いて起動しない状況をいいます。

こうなったら諦めて、初期化しましょう。(^^)/

電源ボタンを長押ししてシャットダウンします。

電源ボタンとボリュームアップボタンを同時に押して、amazonのロゴが表示されたら手を放します。

そうするとリカバリーモードで起動します。

20190412_160734.jpg

項目の移動には音量+-ボタンを使います。決定は電源ボタンです。

パソコンで、アマゾンサイトから最新のアップデート(update-kindle-40.6.3.6_user_636558520.bin)をダウンロードしておきます。

ダウンロードしたファイルはadbコマンドをインストールしたc:\adbに入れておきます。

最初にwipe data/factory resetを実行します。

次に念のために、wipe cache partitionを実行します。

最後にapply update from adbをを実行します。

この状態でパソコンとつないで、次のadbコマンドを投入します。

adb sideload update-kindle-40.6.3.6_user_636558520.bin

20190524_161704.jpg

終了したら、reboot system nowを実行します。

20190524_161829.jpg

しばらく時間はかかりますが...

最終的には、root化の痕跡すら残っていない工場出荷状態に復活します。
posted by 62歳のガジェットオタク!? at 01:06| 山口 | Comment(4) | KindleFireHD10 | このブログの読者になる | 更新情報をチェックする

2019年06月19日

FireHD10 解明されてこなかったフォント変更の謎を暴いてみた!?

Kindle Fire HD 10のフォント変更に関するXDAでの話題は極めて少なく、その少ない情報にしてもFireロゴループを招く(リカバリーモードから起動して最新アップデートをsideload※1する以外に復旧する手段の無い)いい加減な情報だけでした。

※1 sideloadとは、アプリケーションストアを通じてアプリの配布や管理を行っているシステムにおいて、正規のアプリケーションストアを経由せずにファームウェアを直接入手してインストールすることを意味する。

あたしは3度もその情報に踊らされました。(*´Д`)

そんな中、老体に鞭を打ちながら調べ続けてみると、2か月近くかかってようやくその闇に光を当てることができました。

本日はその情報のお披露目です。(^^)/

fontsの闇に隠されたものとは(^^)↓

・/system/fontsというフォルダは/mnt/sqfs/fontsにシンボリックリンクされている*2
・/mnt/sqfsは/dev/block/loop0をsquashfsとしてマウントしている*3
・/mnt/sqfs/fontsというフォルダは/system/sqfs/container.sqfsをマウントしたもの
・container.sqfsとは圧縮された読み取り専用のSquashFSイメージである
・つまりは/dev/block/loop0というのはcontainer.sqfsそのものか!?

※2 「ls -l /system」で容易に確認できます。
※3 「cat /proc/mounts」で確認できます。

これだけわかればフォント変更は可能です。(*^-^*)

簡単にフォント変更できるようにしてみました。(^^)↓

Gothic->Mincho->Gothicに変更する動画です。

フォント変更の詳細は下記をご覧ください。(^^)↓

@SquashFSって何か?
ASquadhFSを扱える環境を構築する
Bcontainer.sqfsの内部を知る
C好みのfontsにした世界に一つだけの新container.sqfsを作る
D新container.sqfsを本体に組込む

@SquashFSって何か?

Wikipediaによると?

SquashFS (.sfs) はLinux向けの 圧縮された読み込み専用ファイルシステムである。SquashFSはファイル、inodeとディレクトリを圧縮し、高圧縮のためブロックサイズを1024KBまでサポートする。SquashFSファイルシステムにアクセスするための(GPLでライセンスされた)フリーソフトウェアもSquashFSと呼ばれる。
SquashFSは低いオーバーヘッドが要求され、ブロックデバイスやメモリの制限が厳しい(組み込みシステムのような)システムを対象とした汎用読み取り専用ファイルシステムである。SquashFSにLZMA圧縮をもたらすプロジェクトもあるが、標準的なバージョンのSquashFSはgzip圧縮を使っている。

Kindle Fire HD 10では、fontsフォルダ以下に100個を超えるフォントファイルを擁するSquashFSとして実装しています。

container.sqfs自体は、単純に考えればfontsフォルダを圧縮したもので、フォントを追加・削除するには直接は出来ないので、ファイルシステムとして復元してその中にフォントを追加・削除して新たにSquashFSとして作成することになります。

ASquadhFSを扱える環境を構築する

LinuxターミナルとしてはTermuxとUserLandが使えそうですが、Termuxには「mksquashfs」も「unsquashfs」も存在しないし、「squashfs-tools」というパッケージも提供されていないので、必然的にUserLandをインストールしてLinuxディストリビューションの「Debian」をインストールして「squashfs-tools」というパッケージを追加して使うようになります。

ではUserLandというアプリをGoogle Playからインストールして操作環境を整えましょう。

UserLand.png

起動画面です。

Screenshot_2019-06-09-09-35-56.png

上から3番目のDebianをタップしてダウンロードと環境設定を開始します。

login.png

ユーザー名とパスワードを入力してcontinueで続けます。

ssh.png

SSHでcontinueで続けます。

ログインしたら以下のコマンドを投入します。

sudo apt update」パッケージの更新リストを取得
sudo apt upgrage」パッケージをアップデート
date」日付確認
sudo dpkg-reconfigure tzdata」タイムゾーンの再設定
6」アジア
79」東京

Screenshot_2019-06-09-09-55-04.png

では、SquashFSツールをダウンロードします。

sudo apt install squashfs-tools

ttol.png

以上で「mksquashfs」と「unsquashfs」コマンドが使えるようになります。

Bcontainer.sqfsの内部を知る

UserLandのDebianからホストマシンであるKindle Fire HD 10のファイルシステムにアクセスするには、/host-rootfsからアクセスできますし、/sdcardからは直接内部ストレージのダウンロードフォルダにアクセスできます。

container.sqfsを解析するには、UserLandを起動して、/host-rootfs/system/sqfs/container.sqfsをカレントフォルダにコピーします。

sudo cp /host-rootfs/system/sqfs/container.sqfs .
ls -l

ls.png

unsquashfsコマンドを使ってcontainer.sqfsがどんなイメージなのかを教えてもらいましょう。

sudo unsquashfs -s container.sqfs

03.png
この情報から分かることは?

・SQUASHFS 4:0の有効なスーパーブロックである
・最終更新日時は、Thu May 16 01:30:14 2019
・ファイルサイズは、87026.97 Kbytes (84.99 Mbytes)
・圧縮形式は lz4で、高圧縮オプション-Xhcが指定されている
・ブロックサイズは、32768
・ファイルシステムはNFS経由でエクスポート可能
・iノードは圧縮されている
・データは圧縮されている
・fragmentsは圧縮されている
・always-use-fragmentsオプションが指定されていない
・Xattrは圧縮されている
・重複が削除された
・fragmentsの数は、18
・inodesの数は、164
・idsの数は、1

ということで、ヘルプ情報(mksquashsf -help)から判断すると?

container.sqfsと同じ形式でSquashFSイメージを作成するには、-compと-bと-all-rootと-Xhcを指定する必要があることが分かります。

C好みのfontsにした世界に一つだけの新container.sqfsを作る

ではcontainer.sqfsを復元します。

sudo unsquashfs container.sqfs
ls -l

002.png

カレントフォルダにsquashfs-rootというフォルダが出来て、その中にはfontsというフォルダがあり、その中にたくさんのフォントが復元されていることが分かります。

削除して良さそうフォントは次の通りです。

STBShusongRegular.ttf
STShusongBold.ttf
TsukuMinPr5-Bold.ttf
TsukuMinPr5-Medium.ttf
NotoSansJP-Regular.otf
DroidSansFallback.ttf
合計57.8MBを削除

どうしてこれらを削除して良いと思ったか?

・ST*.ttfとTsukuMinPr5-*.ttfは、そもそもfonts.xmlでは使用されていない
・NotoSansJP-Regular.otfはMediumを代用する
・DroidSansFallback.ttfは中華フォントだから

あたしの場合はGoogle Fontsの日本語正式サポート8書体とあおぞら明朝を追加しました。

AozoraMincho-bold.ttf
AozoraMinchoMedium.ttf
KosugiMaru-Regular.ttf
Kosugi-Regular.ttf
MPLUS1p-Bold.ttf
MPLUS1p-Medium.ttf
MPLUSRounded1c-Bold.ttf
MPLUSRounded1c-Medium.ttf
NotoSansJP-Bold.otf
NotoSansJP-Medium.otf
NotoSerifJP-Bold.otf
NotoSerifJP-Medium.otf
SawarabiGothic-Regular.ttf
SawarabiMincho-Regular.ttf
合計53.6MBを追加

削除と追加が終わったら、次のコマンドでフォントのパーミッションを変更しておきましょう。

sudo chmod 644 squashfs-root/fonts/*

世界にひとつのnewcontainer.sqfsを作成するには次のコマンドを叩きます。

sudo mksquashfs squasfs-root newcontainer.sqfs -comp lz4 -Xhc -b 32768 -all-root

new.png

newcontainer.sqfsが作成されました。

ここで気を付けるのは、container.sqfsはファイルシステムsquashfsとしてリードオンリーでマウントされていたということ。

少なくとも、オリジナルのcontainer.sqfs以下のサイズにして置き換えるのが安全だと思いますよ。

D新container.sqfsを本体に組込む

UserLandのDebianで作成したnewcontainer.sqfsは、/sdcard/downloadなどにコピーして置きましょう。

sudo cp newcontainer.sqfs /sdcard/download

これで後はパソコンとデバッグ接続してadbから置換え作業を行います。

・kindle_fire_usb_driver.zipダウンロードサイト。
・adb-setup-1.4.3.exeのダウンロードサイト
・mtk-su_r16.zipのダウンロードサイト

・adbはc:\adbにインストールし、そこにmtk-su_r16.zipを解凍したarm64フォルダ内のmtk-suを入れておく。

cd \adb
adb devices
接続を確認したら
adb push mtk-su /data/local/tmp
adb shell
cd /data/local/tmp
chmod 755 mtk-su
./mtk-su
UID=0を確認したら
mount -o remount -rw /system
rm /system/sqfs/container.sqfs
cp /sdcard/download/newcontainer.sqfs /system/sqfs/container.sqfs
chmod 644 /system/sqfs/container.sqfs
ls -l /system/sqfs/container.sqfs
きちんとファイルの存在とパーミッションを確認したら
reboot

これでcontainer.sqfsの置換えは完了です。

フォントの変更は/system/etc/fonts.xmlを編集して差し替えます。

Android 5.1のフォントを決定しているのは、/system/etc内に存在する「fallback_fonts.xml」と「fonts.xml」かとか云われてきましたが、Kindle Fire HD 10(2017以降)の日本語設定に関しては影響するのは「fonts.xml」だけでした。

具体的には?
<family lang="ja">
<font weight="400" style="normal">NotoSansJP-Regular.otf</font>
<font weight="300" style="normal">NotoSansJP-Light.otf</font>
</family>
<family lang="ja">
<font weight="400" style="normal">MTLmr3m.ttf</font>
</family>
だけでした。

赤字部分のフォント名を使いたいものに変えるだけです。

編集したものをnewfonts.xmlとしたら

adbツールはc:\adbに、そこにArm64のmtk-suとnewfonts.xmlを入れているものと仮定します。

cd \adb
adb devices
接続を確認したら
adb push mtk-su /data/local/tmp
adb push newfonts.xml /data/local/tmp
adb shell
cd /data/local/tmp
chmod 755 mtk-su
./mtk-su
UID=0を確認したら
mount -o remount -rw /system
rm /system/etc/fonts.xml
cp newfonts.xml /system/etc/fonts.xml
chmod 644 /system/etc/fonts.xml
ls -l /system/etc/fonts.xml
きちんとファイルの存在とパーミッションを確認したら
reboot

これでfonts.xmlの置換えは完了です。

やるなら自己責任でお願いします。

以上、参考まで。

posted by 62歳のガジェットオタク!? at 01:23| 山口 ☁| Comment(0) | KindleFireHD10 | このブログの読者になる | 更新情報をチェックする

2019年06月18日

FireHD10 GoogleFontsの日本語正式サポート8書体+αを搭載して簡単にシステムフォントに置換えるツールが完成した!?

GoogleFontsの日本語正式サポート8書体+αとは?

2019-06-18.png

・KosugiMaru
・Kosugi
・MPLUS1p
・MPLUSRounded1c
・NotoSansJP
・NotoSerifJP
・SawaragiGothic
・SawaragiMincho
+
・AozoraMincho(これが一番のお気に入り(*´▽`*))

これらをKindle Fire HD 10で実装して、好きなフォントをシステムフォントにするツールを作成しました。

Gothic->Mincho->Gothicに変更する動画です。

本体をroot化する必要はありません。

ファイルは「SetFonts.zip」。
(アップロード先は検討中です。(^^;)

ダウンロードしたファイル(/sdcard/download)で「ここに解凍」すると「fonts」というフォルダの中に「setfonts.sh」というひとつのスクリプトと「fonts_xml」と「sqfs」という2つのフォルダが出来ます。

Screenshot_2019-06-18-15-44-28.png
setfonts.zipのサイズは最終的には75.458MB、ここに解凍するとfontsというフォルダが現れる。

Screenshot_2019-06-18-15-38-57.png
setfonts.shというシェルスクリプトが今回の目玉。

Screenshot_2019-06-18-15-39-29.png
GoogleFonts日本語8書体+αを組み込んだイメージファイル。


Screenshot_2019-06-18-15-39-48.png
フォントごとに作成したfonts.xml。

パソコンとADB接続して、mtk-suで一時的なroot権限を取得したら、「sh setfonts.sh」とコマンドを投入して簡単な質問に答えるだけのツールです。

では、実際に使った時のログを見てもらいましょう。(^^)↓

shell@suez:/sdcard/download/fonts # sh setfonts.sh⏎
Welcome to SetFonts.sh

Select Font No.
1 AozoraMincho
2 KosugiMaru
3 Kosugi
4 MPLUS1p
5 MPLUSRounded1c
6 NotoSansJP
7 NotoSerifJP
8 SawaragiGothic
9 SwarakiMincho
1⏎
mount -o remount -rw /system
rm /system/etc/fonts.xml
cp fonts_xml/fonts_AozoraMincho.xml /system/etc/fonts.xml
chmod 644 /system/etc/fonts.xml
-rw-r--r-- root root 22757 2019-06-18 15:04 fonts.xml
Do you want to reboot? (y/n)
y
C:\adb>

キーボードを叩いたのは、「sh setfonts.sh⏎」と「1⏎」と「y⏎」だけです。

ちなみに、フォントイメージ(container.sqfs)を置換える必要がある時は、フォント選択の前にイメージを置換えるか聞いてくるので、「y⏎」とするだけです。

Replace Mine Fonts-image(container.sqfs) (y/n)?
y⏎
Select Font No.
1 AozoraMincho
2 KosugiMaru
3 Kosugi
4 MPLUS1p
5 MPLUSRounded1c
6 NotoSansJP
7 NotoSerifJP
8 SawaragiGothic
9 SwarakiMincho

完全自動化!?して一瞬の作業なので、リスクは極限まで抑えられたか!?

setfonts.shの設計条件(^^)↓

・このスクリプトを起動したユーザーがroot(UID=0/GID=0)かチェックして、それ以外は処理を中止します。
・/system/sqfs/container.sqfsのファイルサイズをみて、オリジナルのものかここで提供したものかを判断しています。
 オリジナルのものであれば"Replace Mine Fonts-image(container.sqfs) (y/n)?"と質問して、
 yまたはYであれば、sqfsフォルダにcontainer.sqfsがあるか確認して、無いなら処理は中止します。
 yまたはY以外は使う気が無いと判断して処理を中止します。
 オリジナルでもここで提供したサイズでもなければ処理を中止します。
・フォント名を1から9から選択してもらいます。
 1〜9以外は処理を中止します。
・選択したフォントに対応するfonts.xmlがfonts_xmlフォルダにあるかチェックして、無ければ処理を中止します。
・/systemをリマウントして書込み出来る様にします。
・/system/sqfs/container.sqfsを置換える指定があれば置換えます。
・/system/etc/fonts.xmlを置換えます。
・最後にイメージとxmlの存在とパーミッションが確認できるようにして、リブートするか問い合わせます。

そんなツールを作成しましたが、使う人はいるかな?(*´ω`*)

P.S.
・kindle_fire_usb_driver.zipダウンロードサイト。
・adb-setup-1.4.3.exeのダウンロードサイト
・mtk-su_r16.zipのダウンロードサイト

・adbはc:\adbにインストールし、そこにmtk-su_r16.zipを解凍したarm64フォルダ内のmtk-suを入れておく。

たったそれだけで世界が変わる!?

実際の操作ログは以下の通り。(赤字がタイプしたもの)

Microsoft Windows [Version 10.0.17763.557]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\nscka>cd \adb
C:\adb>adb devices
List of devices attached
G000N60791340D48 device

C:\adb>adb push mtk-su /data/local/tmp
5938 KB/s (30464 bytes in 0.005s)
C:\adb>adb shell
shell@suez:/ $ cd /data/local/tmp
shell@suez:/data/local/tmp $ chmod 755 mtk-su
shell@suez:/data/local/tmp $ ./mtk-su -v
param1: 0x1000, param2: 0x8040, type: 9
Building symbol table
kallsyms_addresses pa 0x40aa4700
kallsyms_num_syms 66790, addr_count 66790
kallsyms_names pa 0x40b27000, size 832894
kallsyms_markers pa 0x40bf2600
kallsyms_token_table pa 0x40bf2f00
kallsyms_token_index pa 0x40bf3300
Patching credentials
init_task VA: 0xffffffc000e3a960
Potential list_head tasks at offset 0x368
0xffffffc020120368 0xffffffc031083168 0x000000000000008c
comm swapper/0 at offset 0x5e0
Found own task_struct at node 0
real_cred VA: 0xffffffc0672b9380
Parsing avc_denied
ffffffc00027629c+20: ADRP x0, 0xffffffc000f46000
ffffffc00027629c+24: LDR [x0, 2116]
selinux_enforcing VA: 0xffffffc000f46844
Setting selinux_enforcing
Selinux is already permissive
New UID/GID: 0/0
starting /system/bin/sh
shell@suez:/data/local/tmp # cd /sdcard/download/fonts
shell@suez:/sdcard/download/fonts # sh setfonts.sh
Welcome to SetFonts.sh
Replace Mine Fonts-image(container.sqfs) (y/n)?
y
Select Font No.
1 AozoraMincho
2 KosugiMaru
3 Kosugi
4 MPLUS1p
5 MPLUSRounded1c
6 NotoSansJP
7 NotoSerifJP
8 SawaragiGothic
9 SwarakiMincho
2
mount -o remount -rw /system
rm /system/sqfs/container.sqfs
cp sqfs/container.sqfs /system/sqfs
chmod 644 /system/sqfs/container.sqfs
-rw-r--r-- root root 87707648 2019-06-18 16:35 container.sqfs
rm /system/etc/fonts.xml
cp fonts_xml/fonts_KosugiMaru.xml /system/etc/fonts.xml
chmod 644 /system/etc/fonts.xml
-rw-r--r-- root root 22758 2019-06-18 16:35 fonts.xml
Do you want to reboot? (y/n)
y
C:\adb>

その直後にYahoo!を表示してみた。

Screenshot_2019-06-18-16-39-58.png
これが2 KosugiMaru。

ちょっとした解説(*´ω`)↓

container.sqfsとはSquashFS。
SquashFSとは、Linux向けの 圧縮された読み込み専用ファイルシステムである。
Kindle Fire HD 10では、fontsフォルダを圧縮した読み込み専用ファイルシステム。
オリジナルから削除したフォントは絶対に使われないフォント(fonts.xmlに記述無し)を基本とした。

fonts.xmlの変更部分は"ja"で探せばすぐに見つかる。
weightは400と700、フォントはMediumとBoldのみを格納。

ちょっとした便利技(*^^)↓

FireHD10をroot化している人は、fonts内のものすべてをTermuxのホームフォルダーにコピーしておくと便利ですよ。
su
sh setfonts.sh
これだけで簡単にフォントを切り替えられます。

posted by 62歳のガジェットオタク!? at 18:04| 山口 ☁| Comment(1) | KindleFireHD10 | このブログの読者になる | 更新情報をチェックする

2019年06月17日

FireHD10 アプリを無効化するのにroot化も必要無いし、パソコンとつなぐ必要も無い!?

例えば、天気アプリを無効化する場合を考えてみましょう。

事前準備は?

・Google Playからファイルマネージャーをダウンロードしてインストールします。

Screenshot_2019-06-17-15-43-04.png

・Google PlayからTermuxをダウンロードしてインストールします。

Screenshot_2019-06-17-15-43-14.png

こちらのサイトの中央あたりからmtk-su_r16.zipをダウンロードします。

Screenshot_2019-06-17-15-44-08.png
Kindle Fire HD 10は、SoC(System-on-a-Chip)にMediatekのMT8173を搭載していますが、このMT817xに脆弱性があることが発見されているそうで、この脆弱性を利用したツールを実行することで、一時的なroot権限を取得できます。

では、始めましょう。

@ファイルマネージャーを起動して、ダウンロードフォルダにあるmtk-su.r16.zipを解凍します。

 Screenshot_2019-06-17-14-34-31.png

 ダウンロードアイコンをタップします。

 Screenshot_2019-06-17-14-34-52.png

 mtk-su_r16.zipを長押しして、右下の解凍をタップします。

 Screenshot_2019-06-17-14-35-01.png

 mtk-su_r16に解凍するをタップします。

 Screenshot_2019-06-17-14-35-11.png

 これで解凍完了です。

ATermuxを起動して、カレントフォルダにmtk-suをコピーします。
 cp /sdcard/download/mtk-su_r16/arm/mtk-su .

Bmtk-suに実行権を付与します。
 chmod 755 mtk-su

Cmtk-suを実行して一時的にroot権限を取得します。
 ./mtk-su -v

 プロンプトが#になればroot権限を一時的に取得できました。
 これはUID(user id)/GID(group id)が0(root)/0(root)になっているからで、時にそうならない場合があるので、その時はもう一度mtk-suを実行します。

D天気アプリを無効化します。
 pm disable com.amazon.weather

 元に戻すには
 pm enable com.amazon.weather

Screenshot_2019-06-17-14-39-07.png

どのアプリを無効化するかなどは、こちらのサイトの情報を参考にしても良いでしょう。

root化することも無し、パソコンとつなぐことも無しで、アプリを無効化できました。

以上、参考まで。

P.S.
Termuxからmtk-suを起動して一時root権限を取得する場合、パソコンとデバッグ接続してadbのshellからmtk-suを起動する場合とは、大きな違いがあります。

Termuxから起動した場合の環境変数を確認すると分かりますが、PATHはあくまでもTermux環境内に通っているし、シェルは/data/data/com.termux/files/user/bin/bashとなっています。

mountコマンドなどにはPATHが通っていないので/system以下を誤って変更する可能性は非常に少ないです。

mtk.png

なので、一時的root権限を取得してroot化したり、/system以下に変更を加えるには、パソコンとつなぐことになります。

ただそれだけのこと。



posted by 62歳のガジェットオタク!? at 00:00| 山口 ☀| Comment(0) | KindleFireHD10 | このブログの読者になる | 更新情報をチェックする

2019年06月13日

FireHD10 Fireランチャーからのパワハラ・セクハラ問題を解消した!?

Kindle Fire HD 10を2台持ちしていますが、1台はroot化しないで使ってきたんですけど、これまでFireランチャーからのパワハラ・セクハラに悩まされ続けてきました。(*´ω`)

Fireランチャーのパワハラ・セクハラとは?

あたしは時々18禁の漫画や写真集を、本当にたま〜にですけど!?観たりするんですけど、その後でFireランチャーは無情にもおすすめメニューや本メニューを表示して、見てしまった本の表紙をこれでもかと表示してくるんです。

(*´Д`)やめて!

あんたはこんなもの読んでるよ!?って感じ。

あたし一人でFireHD10を使うのなら良いんだけど、奥方様だったり孫だったりが画面を開いた時にそんなものが表示されたらどう思われることか!?

これは、Fireランチャーによるパワハラでありセクハラだと思いませんか?

だから、人に見られないように注意しないといけません。(*´ω`)

この問題を解消するには?

追加のランチャーをンストールしてLauncherHijackというものを使っても、一瞬表示されることもしばしばあるのでこれはダメです。

ではroot化すれば良いか?

Rec-Onなどのユーザーの利便性を無視して開発されたアプリはroot化してしまうと使えなくなるのでroot化するのも駄目ですね。

なのでroot化することなく、Novaランチャーをシステムアプリ化して、Fireランチャーを無効化する必要があります。

では、どうやって解消したか?

Fire HD 10搭載のSoC(MT8173)の脆弱性を利用したmtk-suを使用して、一時的にroot権限を取得してNovaランチャーをシステムアプリ化して、Fireランチャーを無効化しました。

そのついでに、Novaランチャーでウィジェット配置許可も行いました。

具体的には?

以下の作業前に、/systemをリマウントして書き込みできるようにします。
その後/data/app/com.teslacoilsw.launcher-1というフォルダをまるごと/system/priv-appにコピーした後、フォルダ名をcom.teslacoilsw.laluncherにして、アクセス権を755に変更します。
その下にあるbase.apkというファイルのアクセス権を644に変更します。
libというフォルダのアクセス権を755に変更します。

adb push mtk-su /data/local/tmp
adb shell
cd /data/local/tmp
chmod 755 ./mtk-su
./mtk-su
UID/GID:0/0でプロンプトが#になったことを確認(ならなければもう一度./mtk-su)
mount -o remount -rw /system
cp -r /data/app/com.teslacoilsw.laluncher-1 /system/priv-app/com.teslacoilsw.launcher
chmod 755 /system/priv-app/com.teslacoilsw.launcher
chmod 644 /system/priv-app/com.teslacoilsw.launcher/base.apk
chmod 755 /system/priv-app/com.teslacoilsw.launcher/lib


しっかりとパーミッションも確認しておきましょう。

Screenshot_2019-06-13-17-31-41.png

そしてリブートします。

reboot

リブート後にシステムを変更しています、みたいなちょっと心配なメッセージは出ますが心配は無いです。

これで、Novaランチャーがシステムアプリになりました。!(^^)!

最後に、Fireランチャーを無効、ウィジェット配置を許可します。

adb push mtk-su /data/local/tmp
adb shell
cd /data/local/tmp
chmod 755 ./mtk-su
./mtk-su
UID/GID:0/0でプロンプトが#になったことを確認(ならなければもう一度./mtk-su)
pm disable com.amazon.firelauncher
appwidget grantbind --package com.teslacoilsw.launcher --user 0 

正常にパワハラ・セクハラから解消されたかどうかの判断は?

Novaランチャーのホーム画面を長押しして、設定ボタンから設定画面を表示した時に、デフォルトホームアプリの選択というところが「Lova Launcher」になっていれば、Fireランチャーの支配下からは外れています。

Screenshot_2019-06-13-17-25-20.png

本当にシステムアプリとして認識されているかは、Link2SDというアプリで確認できます。

Novaランチャー部分を長押しすると?

Screenshot_2019-06-13-17-24-55.png

システムアプリになっているからこそ、ユーザーアプリにするかと問われますよ。

これで、意地悪なFireランチャーからは解放されました。

やったぁ!(*´▽`*)!

やってみるのは自己責任でお願いします。

以上、参考まで。
posted by 62歳のガジェットオタク!? at 22:21| 山口 ☁| Comment(0) | KindleFireHD10 | このブログの読者になる | 更新情報をチェックする