F-06EのROOTをとりたくて(一時ROOT取得編)

ライフハック

まず初めに…
残念ながら、現時点では、私はF-06EをROOT化する方法を分かっておりません。

2ちゃんねるに一時ROOTを取る方法について書き込みがあったので、ひとまず私も試してみたという状況です。
【ROM焼き】ARROWS NX F-06E root1の146がその書き込みです。

今回は一時ROOTを取得するためのプログラムのビルドと、その実行までを紹介します。

記事はWindows 7 home(64bit)で試した時の内容になります。
また、不要な操作ステップが含まれている可能性があります。

開発環境のセットアップについてはこちらの記事を御覧ください。

■run_root_shellの実行ファイルを生成する

1.GitHubからrun_root_shellのソースファイルを取得する。

下記URLをブラウザで表示して、GitHubアプリにURLをドラッグ&ドロップすれば、GitHubアプリにリポジトリを追加できる。
https://github.com/android-rooting-tools/android_run_root_shell/

あとはGitHubアプリでソースファイル一式をダウンロードする。

Cygwinでのビルド時の手間を軽減するために、ソースは"Cygwin64/home/ユーザ名/"の下にコピーしておくと良い。

2.手順1でダウンロードしたソースファイルを書き換える。

"android_run_root_shell/device_database/device_database.h"に下記の赤字部分を追加する。

DEVICE_F05D_V11R40A,
DEVICE_F06E_V17R45B,
DEVICE_F06E_V21R48D,
DEVICE_F06E_V25R51C,
DEVICE_F07E_V19R38A,

"android_run_root_shell/device_database/device_address.c"に下記の赤字部分を追加する。

{
.device_id = DEVICE_F05D_V11R40A,
.device = "F-05D",
.build_id = "V11R40A",

.ptmx_fops_address = 0xc07bbf44,
},
{
.device_id = DEVICE_F06E_V17R45B,
.device = "F-06E",
.build_id = "V17R45B",
 
.prepare_kernel_cred_address = 0xc00ab26c,
.commit_creds_address = 0xc00aad44,
.remap_pfn_range_address = 0xc0123404,
.vmalloc_exec_address = 0xc012febc,
.ptmx_fops_address = 0xc10d7774,
},
{
.device_id = DEVICE_F06E_V21R48D,
.device = "F-06E",
.build_id = "V21R48D",

.prepare_kernel_cred_address = 0xc00ab27c,
.commit_creds_address = 0xc00aad54,
.remap_pfn_range_address = 0xc012341c,
.ptmx_fops_address = 0xc10d7774,
},
{
.device_id = DEVICE_F06E_V25R51C,
.device = "F-06E",
.build_id = "V25R51C",
.prepare_kernel_cred_address = 0xc00ab2a4,
.commit_creds_address = 0xc00aad7c,
.remap_pfn_range_address = 0xc0123444,
.ptmx_fops_address = 0xc10d7774,
},
{
.device_id = DEVICE_F07E_V19R38A,
.device = "F-07E",
.build_id = "V19R38A",

.prepare_kernel_cred_address = 0xc00ab10c,
.commit_creds_address = 0xc00aabe4,
.remap_pfn_range_address = 0xc01232ac,
.vmalloc_exec_address = 0xc012fd64,
.ptmx_fops_address = 0xc10d75b4,
},

3.Cygwinを起動する。

4."device.db"を生成する。

Cygwinのターミナルで手順2の"android_run_root_shell/device_database"フォルダまで移動してから、下記コマンドで"device.db"を生成する。

make all

成功すると、"android_run_root_shell/device_database/"の下に"device.db"が生成される。

5."run_root_shell"ファイルを生成する。

Cygwinのターミナルで手順2の"android_run_root_shell"フォルダまで移動してから、下記コマンドで"run_root_shell"を生成する。

ndk-build APP_BUILD_SCRIPT=./Android.mk

環境変数NDK_PROJECT_PATHに設定したパスの下の"libs/armeabi/"の下に、"run_root_shell"ファイルが出力される。
例:c:¥android-ndk-r9c¥libs¥armeabi¥run_root_shell

■run_root_shellを実機で実行して一時ROOTを取得する。

1.PCとF-06E本体をUSB接続する。

2.コマンドプロンプトを起動し、環境変数NDK_PROJECT_PATHに設定したパスの下の"libs/armeabi/"へ移動する。

3.コマンドプロンプトで下記コマンドを実行し、"device.db"と"run_root_shell"をF-06Eへ転送する。

adb push device.db /data/local/tmp 
adb push run_root_shell /data/local/tmp 

4.コマンドプロンプトで下記コマンドを実行し、F-06Eに接続する。

adb shell

5.F-06Eのシェルでrun_root_shellを実行する。

$ cd /data/local/tmp 
$ chmod 755 run_root_shell 
$ ./run_root_shell 

シェルのプロンプトが$から#に変われば、一時ROOTが取得できています。

上記はPCからF-06Eへリモートで接続して一時ROOTを取得していますが、Android Terminal Emulatorなどから"run_root_shell"を実行して一時ROOTを取得することも可能です。

以上で一時ROOTの取得は完了です。お疲れ様でした。