U+E000 私用領域

しがない緑茶好きのメモ的なの。

国産スマホをroot化するには 基本編

前々からまとめようと思ってたやつです。

今更感が凄まじいですが、国産スマホもroot取ってLSM解除できれば、chroot環境が動いて少しは使えるようになるんじゃないかと思ってるのでまとめます(希望的観測)

あと、この辺の情報って結構少ない上にあちこちに散らばってる感じがするので...

今回はとりあえず、root化の基本と、なぜ国産スマホはroot化しにくいのかをまとめます。

国産スマホのLSM解除の具体的な手法はまた後日...

前提

この記事は、以下の知識を前提として進んでいきます。

全くわからなくても雰囲気はつかめると思いますが、以下の知識があると、もっと楽しめると思います。

1.UNIX系基礎(基本的なコマンドと、権限。あとセキュリティ周り)

2.C言語を読む力

3.android基礎(adbだったりとか)

それから、root権限とroot化の違いは理解しておいてください。(そもそもroot化っていう言葉自体がおかしな気もしますが...)

じゃないと読んでいるうちに混乱してしまいます。(多分)

root化の基本

そもそもroot化ってなんなのか。という話からすすめます。

有志の方が作ったroot化アプリやGUIなPC用root取得ツールなんかが扱いやすいし多いので、root化って結局何をしているのかがわからなくなってしまいがちです。

基本的には/system/xbin以下にsuバイナリを送り込めば、root権限を使うアプリなんかは動いてくれます。

つまり、root化 = /system/xbinにsuバイナリを置く

みたいなイメージです。

で、これを実行するためには大きく分けて2つの方法があります。

1.ブートローダをアンロックし、カスタムリカバリを焼いてリカバリからsuバイナリを置く

2.脆弱性を突いて、root権限を奪取後、suバイナリを置く。

※他にも方法はありますが、今回は割愛します。

 

1は、ぱっと見難しそうですが、カーネルの手が届かないリカバリ領域に任意のイメージを焼いて、そこからsuを置く(最近はMagiskが普通になってきていますが、あれは仕組みが少し違うので...)イメージです。

海外製のスマホだったり、最近の一部の国産スマホはこの手法でroot取れます。

 

2は、脆弱性を使ってroot権限を奪取後、/systemを読み書き可能(rw)でリマウントして、/system/xbinにsuバイナリを置くというものです。

しかし1とは違って、カーネルによるプロテクトだったりが作用するので、あまりお手軽とはいえません。特に今回使う国産スマホは尚更です。

 

時々、SuperSuのアプリを入れるだけでroot化できると勘違いしている人を見かける事がありますが、SuperSuはあくまでもsuバイナリへのアクセスを制御するだけであって、suバイナリがないと動いてくれません(更新はしてくれますが)

国産スマホのroot化が難しいワケ

上で説明した通り、最近の国産スマホブートローダアンロック(以下BLUと記載)できるようになってきています。しかし、昔の(android 3.0〜7.1.1.くらい)国産スマホは基本的にBLUなんてできませんし、一部ではリカバリ非搭載。壊れたらショップに持っていくか捨てろ。みたいなのが多い印象です。おまけに性能もあまり良くない上に消せないプリインストールアプリと不具合が... と脱線してしまいましたが、つまるところrootを取るには"基本的に"上記の2の脆弱性を使ってroot化する方法しかありません。

脆弱性を使ってroot化というと、KingRootなんかのワンクリック系rootツールが有名ですし、成功例も多いです。

では、国産スマホで実行するとどうなるのか。

ほとんどの場合は失敗してしまいますし、うまくいっても再起動したら再実行しないといけなかったりします。

実際、某知恵袋なんかで、

<国産スマホ機種名>がroot化できません!
<国産スマホ機種名>のroot方法を教えてください!

みたいなのをよく見かけます。

実は、国産スマホには基本的にLSM(Linux Security Modules)が搭載されており、こいつがroot化を防いでいます。

KingRoot等のツールは脆弱性を使ってroot権限を奪取して、/systemを書き込み可能でリマウントしてsuバイナリを置く作業をしますが、root権限を奪取しようとしたり、/systemを書き込み可能でリマウントしようとしたらLSMが作動して、うまく作業が実行できないというわけです。なので、ワンクリック系ツールなんかで国産スマホはroot化できません。

しかもLSMはカーネルに組み込まれているため、root権限で簡単に解除できるものではありません。

試しに、KYY22で/systemを読み書き可でリマウントしてみます。(root権限は既に取ったものとします)

root@android:/ # id
uid=0(root) gid=0(root)
root@android:/ # mount -o rw,remount /system
mount: Operation not permitted

といった感じで、カーネルから拒否られます。

 

じゃあどうするんだって話は次回します。

流れの説明が終わったら、URBANO L02(KYY22)とMEDIAS ES(N-05D)を実際にLSM解除してみようと思います。

KYY22に関しては、魔界塔士氏が既にroot化していますが、今回はLSM解除まで話ができたらな...と。

N-05Dに関しては、おそらく私が初めてです。(ネットを見る限りは)

 

ブログを書くのって、こんなに大変なものなんですね...

 

<参考にさせていただいたサイト>

国産スマホのroot化手順について1(概要):魔界塔士のブロマガ - ブロマガ