6146932 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

たしなみガジェット

たしなみガジェット

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X
2010年03月05日
XML
テーマ:PSP発売!!!!(263)
カテゴリ:PSP Hack
最近相次いで見つかっているPSPのセーブデータexploitですが、Wagic, Magic the Gathering, and PSP homebrewsでwololo氏が次のステップとなるバイナリーローダーの作り方の記事を掲載していました。【情報源:Wagic, Magic the Gathering, and PSP homebrews

長文に付き、文字数制限のため翻訳のみでお伝えします。
時間がなくて翻訳になかなか取りかかれずwololo氏が記事を書いてからちょっと時間が経過してしまいましたが、内容としては時間と共に陳腐化するものでは全くないので非常に参考になると思います。


バイナリーローダーの作成

GripshiftとMOHH exploitから学んだので、今はバイナリーローダーの作成方法の簡単なガイドなら作れると思います。

この記事について
PSPでHomebrewを実行するための最初のステップはユーザーモードexploitを発見することです。これはゲームでのバッファーオーバーフロー画像を操作するといったテクニックを利用してPSPのRAMをコントロールすることになります。
こうした脆弱性を見つけて、値が可変するレジスタ$raをフルコントロールします。次のステップはその実証となります。バイナリーローダーを作るにあたり基本的な考え方は、記述したコードからメモリースティックに置いたファイルにある別のコードを読み込み実行させるということになります。
バイナリーローダーの作成は方法さえわかってしまえばそんなに複雑ではありませんが、どこかに情報が集まっている訳ではないためできるかどうかは知識の有無に依存してしまいます。
ということでこちらですスマイル

警告: 私自身最近になってようやくその方法を知ったばかりです。 ですからこれから書く方法は最良の方法とは言えないかもしれません。MIPS(CPUアーキテクチャ)のように自分でも理解していない部分はおもいっきり流してます。そうそう、Makefileは行けそうな時にはRubyでスクリプトを記述しました。ネットに書いてあることはすべて本当だとは思わない程度に読んでくださいね。

このガイドでは皆さんが既に$raの値を自由に変えることならばできるという前提で書きます。ゲームのセーブデータを例にあげてみましょう。XMBでの脆弱性を見つけた場合だと少しやり方が変わりますが、主要な所は同じです。PSPLinkの使い方も知っているものとします。HEXエディタの使い方やCやMIPSを扱うに当たっての言語の記述の仕方、基本的なMakefileの大まかな知識、そしてHomebrewを作りたいという気持ちも既にお持ちだとの前提ですスマイル

目次
セーブデータexploitを使ってバイナリーローダーを作成するためのステップは以下です:

1.ジャンプする場所を探す
2.インポートするファンクションを探す
3.バイナリーローダーをコンパイルする
4.バイナリーローダーをセーブデータに書き込む
5.ゲームに適用するSDK(開発キット)を作成する
6.動作を実証するためのバイナリーファイルを作成する(Hello Worldなど)
7.セーブデータを暗号化し直す

ジャンプする場所を探す
PSPLinkを起動させ、いつものやっているようにゲームをクラッシュさせます。そのまま次のステップを実行していきます。

wololo1


$raのコントロールができたら、バイナリーローダーのコードを入れたいアドレスにジャンプさせるようにします。原則としてコードはセーブデータの中に書きますので、セーブデータがRAMのどこからどこまでに入っているかは知っておく必要があります。当然セーブデータとRAMを見て比較しなければなりません。クラッシュした後にRAMをダンプするにはPSPLinkでsavemem 0x08800000 20000000 memdump.binと入力してください。これによりPCにmemdump.binという約20MBのファイルが保存されます。

セーブデータの中の分かりやすい部分をまず探してください。同じ文字や数字が続いている部分が分かりやすいでしょう。その部分と同じ部分をダンプしたデータの中から探します(もちろんHEXエディタを使います)。下の画像ではダンプデータが左でセーブデータが右になります。
DUMP


ダンプデータでセーブデータと同じ部分を見つけることができればジャンプしたいアドレスを知ることができ、セーブデータのどこにコードを書けば良いのかが分かります。この例の場合見つけたパターンはセーブデータの場合0x43F0から始まっていて、それがダンプデータでは0x32C3E0になっています。実際にダンプを開始したアドレスは0x08800000からなのでRAM上での実アドレスは0x8800000 + 0x32C3E0 (=0x08B2C3E0)ということになります。PSPLinkがまだ開いていたらmemdump 0x08B2C3E0 20と入力してメモリダンプしてみれば先ほどのパターンが出てくるかを確認できます(アドレスの部分は自分で決めたアドレスにしてくださいね。もちろん。)
選んだセーブデータ内の数百バイト以上あるエリアのパターンと全く同じパターンがあるという、ジャンプさせたい場所は正確に知りたいでしょう。そのエリアでセーブデータとダンプデータに違いがあった場合、それはセーブデータブロックがそのエリアで完全に読み込まれなかったということになりコードを書くことがより困難になります(コードがRAM内に散乱するよりも1ヶ所にまとめたいでしょう)あっかんべー
ということで第一ステップとしては: ジャンプするに相応しい場所(0x08B2C3E0)を探してSDDATA.BIN(0x43F0から)にバイナリーローダーを入れ込むことになります。

インポートするファンクションを探す
ここからはかなり難しそうなところへ踏み込みます。かなり本格的な知識が必要なように感じますが、実際にはそれほどでもありません。その理由はつまり、良いツールがすでにあるからです。
Homebrewのコードを書くときには、PSPSDKのファンクションを呼び出します。ただしゲームを利用するexploitの場合にはRAM内のどこでファンクションを呼び出すのかがあらかじめ分かりません。そのためきちんと探し出してリダイレクトしてやる必要があります。
ではゲームの場合で考えてみましょう。ゲームからEBOOT.BINを抜き出して復号化するとします。EBOOT.BINはゲームのISOファイル内にあるのでまずそのISOファイルを用意しなければなりません。ゲームがUMDだった場合、カスタムファームウェアであればISOファイルに変換することは簡単です。どのカスタムファームウェアでもUSB Driveオプションがついていますので問題ありません。(ゲームがPSNで購入したものだった場合にはNPDecryptorでISOファイルに変換できます)。
まもすけ注:NPDecryptorは著作権を侵害しているという理由で現在ネット上からほとんど削除されてしまっています。

iso


ほとんどの場合、EBOOT.BINは暗号化されているのでprxdecrypterを使ってさらに復号してやる必要があります。

CapPrxDecrypter23a

一度EBOOT.BINを復号化してしまえば、prxtoolを使ってそこから情報を抜き出せます。コマンドは以下です:

prxtool -f EBOOT.BIN

これによってゲームに使われている個々のファンクションの実アドレスが分かります。Homebrewやバイナリーローダーで使えるファンクションはこのようになっています。

prxtool

ファンクション名に対応して16進数の値の後にライブラリの名称があることが分かるでしょう。ここから、その関連性が分かるだけでなくNIDSライブラリ/ファンクション名の関連付けが分かるxmlファイルも入手できます。こういったxmlファイルはsilversprings氏(Lan.st管理人)のサイト(http://silverspring.lan.st/)でも入手可能です。
xml nidsファイルが手に入ったら、次のようにコマンドを入力してください。

prxtool -f -n yourfile.xml EBOOT.BIN

更に分かりやすいものが出てくるでしょう。:)

prxtool2

この結果はどこかへ保存しておいてください!
もしprxtoolにファイルはprxではないと言われたら、どこかの復号化で失敗しているか、違うEBOOT.BINを使ったか(ISOファイル内にはダミーのEBOOT.BINが複数あり)の可能性が大です。



この記事はPSPのexploitでBinary Loaderを作ろう 第2部へ続きます。


人気blogランキング←両方クリックで応援してね→にほんブログ村 ゲームブログへ
GameGaz_icon情報共有プロジェクト GameGazフォーラム





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2010年03月06日 00時28分34秒
コメント(0) | コメントを書く


PR

サイド自由欄

情報共有プロジェクト
GameGazフォーラム
GameGaz_icon

GameGazフォーラムを下記のサイトで紹介していただきました!
この場を借りて御礼申し上げます。
XBOX360 hackに関する私的メモ
PSP改造とか色々記事
GAME cheat&hack記事
Gameの玄人記事
Custom Wii Glossary記事
ALL GAMEHUCKS torrent通販記事
Junk Junky's Square記事
We are Pod!!記事
徒然なる紳士たちの雑記帳記事
DS PSP初心者用講座記事
PLAY@LIFE記事
SPaRB記事
厨ニ病の魔術記事
GAME Hack Navi記事
Life Style記事
PSP&Android完全攻略
GAME MEDIA記事



GameGaz_Blog_Logo
GameGazブログ
管理人が運営する
サテライトブログ



第5回楽天アフィリエイト選手権銀賞受賞サイト
大人のためのゲーム講座は第5回楽天アフィリエイト選手権で銀賞を受賞しました


当ブログが第5回楽天アフィリエイト選手権のコンテンツ部門銀賞を受賞しました
投票してくださった皆様ありがとうございました!

賞をもらった本人が一番ビックリしてます。
コンテンツが皆様にご評価いただけたと思って今後も頑張ります!

[追伸]
楽天の事務局さんからメールがきました。

『今回「電化製品・おもちゃジャンル」にて、銀賞を受賞されました
「http://plaza.rakuten.co.jp/mamosuke2008/」のサイトに関して
ですが、ユーザーの方より、業界の違法を助長する内容とのご指摘を受け、
検討させて頂いた結果、受賞の内容に変更はございませんが一旦、
http://affiliate.rakuten.co.jp/campaign/cup/0810/result/?l-id=aftop_04
こちらのページへの露出は控えさせて頂く事となりました。』

君子危うきに近寄らず?
想像するにマジコンという固有名詞が掲載されている時点でNG?
このサイトの内容は正義感にあふれてると思いますけど。
どこが業界の違法を助長する内容なのか納得いきませんが、石橋たたいて渡られたらそりゃ壊れますって。


本ブログはゲームに関する海外の最新情報を翻訳してお伝えするブログです。

Homebrew(自作アプリ)支持の立場ですが、不正コピーなどの違法行為に関しては断固として反対しております。
掲載されている各種情報はあくまでもHomebrew(自作アプリ)のための情報です。ゲーム業界の発展の障害となる不正行為はこれを追放すべきと訴えて行きます。

大人のためのゲーム講座
管理人
まもすけ






まもすけblogでは楽天オークションをお勧めしています



カテゴリ

日記/記事の投稿

カレンダー

バックナンバー

2025年05月
2025年04月
2025年03月
2025年02月
2025年01月
2024年12月
2024年11月
2024年10月
2024年09月
2024年08月

キーワードサーチ

▼キーワード検索

コメント新着

 通りすがりのbiblio@ Re:光るPSP用クレードル CHARGER STAND 4in1 for PSP-2000(10/21) こんにちは、かなり昔のブログ記事へのコ…
 mkeeeeeeeeiiiiiiopp@ Re:Gecko OS v2.0のスクリーンショット公開~でも開発は遅れ気味(02/05) lovemehbb7i7iyuu76f786tvr6yr76tycfythtf…
 威哥王@ 威哥王 中絶薬:http://www.xxkanpo.com/product/1…
 silver1202@ フリーワーク募集 私はやっているフリーワークを紹介します…
 silver1202@ フリーワーク募集           私はやっているフ…
 Nos@ 「CFW 6.35 Custom beta v3 for PSP2000」 「CFW 6.35 Custom beta v3 for PSP2000」…
 qwertyu@ Re:ゲーム最新情報 2011年1月16日のニュース kgsws氏ってMOHHの人ですよね!?懐かしい。…
 天然パーマ@ PSN PSNからゲームってどうやってダウンロード…
 天然パーマ@ (・_・)さん どういう場ってゲーム機のハック情報を紹…

お気に入りブログ

★美容&おすすめコス… autodustboxさん
大人のPS3 ひげぱわーさん

© Rakuten Group, Inc.
X