fc2ブログ

レトロフリークで任意のコマンドをroot権限で実行する その2

そんな訳で、その2。

前回はレトロフリークでいろいろ遊ぶために、まずはとRetroN 5のfactory reset imageを解析してみたところまでを説明しました。
ここまでの状態でRetroN 5用のファイルがいろいろと取り出せますので、このままRetroN 5用のapkファイルなどを解析していってもよいのですが、せっかくなのでレトロフリークのファイルを解析したいところです。
レトロフリーク用のfactory imageが公開されれば手っ取り早い訳ですが、あまり公開は見込めないと思われ、どう解析しようかと悩んでいました。

状況が変わったのはRetroN 5用のfactory imageをmicroSDカードに書き込み、レトロフリークに装着して起動したときからです。もしかしたらレトロフリークでRetroN 5のリカバリモードが起動するのでは?との淡い期待は半分あたり。結果は何故かレトロフリーク用のリカバリモードが立ち上がりました。RetroN 5のリカバリモードにある画面写真では、背景にRETRON 5という文字がグラフィックで描かれていますが、これがretro freakになっています。
DSC_0005 - コピー


RetroN 5用のrecovery imageにレトロフリーク用の画像があらかじめ入っているとは考えにくいので、レトロフリーク内NAND flashのリカバリモード(リカバリ用カーネルと/パーティション)が起動されている、と考えるのが妥当に思えます。

そこで、何故にRetroN 5のfactory image SDをレトロフリークに装着して起動するとレトロフリークのリカバリモードが起動するのか、という観点で調べてみました。

結論としては、以下の様な流れでリカバリモードが起動しています。

・通常のカーネルで起動後、/init.rcに記述された内容でいろいろ初期設定等を行う
・init.rcから呼び出される/mountfs.shで、SDカードの先頭セクタ16バイトをhexdumpでチェックし、それが525445525f354e4f4f425f5f4453544f(※1)だったら、SDカードのpartition 2, 3をそれぞれ/data, /cacheにmountする。そうでなければ普通にNAND flash内のpartitionを/data, /cacheにmountする。
・init.rcから(root権限で)/data/bootscript.shを呼び出す
・SDカードの/data/bootscript.shの記述(/system/bin/reboot recovery)により、リカバリモードで再起動する


(※1)ちなみにRetroN5用のfactory imageの先頭は以下の通り。mountfs.sh内では-Cの引数を使わずhexdumpしているので、4バイトのリトルエンディアンの並びになっています。レトロフリークでもRETRON5___BOOTSDという文字列に反応するのですね。

hissorii@ubuntu:~$ hexdump -C boot-recovery-SD-fullreset-v0.2.2.img | head -n 1
00000000 52 45 54 52 4f 4e 35 5f 5f 5f 42 4f 4f 54 53 44 |RETRON5___BOOTSD|


ところで、SDカードのpartition 2を/dataにmountする、/data/bootscript.shが呼び出される、この2点が重要です。
だったらRetroN 5 factory imageのpartition 2にあるbootscript.shにいろいろ記述すれば、好きなコマンドが実行出来るのではないか、と考えられるわけです。
で、試してみたのが以下のツイートになります。

具体的にはbootscript.shを以下の様に書き換え、SDカード partition 2のhoge.txtにls -laRの結果を書き出す様にしてみました。最初の1行と最後の2行は元々のbootscript.shの内容です。

hissorii@ubuntu:~$ cat /mnt/tmp2/bootscript.sh
#!/sbin/busybox sh

echo hoge > /data/hoge.txt
/sbin/busybox ls -laR / >> /data/hoge.txt
echo uhyo >> /data/hoge.txt
sync; sync; sync

# reboot into recovery
/system/bin/reboot recovery

書き換えたmicro SDをレトロフリークに装着して起動すれば、micro SD上のbootscript.shが実行され、micro SDにhoge.txtが無事に書き出されました。
レトロフリーク用のアップデータを使った手法ではないので、個々のレトロフリーク用のアップデータファイルを用意する必要もありません。単一のmicro SDでどのレトロフリークでも任意のコマンドが実行できます。

という訳で、RetroN 5のfactory imageを書き換えることで、レトロフリークで任意のコマンドが実行できることが確認できました。
ここまでで、とりあえずの下準備はokです。
後はレトロフリーク上のapkファイルをmicro SDにコピーして取り出し解析するなり、レトロフリーク上のプログラムを別のプログラムに置き換えたり等、いろいろと遊べる環境が整いました。

次はレトロフリークのNAND flashを全ダンプできるか試してみようと思います。


Comment

コメントの投稿


管理者にだけ表示を許可する

Trackback

http://hissorii.blog45.fc2.com/tb.php/258-a6a3bf7c

«  | HOME |  »

プロフィール

ひっそりぃ

Author:ひっそりぃ
Twitter:@hissorii_com
GitHub:hissorii


月別アーカイブ


最新記事


カテゴリ



最新コメント


最新トラックバック




RSSリンクの表示


Amazon


QRコード

QRコード

Amazon


ブログランキング

ブログランキング【くつろぐ】
にほんブログ村 ゲームブログ×PlayNCBlogへ

メールフォーム

名前:
メール:
件名:
本文:


カウンタ