SSブログ

nexus7のハックの一歩前 [ハードウェア]

nexus7をハックできるかどうかは分からないけど、root取るぐらいなら出来るんじゃないかともがいてみる。
これからやることは、推奨されたことでもないし、仮にやるとしても自己責任でやってください。そもそも、Android端末は持ってるけど、MIPSだったためにちょっといじって、やれることが全然ないのがわかって放置したぐらいです。

何をやっているかわからないのに、書いてあることを作業するのは危険です。そういうのは誰の得にもならないので禁止です。最後に失敗して終わりになる可能性大だし、やるなら最悪最後まで読んでからじゃないと危なくて仕方ないんじゃないかな。小学生の考える避妊法ぐらい危ないと思ってください。

なもんで、他のところでスマートにハックしているところもあると思うので、安全に行いたい場合は他の人のを見たほうがマシかもしれません。でも、こっちはわからない分、遠回りして理解が深まるかもしれません。単にroot化したい場合は、誰かがやってるはずなので、ググって見てくださいね。私は相当手詰まりにならない限り、あえて「nexus7のroot化」は直接ググらないことにしたいと思っています。Android 4.1の理解も兼ねて遊びたいので。


 
とりあえずWindows7にUSBケーブルでつなげてみる。普通にNexus7の内部ストレージと認識。最近のガジェットとWindowsは大したものだ。コンピュータはいろいろな事を自動化してなんぼのものだ。コンピュータを使うこと自体が目的になっているNERDにはイノベーションの本質は作りにくい。かといって、凡人に違法ギリギリのツールを提供して神扱いされるのも馬鹿らしいが。

nexus7_storage.png
inner_storage.png

一部でも見えれば問題ない。


nexus7に入れたShell Commanderでディレクトリ構成を見てみると、

 /sdcard
 /storage/sdcard0
 /mnt/sdcard

のどれかですね。どれかが、どこかのディレクトリの別名なんだろうけど、面倒なのでいいや。中に入っているものも、Windows側から見えないディレクトリがあったりしました。ディスクのプロパティを見ても、汎用階層形式としか出てこないし、フォーマットももちろん出来ない。なかなか謎が多い。

Android System Infoという、Androidアプリを使うと、/storage/sdcard0 が、/dev/fuse であるらしい事が書いてある。fuseって何か聞いたことがあるような、無いような。

 http://ja.wikipedia.org/wiki/Filesystem_in_Userspace

ファイルシステムのひとつであることは、アプリからも予想できるんだけど、ネットワークであれ、実ファイルであれ、ファイルシステムであれ、何でもマウントできちゃう糊みたいなもの? システムの入っている所と、外部から見える内部のストレージは別のところにあるのだろう。


Shell Commanderでdfコマンドを打ってみる。どうやら

 /storage/sdcard0

が本体らしい。分かったところでなんということでもないと思うけど。


とりあえず、USBをつないでコピーするだけで、内部にファイルを送り込むことは出来た。見えても書き込むことの出来ないところもありそうだが、とりあえず書ける所があるので、そこからファイルを移動させるのはまた別の問題として解決することとしましょう。そんなわけで、sdcardなどの外部ストレージを使わなくても何とかなりそう。一時期は、Webからしか入れることが出来ないんじゃないかと思っていたので、無駄にWebサーバを立てなくて済んだ。


今のタイミングでやればいいのかはわからないけど、「設定」で開発者向けオプションをONにしてみました。これで危険が増すこと請け合い(苦笑)。


それとヤヴァいウイルス等を含んだファイルをつかまされる可能性も大いにあるので、ウイルス対策ソフトも入れておこう。avastあたりがフリーで入れられたんだっけ。探してみる。

ノートンも無料と書いてあるけど、お試しソフトで、すぐまともに使えなくなるみたい。avast!もあるけど、AVGもあるね。どっちかでいいんだけど、PC版ではavast!はウザいが手間は無く、AVGはたまに手を入れないとダメな感じがしたので、今回はavastにしてみる。あまりにウザかったらAVGにするってことで。

無事に入れられたようなので、avastを設定していると、ファイアウォールがroot権限を取らないと使えませんと出てきた。こりゃ普通のアプリでもroot化を要求しているくらいなので、一般的になっていると考えよう。


ARMのAndroidでroot権限を取ったことがない。先に述べたようにARM以外の物だと使えなかったとわずかに記憶している。既存のツールが対応しているかどうかわからないんだけど、ツールをぶっこんでみようと思った。そのまま実行するのもマズイかも知れないので、ファイルの中身をなんとなく眺めてみる。バイナリになっちゃうとわかんないけどね。シェルスクリプトぐらいは読めるので、それだけはきっちりしておこうと思った。

いちからハックするのは、時間も技術も持っていないので、先人の知恵を拝借。
 http://wzero3.iinaa.net/Android_root2011.html
とりあえず、Windowsのウイルスは混入していない模様。使ってみようと思ったのは以下。

 DooMLoRD_v4_ROOT-zergRush-busybox-su
 SC_06D_rooting_kit
 l01d_0.2

まずは共通点から調べてみる。


Superuser.apk というアプリが二つには入っている。これが実質的にsuper userの権限を得るためのものだと思われる。ググって確かめたら、そういうことで良いみたい。

 http://androidsu.com/superuser/

ここ↑から落としてきて、新しいものにリプレイスして実行したほうが良いかもしれない。
もうひとつのSGS3RootingApp.apkってのも、たぶん同様なことをするアプリケーションだろう。

今度はAndroidのウイルスが入ってるかどうか、内部ストレージにコピーして調べてみる。
案の定、DooMLoRD_v4_ROOT-zergRush-busybox-suにある、files/zergRushはマルウェアらしい。
入れたウイルス対策ソフトが、早速、役立ってしまった。DooMLoRD_v4_ROOT-zergRush-busybox-suは使えないことがわかる。なので捨てる。他のは特に問題が無いようだ。しかし、こんな危ないものスマホなんかに使って危ないこと甚だしい。


あとはsuコマンドそのものと、busyboxをインストールするらしい。そもそもsuコマンドは、コマンドラインで実行しても無いといわれるので、入れないと話にならないということだろう。busyboxはユーザーランド的な基本的なコマンドをまとめて含んでいるものですが、これはとりあえずsuが出来るようになって、後からGoogle Playのアプリを入れても良いだろう。


adb.exeはWindows上からUSBを通じてファイルを送り込むものかな? 開発環境を入れたときに、何か見かけた覚えがある。これもググって正体をはっきりとさせておいたほうがいいな。

USB経由で色々出来るツールらしい。無駄にnexus7上でコマンドを打たなくても、

 adb.exe shell

とすれば、sshで入ったようにパソコンなどからコマンドを発行できたりする。そういえば、MIPSな中華タブレットの時にもやったような気がする。その時はタブレット端末の入力が鬼のように面倒で、そういう使い方が出来ると分かってサルのように使い倒した覚えがあります。もう出来ないと分かったら、わりとすんなり記憶が遠のいて行ってしまうものなんですね。

そのときの記憶だと、基本的なコマンドですら普通のbusyboxより制限されている感じで、manも当然のように無いし、パラメータもほとんど設定できない状態でした。それは今もあまり変わってないみたいで、ユーザーにアレコレさせない仕様にしてあるようです。だってコピーするだけのcpコマンドすら無いんだよ。どんなOSだよ。だから、ファイルを入れるにはadb.exeで直にぶち込まないといけないって事だよね。adb install してみたけど、.apkなアプリじゃないと入らないみたい。ちなみに.apkのファイルはそもそもzip圧縮したアーカイブファイルだったりする(多分、開発者の人には常識なんだろうけど)。Officeのファイルにしても、そういう扱いをするファイルってのが多いね。もう単一バイナリファイルには飽きたというか、バグの温床になりかねないしね。

そもそもroot化だって正規の方法があれば普通にみんな使うんだろうけど、セキュリティを意図的に下げることをさせたくないのでしょう。その割には、rootになれることが前提のアプリとか、普通にGoogle Playに置いてあったりするのですよね。そこのところは、AppleのiOSでは考えられない状況だったりもします。やってることはiPhoneのJail Breakと大した違いは無いわけですから。



各種スクリプトを見て、各コマンドを差しさわりのない程度で実行させると、大抵がPermission deniedになったので、上にあるもののバッチファイルを実行しても、入らないどころか、悪くなりすらしない状況でした。実際、バッチファイルを試してみると、案の定Permission deniedの嵐になって、suも何も入らない状況になりました。


そんなわけで、既存のツールは、マルウェアが入っていたり、そもそも動かなかったりで、使い物になりませんでした。ちなみに SuperOneClickはウイルス対策ソフトで削除されて、Windowsにすらダウンロードできない始末。結局、休日の半日つぶして、既存の方法はダメっぽい事に気づいたわけです。まぁそれだけでも良かったとします。動かなくなったわけじゃないしね。


ただ朗報がひとつだけ。

 adb install Superuser.apk

で、Superuserのアプリを入れて、タブレット側で実行できるようになってたって事。これって危ない状態?
でもsuのバイナリは入れられず、

 echo $PATH
 /sbin:/vendor/bin:/system/sbin:/system/bin:/system/xbin

これらのディレクトリに、adb push su /hogehoge で入れようにも、Permission deniedとか、Read-only file systemとか言われて入れられないんだよね。/sbin のみPermission deniedだから、そこに無理やり入れるしかないといえば、その通りです。読み込みのみのって事はフラッシュメモリじゃない可能性だってあるわけだし。とはいえ、実際は普通のフラッシュメモリで、書き込みできるやり方もあるかもしれない。

まぁ、ど直球の正攻法じゃダメだってことはわかった。結局Exploitな方法を使わねばならんってことか。それ自体が、Superuser.apkの役割だと思っていたから、もう一捻りしないとあかんらしいことは分かった。



とりあえず、

 http://androidsu.com/superuser/

Superuser.apkの使用率は高目と踏んだので、ここのサイトの英文をじっくり読んでみようと思う。そもそも、このツールがどこまでやってくれてるのかが良くわかってないからね。あんまり足しになりそうもないけど、基礎を学ぶには楽になるほどの前提の知識はあると思う。

へ?Google Playにあるよ。それに、すでにrootを取っている機器向けのアプリらしい。

 https://play.google.com/store/apps/details?id=com.noshufou.android.su

同じSuperuserなアプリだけど、結局同じものなのかなぁ。まぎらわしいなぁ。


解決策があったら、ほくそ笑んでブログで晒すつもりです。ってもうroot化しちゃってる人も居るかもだけどね。出来るだけ自分の手でやったほうが達成感もあるってもんです。


タグ:Android
nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。