2012年5月25日金曜日

sh-01dのroot取得までの手順

■必要なもの
(1)shdisphook
http://goo.gl/Bs6Iq
(2)breaksuidshdisp
http://goo.gl/r87zt
(3)adb接続環境
(4)ターミナルエミュレータ。
私はandroidマーケットからjackpalのターミナルエミュレータをインストールしています。
 
■概要
system権限取得後、以下のことを行ってください。
主に3段階のことをやります。
(1)shdisphookによるsystem権限の取得、/cache/recoveryのリンク作成
(2)/dev/shdispのパーミッションを666にする
(3)breaksuidshdispによるsuid関数の破壊。
 
■手順
あらかじめ、breaksuidshdispを/data/local/に入れておいてください。
 
adb push breaksuidshdisp /data/local/
adb shell chmod 755 /data/local/breaksuidshdisp
 
ここから、adb shellで実行。shdisphookでsystem権限取得状態に
なってください。
 
$ echo 'chmod 777 /cache' > /data/local/oncmd.sh
$ echo 'chmod 666 /cache/recovery' >> /data/local/oncmd.sh
$ chmod 755 /data/local/oncmd.sh
 
ここで、microSDのマウント解除ダイアログを表示させると
/cacheディレクトリのパーミッションが777になっているはず
 
つづいて
$ rm -r /cache/recovery
$ ln -s /dev/shdisp /cache/recovery
 
ここで、再起動。もう一度shdisphookを実行する。
microSDのマウント解除ダイアログを表示させる
 
すると、/dev/shdispが以下の権限になるはず。
$ adb shell ls -l /dev/shdisp
crw-rw-rw- system   cache    232,   0 1980-01-08 10:07 shdisp
 
ここで、breaksuidshdispを実行
 
$/data/local/breaksuidshdisp
afd0a680 : 90 00 2d e9 d5 70 a0 e3 00 00 00 ef 90 00 bd e8
afd0a690 : 00 00 b0 e1 1e ff 2f 51 ec b2 00 ea 00 f0 20 e3
p2 = AFD50000 - B0010000
event_type = 268435456
p3 = 007E15E0
p4 = 0091D8BC
p3 = AFD0A680
p4 = AFE4695C
afd0a680 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
afd0a690 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 
これで、suid関数が破壊されますので、ターミナルエミュレータを起動させると
#が表示されていると思います。

1 件のコメント:

  1. はじめまして。
    お聞きします、このroot取得は、android2.3 or 4.0のどちらですか?。

    返信削除