2014年6月18日水曜日

SH-07D root化…再び

ほんと今更w

SH-07D仮root化まではすぐ出来ました。

参考 参考2

分かったこと:

  • SIMロック解除は無料で出来る
  • miyabi_lsm解除コマンドはアップされている これ
  • temproot可キットがアップされてた。cwm作成ツールも → ここを参考
    以下引用:
    75 :SIM無しさん:2014/06/21(土) 20:11:26.66 ID:ZqMQt+9l
    ワンクリじゃないけど、仮rootをまとめたものと

    ttp://www1.axfc.net/u/3263390.zip
    key:sh07d

    プロプラなファイルを実機から取得し、その場でリパックする版のCWMをうぷ

    ttp://www1.axfc.net/u/3263391.zip
    key:sh07d

    temproot可のアップデート

    80 :SIM無しさん:2014/06/22(日) 10:12:23.79 ID:HrGoawmY
    あ、仮rootセットにget_essential_address
    入れ損ねた模様

    81 :SIM無しさん:2014/06/22(日) 10:30:30.56 ID:FXNlMiBt
    詰め直したのを再うぷ ttp://www1.axfc.net/u/3263943.zip key:sh07d 

Tethering時APNを変更しない方法:
framework.odexを改変
framework.odexをbaksmaliでsmaliに変換
framework\jp\co\sharp\android\net\wifi\WifiApApnControl.smali
isDocomoSim()の改造

626行目の
const-string v3, "44010"

これを

const-string v3, "44070"

に変更すれば、auのSIMの時には0x1を返す。現DoCoMoの処理をするようになる。(はず)
そうでない場合は0x0を返す。

つまりもともとはDoCoMoのSIMだったらAPN変更という処理を、auのSIMだったらAPN変更に
置き換えてる。

そもそもauのSIMは使えないので問題なし。

他に632行目のif-eqz v3, :cond_19をgoto:cond_19にすることでもいけると思う・・・
全部削除してreturn 0x0でも行ける?

ということでやってみた!
とりあえず adb、JDK環境が動く人向け
Version 1.004の人!
(よくわからないけどVPNFAKERとかいうの入れておいた方がいいとか??)

必要なファイルをダウンロード pass: sh07d

この中に入っているunlock_lsm_miyabiはhttp://anago.2ch.net/test/read.cgi/smartphone/1379316102/690
の中の人がアップしたものです。

必要なファイルを/data/local/tmpにコピーする

cd sh07d\tmp (解凍したフォルダ内にあるtmpフォルダへ移動)
adb push * /data/local/tmp
パーミッション変更・・・
adb shell chmod 755 /data/local/tmp/*
adb shell chmod 666 /data/local/tmp/device.db

framework.odexをbaksmaliでデコンパイルする。

先ずはframeworkデータを全部吸出します。
cd sd07d\DOS (解凍したフォルダ内にあるDOSフォルダへ移動)
adb.exe pull /system/framework work/

次にbaksmaliです。

java -jar baksmali.jar -d work\ -x work\framework.odex -o framework

すると、frameworkというディレクトリが出来上がり、その中にいろいろと入っているのが分る

framework\jp\co\sharp\android\net\wifiの中にWifiApApnControl.smaliというファイルがあるので、それを編集する

13行目 不要かも
.field private static final DOCOMO_SIM:Ljava/lang/String; = "44070"

626行目
    const-string v3, "44070"

編集したら保存、元に戻す。

java -jar smali.jar -a 15 -o classes.dex framework
一度jarファイルに格納するのでコピーする

copy work\framework.jar .\

7za u -tzip framework.jar classes.dex

端末に戻す作業
adb push framework.jar /data/local/tmp/
adb shell

cd /data/local/tmp
./run_root_shell
./install_backdoor (いらないかも?)
./unlock_lsm_miyabi (いらないかも?)

rm /data/local/tmp/framework.odex (エラーおこるはず)
./dexopt-wrapper framework.jar framework.odex

署名のコピー:

/data/local/tmp/busybox dd if=/system/framework/framework.odex of=/data/local/tmp/framework.odex bs=1 count=20 skip=52 seek=52 conv=notrunc

これでframework.odexの作成は完了。

あとはこれを/system/frameworkのものと入れ替えるだけ・・・だけど、そのまま入れ替えて
失敗したら二度と起動しない。パーミッション間違えるだけでも起動しなくなる。
その場合文鎮になる。cwm入れててもダメ。なので・・・

systemをsdカードにクローンして使う方法

1GB以上は空のあるSDカードを入れておいてください。

引き続きadb shellで操作。root権限ではない場合には

/data/local/tmp/run_root_shell

を実行してrootになる。

/data/local/tmp/busybox dd if=/dev/block/mmcblk0p11 of=/sdcard/system.img

出来上がったsystem.imgを先ずは試しにマウントする

cd /data/local/tmp
mkdir sys2
mount -o loop,rw -t ext4 /sdcard/system.img sys2

イメージファイルだと分かるようにしておく

mkdir sys2/IMGFILE_SYSTEM

面倒なのでbusyboxとsuをコピーしておく

./busybox cp su sys2/xbin/
chown 0.0 sys2/xbin/su
chmod 6755 sys2/xbin/su
./busybox cp busybox sys2/bin/

次に、WifiTethering時APN固定を解除(というかauのSIMの場合になるように仕向けた)framework.odexをコピーする

./busybox cp framework.odex sys2/framework/

ls -l sys2/framework/framework.odex

-rw-r--r-- root     root     10663032 2014-06-23 19:50 framework.odex

こうなっていることを確認。なっていない場合は変更する

chown 0.0 sys2/framework/framework.odex
chmod 644 sys2/framework/framework.odex

を実行。多分不要。。

マウント解除
umount sys2

一度再起動をかける
reboot

再起動したら再びshellへ…

adb shell
cd /data/local/tmp
./run_root_shell
./install_backdoor
./unlock_lsm_miyabi
./unlock_mmc_protect (いらないし間違ってsystem消す可能性があるので削除した方が良いとのこと)
/data/local/tmp/busybox mount -o loop -t ext4 /sdcard/system.img /system
stop zygote
start zygote

これで再起動がかかるように見える(Docomo With seriesと表示される部分から開始する)
しばらく待つ。
なんかたまに起動しないことある…adb shellでlogcatしておくといいかも。


起動したらテザリングをONにしても、APNが変更されることはないことが確認できると思う。

上記のコマンドだけど、再起動後すぐにやらないとsystemの上書きマウントがシステムがbusyだと
言われてできなくなってしまう。
また再起動ごとに行わないといけない。
しかもshellスクリプトだと動かないので、なにか考えよう。。。

tethered jailbreakってところかな。。

つーことで、スクリプト化(mount実行部分のみ)
http://www1.axfc.net/u/3266095 Pass: sh07d

3つファイルができるので全部/data/local/tmpにコピー

adb push m.sh /data/local/tmp
adb push mountsysimg.sh /data/local/tmp
adb push run_root_shell /data/local/tmp
adb shell

chmod 755 m.sh
chmod 755 mountsysimg.sh
chmod run_root_shell

クリーンブート後、コマンドから/data/local/tmp/m.shを叩けばマウントして再起動します。

./m.sh

SH07Dにコンソールインストールすれば単体でできるはず。。。

つーか どうやってroot取った後にコマンド実行させるか悩んでて、これはもう
exploit改変するしかないなと思ってソースみたらズバリそのものすでに実装済みだったわけで…


無料でSIMフリー化:
SHSimControlApp.apkをbaksmali
SHSimControlCommon.smali内
97行 99行を削除
const/4 v2, 0x0 を100行目に追加

もうすでにSIMロック解除していて本当にこれで解除できるのか不明なため誰かに
やってもらうしかないかも・・・

問題:

  • nand_lock解除のコマンドがSH-07D用にアップされていないので作らないといけない。。。 ここらへんの情報を元にする? →作った
  • MVNO-SIMを利用してのテザリングが強制でDoCoMoのAPNに変わってしまう(SIMコード44010以外なら大丈夫)
  • /systemを直接書き換えるにはnand_lockを外す必要がある →外してmount -o rw,remount出来ました
  • bootloopに陥った時に、戻す方法がない。(修理のみ?)→直接systemを弄らないでsystem.imgを弄る方法を利用するのが良い (SH-06Eみたいに)が、/dataの容量がそこまで大きくない → cwmがアップされてたので、今度焼いてみようと思う
  • カメラのシャッター音を消すにもnand_lock解除しないとだめ。
  • cwmがあっても、単独でrecoveryに入る方法が無いので、文鎮化対策にならない。
  • VPNFakerが何かわからないw

問題の方が多い・・・ちょっとづつ調べて行きます。。。

参考にしたページ:
http://m-v-n-o.blogspot.jp/2013/06/frameworkodex.html
https://github.com/fi01/backdoor_mmap_tools
http://lxbevo.sytes.net
http://anago.2ch.net/test/read.cgi/smartphone/1374753134/902-905 SH-06E rootスレ2
http://anago.2ch.net/test/read.cgi/smartphone/1402820473/ SH-07Dスレ パート6
http://anago.2ch.net/test/read.cgi/smartphone/1394287743/ SH-07Dスレ パート5
http://anago.2ch.net/test/read.cgi/smartphone/1379316102/ SH-07Dスレ パート4


パート6の方にはかなりお世話になりました!