PSP goでの脆弱性発見に向け、wololo氏が自身のブログでPSPLinkを使ったexploit確認方法の記事を掲載していました。PSP goのハックに向けてゲームを使わないexploitを探してみませんか?【情報源:Wagic,Magic the Gathering, and PSP homebrews】
※字数制限で一部リンク削除してます
Looking for vulnerabilities in the PSP Firmware
PSPファームウェアの脆弱性を探す
I’ve described in a previous article how to look for exploits in games on the PSP. But as you may or may not know, the new PSPGo’s business model made game exploits useless for the average user.
以前の記事にPSPのゲームでのexploitの見つけ方について書きました。ただ、ご存じの事と思いますがPSP goのようなモデルの場合一般ユーザーにとってゲームを使用したexploitというのは意味がありません。
Let me explain: if an exploit is found (and revealed) in a Game on the PSP, Sony will simply remove the game temporarily from the PSN Store,and it will be available again only if the game’s developers fix the issue. So the only people who will be able to benefit the exploit will be those who downloaded the game from the PSN Store before the exploit was made public. (unless you didn’t know, the PSPGo has no UMD drive,and therefore all games for this machine must be bought on the PSN)
つまりこういうことです:仮にPSPのあるゲームでexploitが見つかった(または公開された)としても、ソニーとしては一旦PSNストアからゲームを削除し、開発者がexploitの原因となった問題を修正したのち再度ダウンロードできるよう公開すれば良いのです。そのためexploitの恩恵に与れるのはそのexploitが公開される前にPSNストアからゲームをダウンロードしていたユーザーに限られます。(万が一ご存知ない方のために書いておきます。PSP goにはUMDドライブがないためゲームは必ずPSNでダウンロード購入する必要があります。)
Yep, that’s not cool, and it explains why Freeplay doesn’t want to make the recent hack of the PSP Go public (the exploit is still useful for hackers as it allows to run unsigned code on the PSPGo, and therefore analyze its firmware more precisely). It also explains why we should now be looking for vulnerabilities in the PSP Firmware (such as the laughman tiff exploit that led to chickHEN a few months ago) rather than games.
そう、その辺りがイマイチなのです。Freeplay氏が最近発表したPSP goのハックを公開したがらない理由も分かります。(それでも非署名コードをPSP goで実行できるexploitはハッカーにとっては有益です。ファームウェアのより正確な解析にも役立ちます。)また、なぜ今我々がゲームを使わないPSPファームウェア自体のの脆弱性を調査しているのかの理由でもあります。(数ヶ月前に発表された、笑い顔画像のTIFF exploitからchickHENに繋がったのと同様の脆弱性です。)
In this article I will explain how to monitor the PSP Menu with PSPLink. If you haven’t read my previous post on savegames exploits, I suggest you do it, as it is a nice introduction to PSP exploits. Disclaimer: I’m not the best PSPLink user in the world, so this article might be incomplete on some parts.
この記事ではPSPLinkを使ってPSP Menuをモニターする方法について説明します。Savegames exploitについての過去記事をご覧になっていない方は一度目を通してみてください。PSPのexploitについての導入記事にはもってこいだと思います。注意:私はPSPLinkについて世界で一番詳しい、というわけではありません。そのためPSPLinkの記事としては不足な内容かもしれませんのでご了承ください。
Setup
準備
Imagine you have a file that crashes your PSP. It can be a video file, an mp3, an image, etc… (I will explain later how you can find or create these files). How would you tell if it can become an exploit or not? Well, as usual, the answer is clear: PSPLink.
PSPをクラッシュさせるファイルがあると仮定します。動画ファイル、mp3、画像などになるでしょう。(そういったファイルの探し方や作り方は後述します。)それがexploitになりうるかどうか、どうすれば分かるのでしょうか?答えは決まっています:それがPSPLinkなのです。
PSPLink is a very usueful tool to analyze the Ram of the PSP. If you don’t have it yet, google for it. I personally have the version included with the minimalist PSPSDK.
PSPLinkはPSPのRAM解析するには非常に有益なツールです。まだお持ちでないならググってみてください。私自身は一番最小限のPSPSDK(開発ツール)に入っているバージョンのものを利用しています。
PSPLink has two parts of interest for this: one that goes on the PSP (basically, an EBOOT, as most homebrews), and two executables that run on the PC (they will display the information sent by the PSP to the PC).
PSPLinkは2つのパーツから構成されています:一つはPSP上で起動させるもの(他のHomebrew同様、基本的にEBOOTファイルとなっている)らそして二つ目はPC上で実行するもの(PSPからPCに送られる情報を表示するもの)です。
Once you have installed PSPLink on your PSP and plugged your PSP to your computer with a USB cable, open 2 command-line windows, in which you will run respectively usbhostfs_pc and pspsh.
PSPLinkをPSPにインストールし、USBケーブルでPSPとPCを繋いだらusbhostfs_pcとpspshを起動させてDOSのコマンドラインウインドウを2つ開きます。
When this is done, you can run the PSPLink EBOOT on your PSP. If everything goes well, pspsh on your computer will display “host0:/” and usbhostfs will say “Connected to Device”. It should look like this:
準備ができたらPSPでPSPLinkのEBOOTを起動します。段取り通りできていればPC上のpspshのウインドウに“host0:/”と表示され、usbhostfsのウインドウには“Connected to Device”と表示されます。このようになるはずです。
If you need more information on PSPLink, google for it.
もっとPSPLinkについてお知りになりたい場合はググってみてください。
Running the XMB/VSH
XMB/VSHの起動
Now that’s the interesting part. If you’re a developer, you might know how to run your homebrews’ prx files from there. But how can you access the PSP Menu? Well that’s actually very easy, as you only need to type the two following commands in pspsh:
それではメインイベントです。あなたが開発者の場合はHomebrewのprxファイルの起動方法はご存知でしょう。でもPSP Menuへのアクセス方法は?実はとても簡単なのです。pspshで以下の2つのコマンドを入力するだけです。:
reset vsh
flash0:/vsh/module/vshmain.prx
And that’s it! Let me tell you, it is way easier than doing it for savegames, as no plugins are required.
以上です!一つだけ言わせてください。今回の方法はゲームのセーブデータで実行するより簡単な方法です。プラグインが不要なのですから。
Test your crash
クラッシュテスト
Then what? Well, you do whatever is needed to reproduce your crash. In my case, I have an mp3 file that crashes the PSP, so on my PSP I go to the music menu, and try to play the files.
それでどうすればいいのでしょうか?あなたがすべきことはクラッシュを再現することです。私の場合はPSPをクラッシュさせるmp3がありますので、PSPのミュージックメニューに行き、ファイルをプレイします。
When the crash occurs, pspsh should display the current state of the registers, and lots of useful information.
クラッシュするとpspshの画面に各レジスタの現在の状況や有益な各種情報が表示されるでしょう。
MIPS…
>From here, what you need is MIPS assembly knowledge, and lots of patience. But I can’t teach you that :) . For the basics, you can still read my article on Savegames, as we are looking for the exact same thing: a way to overwrite $ra
これ以降はMIPSアセンブリの知識が必要になります。忍耐力も必要です。残念ながら私では皆さんにお教えすることができません。基本的なことはゲームのセーブデータに関する私の記事を参考にしてください。正に同じことができればいいのです: つまりは$raレジスタの値の書き換えなのです。
By the way, you need a hacked PSP to run PSPLink, so don’t try this on Official Firmwares.
ちなみに当然のことですが、PSPLinkを起動するためにはCFWを導入したPSPが必要です。公式ファームウェアのPSPでやろうとしないようにしてください。
まもすけがやるとPSPSHで”host0:/”が表示されないんですよね。困った物です。