2014/04/18

G2 L-01Fのroot化

※現在は純正カーネル環境の11kでもrootkitで恒久root取得可能に。

そのため下記の方法を取らずとも簡単にroot権限取得することが出来ますが一応残しておきます。

以前購入したL-01Fですがroot権限取得が可能ということで早速試してみることにしました。


現在はrootkitも存在しており簡単にroot化出来るようですが今回はL-05Dの場合と同様にgitから取得したソースをコンパイルしながら行ってみたいと思います。

・各種開発環境(AndroidSDK、git及びAndroidNDK)
・busybox、su
・各アプリのapk(予め別端末のESファイルマネージャのアプリバックアップ機能で作成)
→ESファイルマネージャ、ScriptManager、SuperSU
・L-01Fの提供元不明のアプリ及びデバッグモードにチェックを入れておく

注意
・以下の手順は私がうまく出来た際のものを記述したものです。うまくいかない、端末が起動しなくなったなど何かあっても責任は負いかねますので自己責任で行って下さい。
・busybox、suはSH-06Eのrootkitに付属していたものを流用、不具合はありませんでした。
・ビルド番号JDQ39B、ソフトウェアバージョンL01F11kで行っています。

手順1
・コマンドプロンプトで以下の各コマンドを実行し、gitから必要なファイルをダウンロードする。

git clone --recursive https://github.com/scoty755/backdoor_mmap_tools.git
git clone --recursive https://github.com/scoty755/android_run_root_shell.git
git clone --recursive  https://github.com/android-rooting-tools/android_get_essential_address.git

これで
android_get_essential_address
backdoor_mmap_tools
android_run_root_shell
というフォルダが自分がいる階層に保存される。

手順2
・android_get_essential_addressフォルダへ移動。コマンドプロンプトを開き以下のコマンドを実行してAndroidNDKでビルドする。

ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk

・同様にbackdoor_mmap_toolsとandroid_run_root_shelフォルダ上でも上記のコマンドを実行する。
・各フォルダにlibsというフォルダが作成され、更にその中のarmeabiというフォルダに以下のファイルが保存されているのでわかりやすいように別のフォルダへ抜き出しておく。

<android_get_essential_address>
libs→armeabiにget_essential_address
及びdevice_databaseフォルダ内にあるdatabase.db

<backdoor_mmap_tools>
ibs→armeabiにdisable_ccsecurityとinstall_backdoor

<android_run_root_shell>
ibs→armeabiにrun_root_shell

これで必要な5種類のファイル
get_essential_address
device.db
install_backdoor
disable_ccsecurity、
run_root_shell
が取得出来た。わかりやすいように1つのフォルダにまとめる。さらに、

busybox
su
ESファイルマネージャ
ScriptManager
SuperSU
も同一のフォルダにまとめ以後その階層で作業する。

手順3
・以下のコマンドを実行する。

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 push busybox /data/local/tmp
adb push su /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 755 /data/local/tmp/busybox
adb shell chmod 755 /data/local/tmp/su
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

・以下のコマンドを実行し(一時的な)root権限で入る。

adb shell
 /data/local/tmp/run_root_shell

・更に以下のコマンドを実行しbusyboxとsuをsystemに配置する。

/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

これでroot化出来たが再起動すると元に戻ってしまうので対策をする。

手順4
・前の手順でrootユーザーになっているのでadb shellを含め抜けておく。
・adb install コマンドでSuperSUをインストールする。
・テキストエディタを開き、以下を記述する。

#!/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に指定後、install-recovery.shと名前をつけて保存する。
※今回はTeraPadを使用。
・以下のコマンドを実行しinstall-recovery.shをL-01Fに送る。

adb push install-recovery.sh /data/local/tmp

・adb install コマンドでScriptManagerをインストールする。
・L-01F上でScriptManagerを起動。
・Browse as rootをタップし、OKをタップする。
・/data/local/tmpへ移動しinstall-recovery.shを開きScript/Executableを選ぶ。
・Boot(歯車マーク)をタップし保存する。
・メニューキーをタップしAdvanced→設定を選ぶ。
・Browse as rootのチェックを外す。
・戻り再度メニューキーをタップしコンソールを選ぶ。
・Run shellをタップする。
・u0_aで始まる文字列を覚えておく。
・adb install コマンドでESファイルマネージャをインストール、Rootエクスプローラーをオンにしておく。
・ESファイルマネージャー上で/data/local/tmpへ移動。
・device.dbのプロパティを開きOwnerとGroupを先ほど覚えた文字列に変更する。
・L-01Fを再起動し、完了。

※詳しくはこちらを参照

再起動後はScriptManagerが動き、自動で再root化に必要なコマンドを実行してくれます。ただしそれまではroot権限がなく、若干のラグが発生するのでrootアプリの自動起動については注意が必要とのことです。

これで何とか擬似恒久root化することが出来ました。基本的にL-05Dで用いた方法を使用することが出来ます。


その後ホームをGoogleNowランチャーに、BuildPropEditorでLCD_Densityを320に変更しました。高解像度ということもあり見やすいかと思います。
なおプリインストール以外のホームアプリにしてしまうと画面ダブルタップによる消灯ができなくなるようです(スリープ復帰は問題なし)。そのためGravityBoxを使い、代用しました。

ということでL-01Fのroot取得でした。有志によるカスタムカーネルやCWM、さらにカスタムROMも焼けるようですがひとまずオリジナルに近い環境で使用してみたいという場合は上記のような方法が良いかと思います。

関連記事
G2 L-01Fカスタム関連記事まとめ
L-05Dのroot化 その1
L-05Dのroot化 その2

以下のサイトを参考にさせていただきました。
G2 JAPAN MODEL(L-01F-isai LGL22)販売促進計画 (kernel & Custom ROM フォーラム)

5/9追記
root取得ツールで恒久root化+CWM Recovery導入

0 件のコメント:

コメントを投稿

スパム対策のためコメントは承認制になっています