Entries

iPhoneアプリから、画像や音声データを取り出す方法

iPhoneアプリの中を開いて、ゲームの画像とかBGMとかステージデータとかぶっこ抜けることに気づいた。アプリのファイルが欠る不具合をデバッグしていたら、色々できたのでメモメモ。XCodeでビルドした自分アプリを開けるのは知ってたのですが、iTunesで買った他人のアプリを開けるのは知りませんでした。暗号化されてると思ってたのに。

特殊なツールなしに1分ぐらいできたり。

アプリ内データの取り出し方

アプリフォルダを開く

  • iTunesのアプリを開き、左メニューからAppを選択してアプリ一覧をだす。
  • アプリを右クリックし「Finderで表示」を選ぶ

アプリの解凍

  • アプリを選択して右クリックからコピー(安全のために)。
  • アプリの拡張子を.ipaから.zipにリネームします。
  • 変更時にポプアップで確認がでるので「.zipを使用」を選択
  • リネームした.zipファイルを解凍

データのサルベージ

  • 解凍フォルダ内でPayloadフォルダを開く。
  • アプリと同名のファイルがあるので選択して右クリック「パッケージの内容を表示」を選ぶ
  • 画像、テキスト、音楽、翻訳ファイル等が色々と・・・

圧縮Pngの復元
アプリ内に入っているpngファイルは、特殊なpngで普通にはphotoshopでは読めません(premultiplied alphaというアルファ合成を事前計算したpng)。とりあえず、ダブルクリックしてMacのPreviewアプリで表示してtiffとかに保存などしてから読み直せば大丈夫のはず。

アプリは改造できるのか?
ここまでできると、画像やデータを差し替えてアプリが改造できないかな・・・と思うのが人の性ですが・・・ CodeSignによってアプリの同一性が保たれているため、変造アプリはiTunesにリストすることは無理。

<追記>
UDIDを認証に使ったり、平文パスワードを保持したりするのがセキュリティ的にNGで認知されるべきならば、ipaファイルが素っ裸でセンシティブなデータを入れるべきでないというのも認知されるべきかなぁ、と思ったので書いてみた。あとサルベージしたデータを人に配るのは明らかにNGなのでやめましょう。