SH-06E 07版本ROOT最近进展

kinki_king

普通会员
2013-10-17
115
0
0
[i=s] 本帖最后由 kinki_king 于 2013-11-13 09:32 编辑 [/i]

根据前几日 IOS著名越狱大神FREEMAN发布的 新的后门BUG 一直进行SH-06E ROOT 2CH大神Fi01给出了最新的方法并且发布了 FAKE.APK

com.mcafee.android.scanserviceアプリを置き換えてsystem権限を取得する。
※ このアプリをインストールしている間は「ドコモ安心スキャン」が使用出来ない。
※ ADBは勿論、JDBを使うため予めJDKをインストールしておく。

○ busyboxを設置する
> adb push busybox /data/local/tmp
> adb shell chmod 755 /data/local/tmp/busybox

○ アプリを置き換える
> adb install -r fake.apk

○ アプリを実行する
> adb shell am start -D -a android.intent.action.MAIN -n com.mcafee.android.scanservice/android.app.Activity

○ アプリのプロセスIDを取得する
> adb jdwp
7525

○ デバッガ接続の接続先にプロセスIDを指定する
> adb forward tcp:8600 jdwp:7525

○ デバッガを起動する
> jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8600

○ スレッドを表示する
> threads
グループsystem:
(java.lang.Thread)0xc141cc4fa8 <8> FinalizerWatchdogDaemonは条件を待機中です
(java.lang.Thread)0xc141cc4df8 <7> FinalizerDaemon は条件を待機中です
(java.lang.Thread)0xc141cc35b8 <6> ReferenceQueueDaemon は条件を待機中です
(java.lang.Thread)0xc141cc34c8 <5> Compiler は条件を待機中です
(java.lang.Thread)0xc141cc32e8 <3> Signal Catcher は条件を待機中です
(java.lang.Thread)0xc141cc3208 <2> GC は条件を待機中です
グループmain:
(java.lang.Thread)0xc1418bac10 <1> main は実行中です
(java.lang.Thread)0xc141cc82b0 <10> Binder_2 は実行中です
(java.lang.Thread)0xc141cc8110 <9> Binder_1 は実行中です

○ mainスレッドを選択する
> thread 0xc1418bac10

○ ブレークポイントを設定する
<1> main[1] stop in android.os.MessageQueue.next()

○ スレッドを中断させる
> adb shell am start --activity-clear-task -a android.intent.action.MAIN -n com.mcafee.android.scanservice/android.app.Activity

○ Runtimeがnullで無い事を確認する
<1> main[1] print java.lang.Runtime.getRuntime()
java.lang.Runtime.getRuntime() = "java.lang.Runtime@4193d910"

○ /dev/msm_acdbの権限を設定する
<1> main[1] print java.lang.Runtime.getRuntime().exec("chmod 666 /dev/msm_acdb")

○ ADBから/dev/msm_acdbの権限を確認する
> adb shell ls -l /dev/msm_acdb
crw-rw-rw- system audio 10, 87 1970-06-28 09:14 msm_acdb

以上でビルド01.00.07でもrun_root_shellを使ってroot権限の取得出来るようになる。
またbackdoor_mmap_toolsを使ってのMIYABIの解除も可能になる。
 

附件

G

geesezjq

游客
持续关注中!~~~破解了就大量铺货吧!~~~XD
 

kinki_king

普通会员
2013-10-17
115
0
0
SH-06E root取得方法

はじめに

全機種SH-12Cのroot取得等を書き終えてしばらく放置していたが、
SH-06Eに機種変&#12539;やっとroot取得が出来たのでまとめてみる。

この機種のroot権奪取方法を確立してくださいましたfi01さん、
ワンクリツールを作ってくださいました作者さん、
いろいろ情報を提供していただいた人柱の方々には、
心から感謝いたします。

また、ちょっと長くなるけど、なぜこのようなまとめブログを作っているかの
理由も書いてみます。

一番の理由は、自分の端末をどうしようが個人の自由だということ。
「これをやりたい!けど、やりかたがわからない&#12539;&#12539;&#12539;;;」
という人はたくさんいて、調べて一応それらしきものを見つけたが、
「何がなにやらさっぱり&#12539;&#12539;&#12539;;;」
一から覚えようとがんばってみるものの、
「何から、何を、どう覚えていけばいいのかすらわからないよ!」
って状態が多数だと思う。

自分もそんな人間の一人で、最初はadbってコマンドを、何度検索したことか。
少しでも、ほんのちょっとでも詳しく説明されているサイトを探し、
こつこつ積み重ねるしかない。
本当はそれが一番いいのかもしれないけど、
少しでも、一から覚える人の手助けになれば&#12539;&#12539;&#12539;と思い、
このブログを書いているというわけなのです。
まあ、そうは言っても、コピペで全てを終えてしまえる状態なので、
全く勉強にはならない気もするけどw

ちょっと前は、「セキュリティ硬くなるから、誰も彼もroot取るの反対!」
って感じだった?気もするけど、今はそんな感じじゃないしね。
「そんなレベルのやつがrootとって何するの?」
「そんなこと聞いてるやつに、rootとってほしくない」
という意見の人は、
自分でコツコツ積み重ねてきた人だと思うし、
その膨大な時間を思うと、何もしてこなかった人が、いきなり簡単に
root取れてしまうことに怒りを覚える気持ちもわかります。

でもでも、
今何もわからない人でも、何かのきっかけで、将来神になる可能性だってある。
可能性は無限大だ!!!w
誰だってroot取りたきゃ、取ればいいじゃん!!!ww
自分の端末だし、何をやったって自由だ!!!!!www

でも、自分も、ちょっとは勉強してきてほしいかな^^;
最低限、cmdってものとか、コマンドはどこに打ち込んでいくかとかは、
知っておいてほしいところです。
知らない人はいないか&#12539;&#12539;&#12539;^^;

ではでは、長くなりすぎたのでこの辺にして、以下root取得方法を。


SH-06E root権奪取
SH-06Eビルド番号01.00.07でのroot権取得の方法を書いていく。
当然、完全自己責任にて行ってください。
何がどうなっても、筆者である私は責任を一切持ちません。
起動できなくなるアプリ等がある可能性もあります。
文鎮となってしまったら、書初めのときの高級文鎮としては使用できるので、末永く使ってあげてください。

前準備
adb接続環境を整える。
そして、今回はjdbも使うので、jdbも使える環境を整える。
というか、普通は(何が普通かわからないけどw)adb接続環境を整えるというと、
AndroidSDKとJDKをインストールするはずなので、
「Android adb接続環境」とかで検索すれば一発で見つかるはず。
端末のUSBデバッグもONにしておくのを忘れずに。

fi01さんのツイートより、07用のroot権取得指南メモ、
SH-06Erootスレより、ワンクリツールをDLしておく。
これの説明は不要だと思う。

DLしてきた書庫ファイルを解凍する。
解凍する場所は自由だけど、便宜上以下の場所に解凍。
(解凍場所を変える場合は、途中のパス指定を自分の場所に置き換える)
Cドライブ直下に、sh06eというフォルダを作りそこに解凍。
C:\sh06e\fake_SH-06E
C:\sh06e\sh06e_root_kit_v024
って感じに。

前準備は以上かな。。。と思うw


root権奪取
いきなりだけど、もう役者はそろっているので、すぐに実行できる。

また、以下コマンドは、fi01さんの指南memo.txtよりコピペです。
もし記載することがfi01さんの思うところでなければすぐに削除しますので、
大変お手数ですがコメント頂けましたら幸いです。

では実行していく。

PCと端末を接続。
コマンドプロンプト(cmd)を起動。
以下コマンドは、順次cmdに打ち込んでいく。
fi01さんのmemo.txtも開いて見比べながら進めていくといいと思う。

busyboxを設置する。
※busyboxは何をするものなのかを調べるのも勉強の一つかと
cd C:\sh06e\sh06e_root_kit_v024\files
adb push busybox /data/local/tmp
adb shell chmod 755 /data/local/tmp/busybox
これでbusyboxの設置は完了。
cdはチェンジディレクトリ。自分の作業スペースを移動するということ。
adbのpushは文字通り端末にファイルを押し込むことw
端末の、/data/local/tmpってディレクトリにbusyboxってファイルを入れるって意味。
chmodは権限の変更。
AndroidはLinuxベースなので(のはずw)、権限を与えてやらないと動かない。
権限について自分で調べてみるといいと思う。

以下、細かい説明は省くので、順次cmdに打ち込んでいく。
(と言うか、知識無いので説明できない部分が多すぎるためw)
ここから、ちょっと複雑になっていくので気合を入れてw
(実際は****部分を自分のものに置き換えるだけなので簡単だけど、
詳しく説明を書こうとすると複雑に思えると言う罠w)

上のコマンドに続けて、
cd C:\sh06e\fake_SH-06E
adb install -r fake.apk
adb shell am start -D -a android.intent.action.MAIN -n com.mcafee.android.scanservice/android.app.Activity
adb jdwp
(adb shell am ~~の部分は、ブログのページの関係上、改行されちゃってるけど、
adb shell amから、.Activityまでが一行)
ここまで進むと、へんな数字が表示されると思う。
memo.txtでは、1個しか書かれていなかったが、自分は2個出てきた。なぜだ&#12539;&#12539;&#12539;w
その数字のうち、どれかが必要となる数字なので、とりあえずメモっておいたりすると吉。
(自分は4桁と5桁の数字が出てきたが、5桁のほうが目的の数字だった)
この数字は、先ほどadb installでインスコしたfake.apkのプロセスID。
自分の場合の2個出てきてしまってるのは、おかしいのだろうと思うけど^^;
まあ、こういうこともあるさ!w

メモったらまた続けて以下を打ち込んでいく。
下のコマンドの****は、さっきメモった数字を記入。
adb forward tcp:8600 jdwp:****
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8600
threads
ここまで進むと、ズラッと文字列があわられるはず。
これはスレッドを表示している模様。
memo.txtと同じスレッド内容だったらOK。
もし自分のように複数プロセスIDが出てきてしまっていて、
とりあえず一つ****部分に入れてみて、出てきたスレッドが違う内容だったら、
記入したプロセスIDがほしいIDと違っていたと言うことなので、
もう一度adb forward ~~からやり直してみる(今度は別のプロセスIDで)。

以下のスレッド内容だったらOKということと、
また、赤字の部分の自分のcmdで表示されている文字列をメモしておく。
(<1>mainの部分の文字列)
(これはcmdに表示されているべき内容であって、打ち込むコマンドではないので注意)
> threads
グループsystem:
(java.lang.Thread)0xc141cc4fa8 <8> FinalizerWatchdogDaemonは条件を待機中です
(java.lang.Thread)0xc141cc4df8 <7> FinalizerDaemon は条件を待機中です
(java.lang.Thread)0xc141cc35b8 <6> ReferenceQueueDaemon は条件を待機中です
(java.lang.Thread)0xc141cc34c8 <5> Compiler は条件を待機中です
(java.lang.Thread)0xc141cc32e8 <3> Signal Catcher は条件を待機中です
(java.lang.Thread)0xc141cc3208 <2> GC は条件を待機中です
グループmain:
(java.lang.Thread)0xc1418bac10 <1> main は実行中です
(java.lang.Thread)0xc141cc82b0 <10> Binder_2 は実行中です
(java.lang.Thread)0xc141cc8110 <9> Binder_1 は実行中です
もう、何がなにやらわからないけど、、、w
とりあえず次に進んでみる。

また以下のコマンドを打ち込んでいく。
****部分は、上の赤字部分の自分のcmdで表示されている文字列を記入。
thread ****
すると、cmdの表示が、
<1> main[1]
となっているはず。
以下、<1> main[1]は打ち込む必要は無く、それに続いているコマンドのみ打ち込む。

次のコマンドを打ち込んでいく。
<1> main[1] stop in android.os.MessageQueue.next()
上にも書いたけど、
<1> main[1]は打ち込む必要は無い。stop部分から打ち込めばよい。
[1]とstopの間のスペースを忘れずに。

ここまで進んだら、cmdをもう一つ起動する。
そして、新しくcmdが立ち上がったら、そのcmdに次を打ち込む。
adb shell am start --activity-clear-task -a android.intent.action.MAIN -n com.mcafee.android.scanservice/android.app.Activity
長くて改行されちゃってるけど、一行。
そしてエンターを押すと、最初にコマンドを打っていたcmdが反応して、
なにやら動いたことがわかるはず。(※1)

そうなったら、再び
<1> main[1]が表示されているcmdに戻り、次のコマンドを打ち込んでみる。
<1> main[1] print java.lang.Runtime.getRuntime()
これも<1> main[1]部分は打ち込む必要なし。
すると、なにやら文字列が表示される。
java.lang.Runtime.getRuntime() = "java.lang.Runtime@****"
みたいに表示されたら成功。
(****部分は人それぞれ違う。)
もし、なにやらズラッと文字列が進み、さいごにnullって単語があったら失敗してる。
上の※1部分で、反応が見られない場合はnullになる。
(ブレークポイントで処理が中断されていないためだと思われ)

もしnullになってしまっていたら、
Ctrl+C(Ctrlとcの同時押し)とかで、<1> main[1]から抜けて、
adb shell pm uninstall com.mcafee.android.scanservice
で上でインスコしたfake.apkをアンインしてから、
一応SH-06E再起動した方が精神衛生的に安心かな?
それから、また
adb install -r fake.apk
からやり直し。
まあ、一度やった作業を繰り返すだけだから、こんどはサクサクいけるはず。

そんで、ちゃんと成功して、
java.lang.Runtime.getRuntime() = "java.lang.Runtime@****"
が表示されていたら、次のコマンドを打つ。
<1> main[1] print java.lang.Runtime.getRuntime().exec("chmod 666 /dev/msm_acdb")
これで、目的は達成されたはず。

一応、下のコマンドで/dev/msm_acdbの権限を確認する。
まだ<1> main[1]と表示されていると思うので、Ctrl+Cでスレッドを抜けて、
adb shell ls -l /dev/msm_acdb
これで権限が表示される。

ここで少しだけお勉強。
crw-rw-rw- system audio ~~~~
とか表示されていると思うけど、
crw-rw-rw- の rw-rw-rw- の部分が権限を表示している部分で、
例えば、全ての権限が許可されている場合、
rwxrwxrwxとなる。
よく見ると、rwxのくくりで、3つ並んでいるのがわかる。
左から順番に、所有者の権限、所属グループの権限、そのたユーザーの権限に分かれていて、
rは読み込み、wは書き込み、xは実行権となっている。
数字で表すことが出来て、rは4、wは2、xは1となり、
rwxだったら7(数字を足す)、rw-だったら6、r--だったら4と言うように表すことが出来る。
なので、rw-rw-rwは、666と言う数字で表せる。
よく見かける、
chmod 755 ~~~
ってのは、所有者に全権限(rwx)、所属グループに読み込みと実行(r-x)、そのたユーザーに読み込みと実行(r-x)を与えなさいと言うコマンド。
所有者、所属グループはどこでわかるかと言うと、
crw-rw-rw- system audio
の system audio の部分。
所有者はsystemで、グループはaudioと言うことだったはずw
とうぜん、権限変更は、所有者以上の権限をすでに持っていないと出来ない。
root奪取前の状態はその他ユーザーに属するわけで、権限が例えばrwxrwx---(770)の場合は全く手のつけられないフォルダやファイルと言うこと。
なので、神がsystem権限を奪う方法を見つけてくれて、その他一般ユーザーにご教授くださっているというわけなのです。
crw-rw-rw- system audio
を見るとわかるように、所有者がsystemなので、system権限を自分が持てば、そのファイルは自分が好きなように権限を変えられるってわけです。
一番上で、busyboxに権限755を与えているけど(chmod 755)これは端末にコピーしたbusyboxに、実行権(x)を与えている。
実際に adb shell ls -l /data/local/tmp/busyboxを打ってみると、
-rwxr-xr-x shell shell ~~~ busybox
見たいに出てくるはず。
xの実行権がちゃんとついていることがわかる。
ls コマンドは、よく使うので調べてみるといいと思う。

ちょっと長くなりすぎたけど、
以上で
/deb/msm_acdb
の権限は666に出来たので、ワンクリツールが使えるようになるってこと。

以下ワンクリツールを使っていくときの分岐(ユーザーが選択)でどちらを選択していくかを簡単に。

上で権限を取得後、ワンクリツールを立ち上げる。
sh06e_root_v024.batをダブルクリックで起動
コマンドプロンプトが起動する。

07ですか?それ以外ですか?と聞かれるので、それ以外を選択。
(07だけど、07以外を選択してやる)

↓エンターで進めていく

sysetmイメージを作りますか?と聞かれるので、作るほうを選択。

↓進めて行き、青空イメージのところでVpnFakerをインスコ

再起動で終了。

再起動後、アプリ一覧に、SuperSUってアプリと、Vpndialogってアプリが表示されてればちゃんとroot取得できてるはず。
SuperSU起動して、suバイナリの更新をすませ、あとはrootedアプリを使ったり自分でゴニョゴニョすればいい。

ワンクリツールの使い方の部分は、相当はしょってるけど、
これが使えない人はいないはずなので、じゅうぶんかな?と思ってますw

誤字脱字、そもそも間違っている部分もあるかもしれません。
最初に書きましたが、自己責任で行いましょう。

長々と、無駄なこともいっぱい書いたけど、
自分としては精一杯わかりやすく書いたつもり。
説明が下手なので、わかりにくいって思う人がほとんどだと思うけど、
「こんなんじゃわかるか!ボケ!!!」
みたいな突っ込みはなしの方向でお願いしますw

ではでは、楽しいrooted生活を^^