L-05D(ビルド番号:JZO54K)でroot取得ができました。
・・・と言っても、自分で方法を見つけ出したわけではなく、他機種(L-04E)向けの方法を真似ただけです。
※言うまでもないですが、この方法を試される場合は自己責任でお願いします。root化をすると、端末の保証がなくなります。
※最後まで読んでから作業をした方がいいかも。
方法は http://android.slateblue.tk/viewtopic.php?f=23&t=136 に書いてある通りです。ただしdevice.dbの再ビルドは省略。
Android SDKなどの環境構築はできている前提で話を進めます。SDK導入方法はこちら。
5つのファイル(get_essential_address , disable_ccsecurity , install_backdoor , run_root_shell , device.db)を揃えて、コマンドから
adb push get_essential_address /data/local/tmp
adb push install_backdoor /data/local/tmp
adb push disable_ccsecurity /data/local/tmp
adb push run_root_shell /data/local/tmp
adb push device.db /data/local/tmp
adb shell chmod 755 /data/local/tmp/get_essential_address
adb shell chmod 755 /data/local/tmp/install_backdoor
adb shell chmod 755 /data/local/tmp/disable_ccsecurity
adb shell chmod 755 /data/local/tmp/run_root_shell
adb shell chmod 644 /data/local/tmp/device.db
adb shell /data/local/tmp/get_essential_address
adb shell /data/local/tmp/install_backdoor
adb shell /data/local/tmp/disable_ccsecurity
adb shell
$ /data/local/tmp/run_root_shell
を実行すれば、一時的にrootで操作できるようになります。
これはただrootでログインしているだけなので、再起動などすると消えます。2回目以降は、
adb shell /data/local/tmp/install_backdoor
adb shell /data/local/tmp/disable_ccsecurity
adb shell
$ /data/local/tmp/run_root_shell
だけで入れます。
あとは、
/data/local/tmp/busybox mount -o rw,remount /system
/data/local/tmp/busybox cp /data/local/tmp/busybox /system/xbin/
/data/local/tmp/busybox chmod +x /system/xbin/busybox
busybox cp /data/local/tmp/su /system/xbin/
busybox chown 0:0 /system/xbin/su
busybox chmod 6755 /system/xbin/su
mount -o ro,remount /system
でbusyboxとsuを/systemに送り込みます。
/systemのリマウントが普通にできちゃうところがイイですねw
次。
今回の場合、起動時にいくつかのコマンドを打てばrootが取れるので、それを自動化して恒久rootっぽくしよう・・・というのが、同類の他端末でよくある手法です。
ふつうのAndroidでは起動時に/system/etc/install-recovery.shのコマンドを実行することができるので、そこに書き込めばいいはずなのですが、残念ながらL-05Dではこの方法は使えません。
init.rcを見にいっても、起動時にshファイルを一切読み込んでいないので、init.rc自体を書き換える(つまりカーネルを弄る)必要が出てきます。
これはちょっと面倒ですし、僕のスキルではできませんので、別の方法でやってみます。
アプリ「Script Manager」を使って、起動後すぐにコマンドを実行するようにします。
起動時にrootを取っているわけではないので、恒久rootと違いかなり制約が大きいです(rootアプリの「起動時に設定」が使えない)。手動でコマンドを打つ手間を省くだけだと思ってください。
用意するのは、
・Script Manager
・ESファイルエクスプローラー(ファイルのOwnerを変更できるもの、コマンドでもOK)
・install-recovery.sh
install-recovery.shファイルは、自分で用意します(ファイル名は何でもいいです。拡張子はsh)。ファイルの中身は
#!/system/bin/sh
cd /data/local/tmp
/data/local/tmp/install_backdoor
/data/local/tmp/disable_ccsecurity
/data/local/tmp/install_backdoor -u
これを、文字コードUTF-8、改行コードLFで保存します。改行コード等指定する必要があるので、Windowsの場合はTeraPadでも使ってください。
あと神経質な人は、この時点でSuperSUなどインストールしておいてください。
これで下準備完了。install-recovery.shを、/data/local/tmpに置きます。何度も言いますが、ファイル名は何でもいいです。
ここでようやくアプリの出番。Script Managerを起動し、はじめの画面でrootでブラウザするよう設定します。
/data/local/tmpに移動。install-recovery.shを選択し、「Boot」にチェックを入れて「保存」します。
これで、このスクリプトが起動時に実行されます。・・・が、もう一手間。
まず、メニューキー→Advanced→設定 で、Browse as rootのチェックを外します。
次に、メニューキー→コンソール→Run shell でshellを起動します。
画像で赤線を引いた部分、僕の場合は「u0_a124」ですが、多分端末によって違います。
これをちょっと覚えておいてください。
これでScript Managerの出番はひとまず終了。
次に、パソコンのshellで、
chown u0_a124:u0_a124 /data/local/tmp/device.db
を実行します。ここで、さっき覚えた文字列を使っています。
何をしているかと言うと、device.dbのオーナーとグループを変えています。コマンドで打つ必要は別になくて、僕もESファイルエクスプローラーを使って変えました。
ESファイルなら、こうなります。
ここまで終わったら、端末を再起動してください。
起動後30秒くらいで、rootが取れると思います。
このラグがあるためいろいろと制約が出てくるのですが、とりあえずはうまくいきます。
とにかく作業終了です。
ここからは妄言です。
これで解説を終わります。
最後に、本来ならリンク元に報告とお礼を言うべきですが、僕自身あのフォーラムのアカウントを持っていないこともあり、この記事内での感謝で代えさせていただきます。ツール作成者さん、スレッドの投稿者さん、ありがとうございました。
//メモ
Device detected: L-05D (JZO54K)
Essential address are:
prepare_kernel_cred = 0xc00a2278
commit_creds = 0xc00a1d18
remap_pfn_range = 0xc01268a4
vmalloc_exec = 0xc01340a8
ptmx_fops = 0xc0d8a5a8
ありがとうございます
返信削除>chown u0_a124:u0_a124 /data/local/device.db
最後 /tmp が抜けています
指摘感謝です。今出先なので、明日以降修正しますm(__)m
削除記事修正しました。ありがとうございました。
削除ルート化できましたが、おサイフ機能やかざすクーポンといったFeliCaが使えなくなったのは私だけでしょうか?
返信削除僕はその機能を利用していないので確認できません(。>д<)
削除自己責任で解決なさって下さい。
root化だけでは問題ないようです。
削除テザリングのAPN強制変更ないようにXposedインストーラーでゴニョゴニョしたのがいけなかったようです
なるほどです。
削除追伸です。
削除Xposedインストーラーで簡易再起動でモジュール読ませるとFelica機能も使え、MVNOでのテザリングも可能でした。
通常の再起動かけるとFelica死ぬので、電源オフや再起動前には一度Xposedをアンインストールするという手間がかかりますが。
詳細ありがとうございます、理屈がイマイチわかりませんが、なかなか面倒ですねぇ(^^ゞ
削除いつも参考にさせて頂いています。
返信削除記事下部の"妄言"のことですが私も同じ現象になりました。記事通りの手順でroot化を行いしばらく使用していましたがScript Managerをアンイストールして再起動してもroot権限取得状態になってしまっています。さらに同じくWiFiを掴むことができなくなってしまいました。
その後何か分かった事がありましたらまた記事にしていただければ幸いです。
自分は"妄言"の通りWi-Fi周りも解決できちゃっているので、この件については放置かなぁと…
削除私もしばらくこのままで運用してみたいと思います。
削除ありがとうございました。
素晴らしい記事をありがとうございます。
返信削除私の端末はKYL21なのですが、この記事を参考にroot取得を試みました。
途中まで順調だったのですが、
/data/local/tmp/busybox mount -o rw,remount /system
を実行すると
mount: permission denied. (are you root?)
と表示されてしまい、次に進めなくなりました。
プロンプトが$→#に変わっていることから一時root化には成功していると思うので、自分では原因がわからず困っています。
原因・対処法が分かる方がいらっしゃれば是非アドバイスをお願いします。
rootを取っただけで/systemがrwでリマウントできるとは限りません。KYL21についてはさっぱり知らないので断定はできませんが、おそらくリマウントできない機種なのでしょう。他の方法をお試しください。
削除また、当サイトは知恵袋ではありませんので。不特定多数の方に回答を依頼することは以降ご遠慮くださいm(__)m
(もちろん僕以外に情報を持っておられる方のコメントをお断りするわけではありません)
匿名で失礼いたします。
返信削除L-04Eなのですが、コマンド上では#表示だったのですが端末で操作するとどうしてもrootが取れていない状態でした。
記事の通りアプリを使用したら再起動してもrootが取れていました。
とても参考になりました。ありがとうございます。
Titaniumも使用することができて良かったです。
L-04Eとはシブい端末をお持ちですね~!
削除参考になってなによりです。
hi minijumbo,
返信削除i need your help, i'am trying to root my L-05d but when i trigger this line "adb shell /data/local/tmp/get_essential_address" my phone get restart and after turning back on, next thing install_backdoor doesn't work.
thank you
Thank you for your comment.
削除I'm sorry but I don't know the reason.
However, get_essential_address only searches address and record it in device.db , does not rooting action, so maybe you can root your L-05D without executing get_essential_address .
I'm not convinced...but please try it↓
① "Push" this (http://ux.getuploader.com/ja12an/download/67/device.db) device.db
② Skip "adb shell /data/local/tmp/get_essential_address"
③ Do "adb shell /data/local/tmp/install_backdoor"
I have only this idea..so if it fails, please look for another way.
Forgive my poor English^^;