PSP Hack一覧

PSP goのeLoader(EBOOT:Homebrewを読み込むローダー)は開発頓挫か〜FreePlay氏にgo版ファームウェアの壁

PSP goのeLoaderリリースを予告(ゲーム最新情報 2009年11月8日のニュース参照)したFreePlay氏がYouTubeの最近のアクティビティでPSP goのeLoaderは想像以上に困難を極めていると現状を説明していました。【情報源:YouTube

FreePlay氏のコメントです。


An eloader for the Go is proving to be more difficult than I’d imagined. I could likely make one for FW 5.03 or FW 5.50, but until someone cracks the Go’s firmware update, it may be a lost cause. I have no way of making my NID resolver work when there are dozens of new functions on the Go that have completely unknown NIDs.
PSP goのeLoaderは思っていた以上に難しいようです。ファームウェア5.03や5.50でなら問題ないのですが、PSP go専用ののファームウェアを誰かがクラックしてくれないことには何ともなりません。全く未知のNIDが存在する新機能満載のPSP goでは動作するNID resolverを作る手だてがありません。


ファームウェア解析を他人に委ねる発言が見受けられることからFreePlay氏自身ではPSP goのファームウェアアップデート(6.10か?)は解析できなかったようです。
eLoader開発を公言してから一週間は経過していますから、当時は「行ける」と判断したのは間違いないと思いますが、ソニーがハッキング対策に満を持してリリースしたPSP goの壁を越えられないのが現状のようです。

すでにChickHENが動作するFW5.03や、exploitこそリリースされてはいないもののChickHEN対策が施されていないらしい5.50で今更動作させても意味がありません。ましてや初期ファームは5.70のPSP goですから現状でのリリースは全くの無意味です。つまり今更PSP-3000の5.50で動作するeLoaderを代わりに公開してもgoハックの可能性を消すだけですので必要ありません。

PixelJunk Monsters_Playing
ゲームをダウンロードするには最新FWが必要

PSP goを今購入するとBEST版ゲームを一つもらえるキャンペーンがありますからPSP goを購入したらほぼ間違いなく皆さん最新ファームウェアにアップデートしてしまっていることでしょう。これは海外でも同様だと思います。そのため当然FreePlay氏もターゲットファームウェアはgoの最新FWである6.10でしょう。逆にいうと最新ファームウェアに対応したハッキングでないとHomebrewをPSP goで楽しみたいユーザーのニーズを満たせません。

PSP goはPSPでは初めてファームウェアアップデートが専用データになっていますからやはり今まで通用してきた手法の延長技術では厳しいのかもしれません。新たな展開が待たれるところです。



PSPのmp3クラッシュバグはファジングで発見〜exploitの見つけ方をwololo氏が指南

wololo氏が、自身のブログでPSPのexploitを発見する方法についての興味深い記事を掲載していました。wololo氏はexploitにはならないことは分かっていながらもmp3ファイルでクラッシュするバグを発見したことを公表していましたが(ゲーム最新情報 2009年9月11日のニュース参照)、それをどのように発見したのかを説明しています。【情報源:Wagic, Magic the Gathering, and PSP homebrews

翻訳のみでお伝えします。


PSPのexploit – ファジング手法でクラッシュを探す

今まで何度かお話ししていますが、クラッシュを見つけることがPSPのexploitを発見する第一歩です。(他の機器でも同様なのですが、PSPの場合そのためのツールが充実しているので非常に簡単です)。

そういったクラッシュは通常は偶然の産物(セーブするのを忘れてしまったりという最悪の事態だったりしますが)なのですが、”強制的に”生み出す方法もあります。その一つがファジングです。最近その手法でMP3ファイルでクラッシュすることを発見しましたが(exploitにはならなかったですけどね)、ソフトウェアのテスト手法としては古典的ではありますがクラッシュを発見するためのこの”革命的な”方法は非常にすばらしいと思います。

ウィキペディアでは以下のように書いてあります:

ファジングとは、ソフトウェアの不具合(とくに脆弱性を意図することが多い)を発見するためのテスト手法の一つである。ファズ(英:fuzz)(予測不可能な入力データ)を与えることで意図的に例外を発生させ、その例外の挙動を確認するという方法を用いる。ファズテストと呼ばれることもある。

とても分かりやすいですね。これはプログラムにランダムなデータを投入しクラッシュするかどうかを確かめる方法です。私の場合”プログラムはPSPのmp3プレーヤーでランダムデータというのがmp3の破損ファイルでした。

YouTube:MP3 Crash PSP OFW 6.00.

テストだけならこれで十分なのですが、問題はこの方法でクラッシュを見つけるのは運以外の何ものでもないということです。ただ、PSPのmp3プレーヤーはプレイリストを使えば何千ものファイルを素早くテストをすることが可能なのです。

以下は私がmp3ファイルで実行したことです: 最初は極端に短いmp3ファイルを作りました。音楽の中身を弄くるソフトウエアはオープンソースのものが多いのでそれを用いました。それで1ビットづつファイルの中身を変えて何千ものファイルを作りました。もちろん1つ1つ手入力でなんてやっていません。スクリプトを使いました。私はRubyを使いましたがスクリプト言語であれば何でも構いません。(perl、php、python…その他Linuxのシェルで作ってもいいですし、CやC++でもいいです)。私のスクリプトはこんな感じでした。

ruby

スクリプトの内容はこのようになっています: “a.mp3″ というファイル(作成した普通のmp3ファイルです)を開き、iを0から200まで変えながらiに当たる場所をjの値に変更していきます。jは0から255までの値です。つまりファイルの中の全バイトを1バイトずつ変えてみようとしたわけです。これだけで何千ものファイルが出来上がります。iの値ごとにディレクトリを作成すると1フォルダごとに255個のファイルが出来上がります。ちなみに使った1GBのメモリースティックがすぐいっぱいになってしまうので変更したのはファイルの最初から200バイトだけです。もちろんもっとたくさん作ることは可能です。(ただしmp3プレーヤーがmp3のディレクトリで255個以上のサブフォルダを使えるかどうかは確認の必要があります)。この200バイトを変更した分までテストし終えたら次は201から400まで…というように順に実行しました。

files.png

これが完了してしまえば、そのファイル(各々のフォルダに入ったままですが、PSPのmp3プレーヤーはフォルダごとに999個のファイルが限界です)をコピーしてあとはすべて再生してみるだけです。

再生には時間がかかります。とはいっても再生中ずっとPSPを見ている必要はありません。たまに見た時にPSPの電源が落ちていたらそれはクラッシュが起きていたということになります。その場合次にファイルを半分に減らし、どのファイルが犯人かが分かるまで再び再生を続けます。

以上がこの手法の全てです。今回はmp3ファイルで実施しましたがもちろん動画ファイルや画像ファイル(スライドショーが使えますね)でも構いません。ただプレイリストの扱いがどうなのかよく分かりませんのでお試しになった方は結果を是非教えてください。この手法のポイントは莫大な数のファイルを短時間でテストすることが出来ることです。数千ものファイル(今回のmp3の場合は50万個ものファイル) をテストとはいってもソフトウェアが実行しうる組み合わせとしてはほんの一部分なのです。(1バイトではなく2バイト変えたら、ベースとなるmp3ファイルを変えたら、mp3ではなくwmaだったら、など考えだしたらきりがありません)。みなさんがこの手法で各自違った組み合わせを試してみることが大切ですが、例えば10個のファイル程度で結果が出るなどという甘い期待は抱かないほうがいいでしょう。

exploitを見つける方法は当然他にもありますが、今回のファジングに関しては利用するメリットがあります: それはプログラムの知識がないと出来ないようなものではなく比較的簡単に取り組める、ということです(もっとも多少スクリプトの知識は必要になりますが、mp3ファイルのどこがどうなるとクラッシュするといった知識は不要です)。時間もそんなにかかりません(大量にファイルをテストしてもシステム的にはちゃんと処理してくれます)。

このファジングの手法でPSPのmp3ライブラリにバグを発見したことで実は私も驚いています。当然ソニーも同じような方法でファームウェアをテストをしているだろうと思っていたからです。

今回の記事がソフトウェア側のセキュリティを設ける側の方々と、それを破ってDRMの悪夢から世界を解放しようとする方々に次のきっかけを与えることが出来れば、と思います。ハッキング万歳!


exploitを発見することが手柄のような風潮があり、その手法を公開するようなケースはまれだと思っていましたがさすがwololo氏はちょっと違いますね。
彼自身も普段からクラッシュバグを探していると思いますが公開されている数も少ない上に本当のexploitにまで至っていません。そのことは如何にexploitにつながるPSPシステムの脆弱性の発見が困難かを物語っているのではないでしょうか。とはいえ、多くのユーザーがバグ発見に取り組めばexploitが見つかる確率は確実に上がります。wololo氏の狙いもそこにあります。

FreePlay氏が、PSP goのeLoader(Homebrewローダー)を準備中(ゲーム最新情報 2009年11月8日のニュース参照)だそうですので、これを機にPSP goのハッキングが盛り上がるといいですね。



CFW5.03GEN-B for HENリリース〜5.03GEN-Bの紹介からインストール方法記事まで全訳

PSPGENで、PSP-3000とPSP-2000v3でCFW5.50GEN-D2と同等の機能を実現するカスタムファームウェア5.03GEN-B for HENをリリースしたことを伝えていました。【情報源:PSPGEN

ブログの字数制限のため翻訳のみでお伝えします。5.03GEN-B for HENの紹介記事3ページ分とインストール方法ページの全訳です。


カスタムファームウェア 5.03GEN for HEN-B (PSP-3000)

カスタムファームウェア 5.03GEN for HEN-B (PSP-3000)がついに完成です。これで目標をクリアしたとは考えていませんが、要求ファーム5.55以上のゲームやプロテクトがかけられたゲームはプレイ可能になりました。

1 – カスタムファームウェア 5.03GEN for HEN-B (PSP-3000): 内容説明

ついにCFW 5.03GEN for HEN-B (PSP-3000)の公開に至りました。皆さんにもお試しいただけることは喜ばしい限りです。
CFW 5.03GEN-Bはシステムバージョンが5.03までの、CFW対策基板となっているPSP-3000とPSP-2000v3で使用するためのCFWです。Davee氏のChikHEN R2を利用してCFW 5.03GEN-Aが(そして今回のGEN-Bも)起動できるようになりました。

5-03gen-b-1

5.03GEN-Bの中心となる機能は、カスタムファームウェア対策のためにプロテクトが施されたゲーム(ヱヴァンゲリヲン:序鋼の錬金術師)を含む要求ファームウェアが5.03より後のゲームの起動サポートです。Yoshihiro氏がCFW 5.03GEN-D2と同等の機能を盛り込むべく仕上げてくれました。
PSP-3000(PSP-2000v3も)のユーザーの皆さんは今まで放置されていたかのように感じていたかもしれませんが、こちらの動画を見て喜びを噛みしめていることでしょう。

ビデオ:Daily Motion Custom Firmware 5.03GEN-B for HEN (PSP-3000)

残念ながら、我々GENチームとしては目的を100%達成したとは思っていません。完璧とは言えない状況が残っているのです。

2 – カスタムファームウェア 5.03GEN for HEN-B (PSP-3000): 機能説明と既知の不具合

何が出来ないのかをご説明する前に、PSP-3000でのカスタムファームウェアとは何かというのを確認しておきたいと思います。

主要機能の内容について:
・ 公式ファームウェア5.03のPSP-3000とPSP-2000v3に対応
・ 要求ファームウェアが5.03より上のゲーム(6.xx含む)のバックアップ起動
・ 要求ファームウェアが5.03より上のゲーム(6.xx含む)のUMD起動
・ カスタムファームウェア対策を施されプレイ不可能だったUMD/やバックアップISOの起動
・ PS1ゲームの起動
・ SELECTボタンでGEN VSH MENUを起動
・ VSHでリカバリー機能有効
・ Homebrew起動
・ その他…

次に我々が解決に至っていない問題点についてです。

既知の不具合について:
・ メタルギア ソリッド ピースウォーカーのデモ版が起動しない
いろいろ手は尽くしましたが、5.50GEN-D2で動作している物が5.03GEN-Bでは起動しません。残念…

・ リカバリーは”混合”で
5.02GEN-AのリカバリーモードをPSP-3000で動作するようパッチしました。通常の機能には何ら支障はありませんが、VSHリカバリーにだけ問題があり修正しきれませんでした。実際メニューの行表示がおかしかったり正常に動作しなかったりします。PSP-3000に関してはリカバリーメニューは使用不可ですので、Total_Noob氏のUltimate VSH menuをインストールしておくことをおすすめします。

リカバリーのメニュー一覧と動作状況については以下です:

– Toggle USB = ok
– Configuration = ok
– Skip Sony logo: 動作不可 (しなくても問題なし)
 - Hide corrupt icons = 動作せずSonyロゴがスキップ
 - Game folder homebrew ok
 - Autorun program at /PSP/GAME/BOOT/EBOOT.PBP ok
 - Fake region ok
 - Use vsh menu ok
 - XMB USB Device ok
 - Charge device with usb ok
 - Use M33 network update ok
 - Use version.txt ok
 - Hide MAC address ok
– Use game categories = ok
– Reboot in official firmware > 動作不可
– Run program at = Menu Advanced
– Advanced = CPU SPEED
– CPU SPEED = Plugins
– Plugins = registry hack
– Registry hack = suspend device
– Suspend device = reboot in official firmware
– Reset system = quit

3 – カスタムファームウェア 5.03GEN for HEN-B (PSP-3000): インストール方法

CFW 5.03GEN-Bリリースの準備がようやく整いました。起動に必要な条件は以下です:
・ 公式ファームウェア5.03のPSP-3000とPSP-2000v3であること
・ メモリースティックにChickHEN R2が入っており起動できること

注意点:

HENとはHomebrew Enablerのことです。PSPの公式ファームウェア上でHomebrewを起動させることができるようになります。作者のDavee氏はChickHENでシステムの2つの脆弱性を利用しています:一つはMatiaz氏らが発見したexploit、もう一つは彼自身が発見した、ハードウェア本体(UMDやWiFiなど)の機能にアクセスすることができるカーネルモードexploitです。CFW 5.03GEN-Bを起動させるためには彼のChickHENはなくてはならない存在です。

HENについてもっとお知りになりたい場合は以下の記事をご参照ください。
(※PSPGENの紹介しているリンク先ではなくChickHEN&5.03GEN-A関連の翻訳記事をご紹介します。)
ChickHEN Homebrew Enablerリリース
ChickHEN for Firmware 5.03 R2 公式修正版リリース
Custom Firmware 5.03GEN-A for HEN インストール方法ページを翻訳
5.03GEN-A for HEN修正版リリース〜PSP-2000に対応

5-03gen-b-1

警告:

CFW 5.03GEN-B for HENはインストールした時点でもとに戻せなくなります。CFW 5.03GEN-B for HENは必要なファイルだけを追加するもので、公式ファームウェア5.03自体に変更を加えるものではありません。一度インストールするだけでカスタムファームウェアの状態となり、PSP本体のflash0にアクセスできるようになります。 PSP-3000(またはPSP-2000 v3)では絶対にflash0の中身は操作しないでください。公式ファームウェア5.03のファイルに変更を加えると二度と戻せなくなるばかりか起動すらしなくなる恐れがあります。ですのでPSP-3000とPSP-2000v3の場合はflash0を操作するような自殺行為は絶対に避けてください。

インストール方法:
注意: メモリースティックにプラグインが入っている場合、必ず無効(disable)にしておいてください。
Custom Firmware 5.03GEN for HEN-B (PSP-3000)のアーカイブファイルをダウンロードします
・ PSPをUSBでPCと接続します。
・ PSPの”USB接続”オプションでPSPをUSBモードにします
・ PCにダウンロードしたアーカイブファイルをマウスの右クリックします。
・ “解凍”を選択します(WinRARの場合)
・ 解凍先にPSPのドライブレターを選択します
・ OKを押してファイルの解凍が終了するまで待ちます
・ PSPで”USBモード”を終了します

使い方:
・ XBMでゲーム > メモリースティックにあるQuick Updater 5.03GEN-Bを表示します

Quick Update 5.03GEN-B

・ ×ボタンを押してアプリケーションを起動します
・ アプリケーション起動後の選択肢は以下です:
   ×:パッチを起動
   R:何もしないで終了
   ○:Version.txtをオリジナルに戻す(PSP売却時などにご利用ください)
・ 今回初めてインストールする場合には必ず×ボタンを押してください。適切なファイルがPSP本体のflashに書き込まれます。この操作でPSPがbrickすることはありません
・ その後”press X to reboot in CFW 5.03GEN-B”と表示されたら×ボタンを押してカスタムファームウェアを起動します
・ PSPが再起動するとCFW 5.03GEN-B for HENになります。

5-03gen-b-1
電源を切るまではカスタムファームェアのままです。

PSPを再起動後CFW 5.03GEN-B for HENへの復帰の仕方は?

CFW 5.03GEN-B for HEN-Bは正真正銘本当のカスタムファームウェアですが、PSP-3000(またはPSP-2000v3)からは直接改造ファームウェアを起動させることは出来ません。必ずDavee氏のchickHEN R2を先に起動した状態でQuick Updater 5.03GEN-Bを実行しカスタムファームウェアを有効にしてください。そんなに時間はかかりませんのでQuick Update 5.03GEN-Bを実行するのも手間ではないでしょう。

5.03GENの再インストール方法について:
もし5.03GEN-Bが既にインストール済みの場合、新規インストールオプションが表示されません(便利な機能です)。 ただ、どうしても再インストールしたい場合にはLボタンを押しながらQuick Update 5.03GEN-Bを起動すれば強制的に再インストールすることは可能です。


今回PSPGENは英語記事を公開しませんでした。
実際は機械翻訳の不手際を人力で修正したgoogle翻訳ですがGENチームに国際的リーダーの自覚が生まれたのだと感心していたところでしたのでちょっと残念です。