Xpeia acro SO-02C (4.0.1.C.1.24) のroot取得~セルスタ対策

中古で購入したSO-02Cの改造を正月休みで時間ができたのでやってみた

先人達に感謝しつつ手法をあちこち摘んでなんとか完了
自分用のやり方を覚書。


使用した道具
Windows7 64bitのパソコン
パソコンとSO-02Cを接続するUSBケーブル
MicroSDカード 32GB (中古のSO-02Cに付いてた)
楽天SIMカード (無いとSO-02Cのバージョンアップができなかった)
自宅のWi-Fi環境


使用したソフト
jre-7u45-windows-i586.exe(JAVA Version 7 Update 45)
http://java.com/ja/download/manual.jsp
インストール後 java.exeのPATHを通しておく

adt-bundle-windows-x86_64-20131030.zip(Android SDK)
http://developer.android.com/sdk/index.html
解凍後 adb.exeのPATHを通しておく

7z920.exe(7-zip)
http://sevenzip.sourceforge.jp/
インストールする

SO-02C_4.0.1.C.1.9_docomo.ftf
http://arkdroid.info/xperia002/

flashtool-0.6.8.0-windows.exe
http://arkdroid.info/xperia002/
インストールする

DooMLoRD_v4_ROOT-zergRush-busybox-su.zip
http://forum.xda-developers.com/showthread.php?t=1321582
解凍する

CWM Installer-v5.apk
http://forum.xda-developers.com/showthread.php?t=1437840

smali-2.0.2.jar
https://code.google.com/p/smali/downloads/list
smali.jarにリネーム

baksmali-2.0.2.jar
https://code.google.com/p/smali/downloads/list
baksmali.jarにリネーム

dexopt-wrapper
http://forum.xda-developers.com/showpost.php?p=3864655&postcount=36


以下、手順

SEUSをダウンロードしインストール
Update Serviceを実行後、バックアップROMを取っておく
SO-02Cの設定-アプリケーション-開発-USBデバッグにチェックを入れる 「OK」
PC Companionソフトウェアのインストール画面が出たら「インストール」 パソコンにインストール
参照 http://arkdroid.info/016/
参照 http://xacro.net/root/Article215/

SO-02C_4.0.1.C.1.9_docomo.ftf を焼く(4.0.1.C.1.24からではrootを取るのに手間がかかる)
参照 http://arkdroid.info/xperia002/
参照 http://xperia.bex.jp/shinkishu/so-02c-root.html

SO-02Cが勝手に起動するまで待ち
起動すると初期設定(?)を強要してくるので以下のように設定
地域/言語を選択 「日本語」 「完了」
ようこそ ステップ1/7 「→」
インターネット接続 「モバイルネットワークまたはWi-Fi」 ステップ2/7 「→」
ワイヤレスネットワーク 「ネットワーク検索」 「Wi-Fi」 「Wi-Fiネットワークを追加」 Wi-Fi環境を入力 「完了」 ステップ3/7 「→」
サービス 「Google」 Googleアカウントを追加 「次へ」 「ログイン」 ユーザー名とパスワードを入力 「ログイン」 ステップ4/7 「→」
自動更新 「自動更新しない」 ステップ5/7 「→」
連絡先インポート ステップ6/7 「→」
セットアップ完了! ステップ7/7 「完了」

SO-02Cの設定-アプリケーション-提供元不明のアプリにチェックを入れる 「OK」
SO-02Cの設定-アプリケーション-開発-USBデバッグにチェックを入れる 「OK」
PC Companionソフトウェアのインストール画面が出たら「スキップ」

DooMLoRD_v4_ROOT-zergRush-busybox-su.zipを解凍しrunme.batを実行 rootを取る
参照 http://arkdroid.info/xperia001/

SO-02Cが勝手に起動するまで待ち
PC Companionソフトウェアのインストール画面が出たら「スキップ」
SO-02Cの設定-端末情報-ソフトウェア更新 「4.0.1.C.1.24」 「ダウンロード」 「インストール」 「インストール」
(「4.0.1.C.1.24」が見えない時は「メニューキー」 「更新」してみる)
(パソコンでアップデートするとroot剥奪されるので注意)

SO-02Cが勝手に起動するまで待ち
ソフトウェア更新 「OK」

Superuserを実行 「メニューキー」 「環境設定」 「SUコマンドv3.0.3」 「アップデート」 「許可」
(SUコマンドv3.0.3 → SUコマンドv3.0.3.2になった)

Playストアを実行 「次へ」 「同意する」

Google playからBusyBox Installerをインストール
Busybox Versionが V1.18.4になっていること

Google playからESファイルエクスプローラーをインストール

CWM Installer-v5.apkをパソコンからSO-02CのSDカードに転送
(USBケーブルを抜き差ししないとパソコンからSO-02Cが見えないかもしれない)
ESファイルエクスプローラーでCWM Installer-v5.apkを探してインストール
アプリを実行し「CWMをインストール」を行う
Google playでx-Partsを更新し実行(「Install CWM」はしない)
X-PartsのTOOLS 「Auto-Magica Nandoroid Backup」
SO-02Cが勝手に再起動しバックアップを始める。

パソコンに以下のフォルダを作成
c:\cell
c:\cell\workspace

パソコンのコマンドプロンプトを実行
cellディレクトリに移動
>cd c:\cell

SO-02Cのファイルをパソコンにコピー
>adb pull /system/framework framework

SO-02Cからコピーしてできた「framework」フォルダから「framework.jar」と「framework.odex」を「workspace」フォルダにコピー
「smali.jar」と「baksmali.jar」と「dexopt-wrapper」を「workspace」フォルダにコピー

各ファイルの様子
[c:\cell]
 ┣ framework
 ┃ ※SO-02Cからコピーしたファイル群
 ┗ workspace
   ┣ framework.odex
   ┣ framework.jar
   ┣ smali.jar
   ┣ baksmali.jar
   ┗ dexopt-wrapper

workspaceディレクトリに移動
>cd workspace

framework.odexを逆アセンブルする
>java -jar baksmali.jar --api-level 10 -d ../framework -c:core-junit.odex -x framework.odex

コンパイルしたクラスファイルを編集する
テキストエディタで「com/android/internal/telephony/gsm/GsmServiceStateTracker.smali」を開く
下記の部分を書き換える

.line 1593
:pswitch_data_22
.packed-switch 0x0
:pswitch_20
:pswitch_1f
:pswitch_1f   (ここを変更)
:pswitch_1f   (ここを変更)
:pswitch_20
:pswitch_1f
:pswitch_5
:pswitch_5
:pswitch_5
:pswitch_5
:pswitch_20
:pswitch_5
:pswitch_1f   (ここを変更)
:pswitch_1f   (ここを変更)
:pswitch_20
.end packed-switch

編集したframework.odexをアセンブルする
>java -jar smali.jar -o classes.dex out

新しく作成したframework.jarを7-Zipで開いてclasses.dexを追加する
framework.jarを右クリックする
[7-Zip]→[開く]を選択する
classes.dexをドラッグして7-Zipで開いたframework.jarに追加する

「dexopt-wrapper」をSO-02Cにコピーして実行可にする
>adb push dexopt-wrapper /data/local/tmp
>adb shell chmod 755 /data/local/tmp/dexopt-wrapper

新しく作成した「framework.jar」をSO-02Cにコピーする
>adb push framework.jar /data/local/tmp/

dexopt-wrapperを使ってjarをodexに変換する
>adb shell
$cd /data/local/tmp
$./dexopt-wrapper framework.jar framework.odex

framework.odexのサイズを確認
$ls -l
改造前 8049280byte
改造後 8028464byte

busyboxでddを使って署名をコピーする
$busybox dd if=/system/framework/framework.odex of=framework.odex bs=1 count=20 skip=52 seek=52 conv=notrunc

framework.odexを置き換える
$su
#mount -o remount,rw /dev/block/mtdblock0 /system
#mv /system/framework/framework.odex /system/framework/framework.odex.bak
#cp /data/local/tmp/framework.odex /system/framework/
#sync
#reboot

SO-02Cの起動時にボリュームの下ボタンを連打しCWMを起動
CWMのadvanced - Wipe Dalvik Cacheを実行

SO-02Cが起動すれば完了