ようやく新しい「Apple Wireless Keyboard」が届きました。小さいです。薄いです。見た目もイイです! ということで、近々ご紹介させていただく予定です。

さて、今回はiPod touchシリーズの第2回、題して「脱獄編」。察しのいい方はお気づきと思うが、iPhone用のハックツール集「Jailbreak」を利用し、iPod touchに"勝手アプリ"を入れてしまおうという算段だ。10月10日にiPod touch対応版が公開されたので、リスクを顧みず試した結果を報告してみよう。

ワレ"脱獄"ニ成功セリ

ついにiPod touchで"脱獄"に成功した猛者が現れた。通常はアクセスできないルートボリュームをある方法でMac側に吸い上げ、設定ファイルを変更したうえで書き戻す、というiPhoneと同じ手法でだ。手順は、おおむね以下に示すとおり。どうしても試したい場合には、iPod touchのコミュニティサイト「Touchdev」などにアクセスし、最新の情報を確認したうえ、At your own riskの方針で臨んでほしい

なお、記事の内容はすべて実際に試しているが、あくまで10月11日時点の状況(iPod touchのファームウェアはv1.1.1、母艦にはIntel Macを使用)であり、それ以外の環境では動作しない可能性が高い。TIFFの表示に関連する脆弱性を突いたハックという事情からすると、Appleも早々にセキュリティパッチを用意するものと予想されるので、この記事の賞味期限が短いことをあらかじめ承知願いたい。

  1. iPod touchでSafariを起動し、Safariは異常終了させるためのURLにアクセスする(あえてリンクは張りません。興味のある方は、「toc2rta」のキーワードで検索してください)
  2. iPHUCなど必要なツール一式が収録された書庫「Jailbreak」をダウンロード、デスクトップに展開する
  3. バージョン5.0以降のGNU readlineライブラリが、/opt/local/libディレクトリにインストールされていることを確認する。Mac OS X付属のもの(/usr/lib/libedit.2.dylib)は代用不可
  4. iPod touchをUSBケーブルでMacに接続する
  5. カレントディレクトリを手順2でダウンロード & 展開したディレクトリへ移し、「./iphuc」を実行。最初に実行したときは、なぜかリカバリモードで起動したため、iPod touchを再起動後にiphucを実行したところ、ノーマルモードで起動した
  6. 内部コマンド「getfile」を利用し、iPod touch上のデータをバックアップ。作業には5分ほど必要
  7. iphonefsディレクトリに「rdisk0s1」という約300MBのイメージファイルが作成されているので、Finderを使い拡張子「.dmg」を追加する
  8. rdisk0s1.dmgをダブルクリックすると、「Snowbird3A110a.N45Bundle」というボリュームがマウントされる
  9. 8のボリュームの/etc/fstabを、2でダウンロードした書庫に含まれる「fstab」で置換、その後アンマウントする
  10. 内部コマンド「putfile」を利用し、rdisk0s1.dmgをiPod touchに書き戻す。作業には2~3分必要
  11. iphucにプロンプトが戻れば転送完了。iPod touchを再起動する

iPHUCを起動したところ。これからiPod touchに接続し、ディスクイメージをやり取りする

このように、iPod touch上のデータがMac上に吸い上げられる

Safariがクラッシュしたときにアクセス不能となるユーザ領域は、FTP / SFTPクライアント「Cyberduck」を使い復活させた。/var/rootにあるシンボリックリンク「Media」を適当な名前にリネームし、さらに「Mediaold」フォルダを「Media」にリネームしたあとiPod touchを再起動すると、音楽も写真も元通りアクセスできるようになった。

ユーザ領域へのアクセスを復活させるには、Cyberduckを利用する

ディスクイメージの内容を覗き見る

取り急ぎ"勝手アプリ"のインストールに進みたいところだが、まずは抽出したディスクイメージをもとに、iPod touchのシステム構成を調べてみよう。

使えそうなコマンドだが、/binには「launchctl」があるのみ。シェルもなければcplsといった基本コマンドもない。/sbinも似たようなもので、fsckmountkextloadといった必要不可欠なコマンドが8種類あるだけだ。/usr/bin/usr/sbinも確認したが、シェル環境で便利に使えそうなコマンドは見あたらない。なお、「help」を実行するとわかるが、組み込みのシェルはbash 3.2.0だ。

ディレクトリ構成は、Mac OS Xに準じていると判断できる。/Usersはないが、/Applications/Libraryはある。/System/Library以下のサブディレクトリも、ExtensionsFontsFrameworksなどなど、見覚えのあるものばかりだ。なお、CoreServicesディレクトリ内にFinder.appとDock.appを見つけることはできなかった。細かい話だが、CoreServicesにあるSystemVersion.plistには、製品名として「OS X」と記載されていた。

iPod touchのディレクトリ構成。Mac OS Xに準じているが、微妙に違う

次回は、いよいよ"勝手アプリ"を導入する。iPhone用のアプリケーションは動作するのか? など、動作の検証を中心に進める予定だ。