2009年07月06日一覧

メダル オブ オナー ヒーローズに新たなPSPのexploit発見?

DCEmuで、PSPのUS版Medal of Honor Heroes(メダル オブ オナー ヒーローズ)にexploitが見つかったようでテストファイルを公開していました。【情報源:DCEmu


MOHH exploit test
メダル オブ オナー ヒーローズexploitのテスト

This can be new exploit for MOHH (ULUS-10141), but it needs to be tested.
Download: http://zdoom.ic.cz/psp/moh-exploit.zip – read file “info.txt”
Medal of Honor Heroes(ULUS-10141)の新たに見つかったexploitです。ただしテストが必要です。
http://zdoom.ic.cz/psp/moh-exploit.zip からダウンロードし、中にある”info.txt”をご覧下さい。

tested on: (and works)
テスト環境(動作確認済み)
– PSP-1000 (M33)
– PSP-3000 (CFW enabler)


“info.txt”を読むと、どうもハック済みPSPではテストしたがノーマルPSPではテストしていないようです。そのための公開?
CFWの場合はnitePRプラグインでチートを有効にして実行してテストをしたようです。

その”読め”と言われたinfo.txtの翻訳です。


MOHH (1) exploit by kgsws

必要な物:
– CFW化したPSP (このexploitにはネットワーク接続が必要です)
– ノーマルPSP
– WiFi接続環境 (CFW、ノーマル双方ともに必要)
CFW化したPSPに必要な物:
– nitePRプラグイン
ノーマルPSPに必要な物:
-Medal of Honor Heroes(US) UMD

方法 (CFW化したPSP):
– nitePRをインストール
– ULUS-10141.txtをnitePRフォルダにコピー
– nitePRプラグインを有効に
– ゲームを起動、インフラストラクチャへ
– “create server”へ移動
– “Room name run:ms0:/hx”のチートを有効に
– サーバースタート
– プレイヤーとして加わる前に”Player name run:ms0:/hx”のチートを有効に
– 2番目のプレイヤーを待つ
– 終了

方法 (ノーマルPSP):
– “hx”ファイルをメモリースティックのルートへコピー(ms0フォルダまるごとコピーでOK)
– Medal of Honor Heroesを起動
– インフラストラクチャへ
– CFW PSPがサーバーを作るまで待つ(なぜCFW?)
– “lb”というゲームへ入る
– 最初のプライヤーを探す
– 最初のプレイヤーを狙う
– 多分それで終了

ノーマルPSPではテストしていません。可能ならば誰かお願いします。

その他の情報:

プレイヤー名の脆弱性を利用したformat-string exploitです。
通常はプレイヤー名を長い名前に出来ませんが、このformat-string exploitはそれが可能な唯一の方法です。
きっかり880文字の名前にすると(format-stringを利用して)、次の4文字が$raレジスタに格納されます。
そう、880文字がexploitの決め手です。
exploitコードはルームネームに保存されます。$raはそこへ指定します。
exploitコードはms0:/hxを読み込むだけです。
ルームネームはサイズに制限がありますので35文字しか入りません。(‘\0’は使えません)
今回はローダーを新たに作っておらず昔のものを流用してます。
またその仕組み上制限があり、アドレス0x08E3227Cに62064b分しかロードできません。ただしローダーは0x08E3228Cからは実行できます。つまり最初の4つの命令までは実行されません。
ms0:/hxのファイルは大きいですがこれはPSPのキャッシュのためで、自身でコンパイルするときには最後にちょっとコードを付加する程度です。
同じバグがMedal of Honor Heroes2にもあると思います。ただし試していません。

Room name code (addresses on execution):
#addr 0x08E32270
addi $a0, $a0, 0x626C # *path
#addr 0x08E32274
jal 0x08C92BE4
#addr 0x08E32278
li $a1, 0x0801 # flags (PSP_O_RDONLY | PSP_O_EXCL)
#addr 0x08E3227C
ori $a1, $ra, 0x227C
#addr 0x08E32280
andi $a2, $sp, 0xFFFF
#addr 0x08E32284
jal 0x08C92B94
#addr 0x08E32288
andi $a0, $v0, 0xFFFF
#addr 0x08E3228C
# ms0:
#addr 0x08E32290
# /hx

Registers on crash (new $ra):
zr:0x00000000 at:0x08C3BB58 v0:0x12000000 v1:0x08D10000
a0:0x08E2C020 a1:0x00000000 a2:0x08EC5BB0 a3:0x00003670
t0:0xD6000000 t1:0x47000000 t2:0x0046FFFE t3:0x08EC2540
t4:0x493F4000 t5:0x4A000000 t6:0x4B000000 t7:0x08D10000
s0:0x20202020 s1:0x20202020 s2:0x20202020 s3:0x46464646
s4:0x30464646 s5:0x08D923C0 s6:0x08D906A0 s7:0x00000002
t8:0x08D0BB80 t9:0x08D0BB80 k0:0x09FFFB00 k1:0x00000000
gp:0x08D4B440 sp:0x09FFF270 fp:0x00010000 ra:0x08E32270


$raに任意のコードが入れられるそうです。期待、かな?
PSPLinkの環境があってメダル オブ オナー ヒーローズをお持ちの方なら確認出来そうですが、日本版でも動作するのかどうかが不明です。

人柱に魅力を感じる方、今ならまだ購入出来ます。
US版Medal of Honor Heroes 新品3,800円から

日本版メダル オブ オナー ヒーローズ 中古2,199円から

[追記]
日本版メダル オブ オナー ヒーローズ買ってきました。

Medal of Honor Heroes

CFW機で吸い出してチートしてノーマル機でアドホックで繋いで…とめんどくさそうです。日本版で出来るかどうかも定かではありませんが。
普段チートしないので買ってはきたものの手が出し辛いです。
とりあえずDumpSPで吸い出してみます。

説明書を読んで気が付いたのですが、WiFiは”アドホック”のみです。
原文には”インフラストラクチャ”とあったのでそのまま翻訳しましたがアドホックの間違いのようです。翻訳を修正しました。
【追記】注:日本版はアドホックしか無いようです。(ゴン太さん情報ありがとね)

[追記2]
日本版のせいかも知れませんが、チートをULJM-05318.txtにしただけでは何にもでてきません。”Room name run:ms0:/hx”のチートを有効、というところで止まってます。普段チートしないのでさっぱり分からず作業中断です。ファイル名変更だけではダメ?