2014/03/16

L-05Dのroot化 その2

L-05Dのroot化のために前回は環境を揃えました。今回は実際にroot権限取得を行います。


必要なもの
前回そろえた開発環境
・busybox、su
・各アプリのapk(予め別端末のESファイルマネージャのアプリバックアップで作成)
→ESファイルマネージャ、ScriptManager、SuperSU
・L-05Dにおいて提供元不明のアプリ及びデバッグモードにチェックを入れておく

注意
busybox、suは同時にroot化していたSH-06Eのrootkitに付属していたものを流用。不具合はありませんでした。
ビルド番号JZO54K、ソフトウェアバージョンL05D20dで動作確認。それ以外の環境ではわかりかねます。

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

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

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

git clone --recursive https://github.com/fi01/backdoor_mmap_tools.git

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

手順2
・コマンドプロンプトを開きandroid_get_essential_addressへ移動。以下のコマンドを実行しAndroidNDKでビルドする。終わり次第backdoor_mmap_toolsへ移り、同じく以下のコマンドを実行する。

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

両フォルダにlibsというフォルダが作成され、更にその中のarmeabiというフォルダに以下のファイルが保存されているのでわかりやすいように別のフォルダへ抜き出しておく。

\android_get_essential_address\libs\armeabi
→get_essential_address

\backdoor_mmap_tools\libs\armeabi
→disable_ccsecurity、install_backdoor、run_root_shell

・またandroid_get_essential_address、backdoor_mmap_toolsどちらでもいいのでdevice_databaseフォルダ内にあるdatabase.dbというファイルも抜き出しておく。

フォルダを作りまとめておく

これで必要な5種類のファイル(get_essential_address、disable_ccsecurity、install_backdoor、run_root_shell、device.db)が取得出来たので次に移る。
なおその他のapkファイルやこの後作成するファイルもこのフォルダにまとめておき、この階層で作業する。

手順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-05Dに送る。

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

・adb install コマンドでScriptManagerをインストールする。
・L-05D上でScriptManagerを起動。


・Browse as rootをタップし、OKをタップする。


・/data/local/tmpへ移動しinstall-recovery.shを開きScript/Executableを選ぶ。


・Boot(歯車マーク)をタップし保存する。


・メニューキーをタップしAdvanced→設定を選ぶ。


・Browse as rootのチェックを外す。


・戻り再度メニューキーをタップしコンソールを選ぶ。


・Run shellをタップする。


・u0_aで始まる文字列を覚えておく(ここではu0_a158)。
・adb install コマンドでESファイルマネージャをインストール、Rootエクスプローラーをオンにしておく。
・ESファイルマネージャー上で/data/local/tmpへ移動。


・device.dbのプロパティを開きOwnerとGroupを先ほど覚えた文字列に変更する(ここではu0_a158)。
・L-05Dを再起動し、完了。

2~30秒ほどかかります

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


なおベンチマークですがantutuを走らせてみました。No-frills CPU Controlでクロックは既定値ですがガバナーなどはinteractiveとdeadlineに変更しています。
ちなみにFOMA SIMを認識、通話確認しました。ただしデータ契約はないのでデータ通信に関しては未確認です。

なおL-05Dはリカバリーモードに入ることができ…


電源ボタン+ボリュームダウンボタンで起動、メッセージが表示されるまで押し続けると"FACTORY HARD RESET"というメニューが出てきてリカバリーする事が可能です。

※注意 root状態から初期化した場合
Android上からの初期化、リカバリーモードの両方を使用しても完全に初期化出来ない模様です。そのためシステムアプリを削除してしまったせいで初期セットアップがループしてしまう、LCD_Densityを変更していた場合に元に戻らずPalleteUIが強制終了するなどの不具合が起きました。そうなった場合は端末をダウンロードモード(ボリューム上下押しながらUSB接続)に入り、LG Mobile Support Toolの強制アップデートで復旧する必要があります。

ということでL-05Dのroot化でした。いつも感じることですが各種ファイルの作成や手順の公開など有志の方々には本当に頭が下がる思いです。ありがとうございました。

以下のサイトを参考にさせていただきました
【L-05D】【root】root取得が可能に (Optimus itといっしょ! さん)
L-04E(docomo Optimus G Pro)CM化 (kernel & Custom ROM フォーラム)

関連記事
Optimus it L-05Dのカスタム記事まとめ

7/4追記
towelrootは使えませんでした。

7/11追記
rootedでの初期化について追記。

0 件のコメント:

コメントを投稿

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