ページ 11

バイナリローダーについての質問

未読記事Posted: 2010年11月29日(月) 00:28
by plum
日本のとあるゲームでSavedata Exploitを発見したので「Hello World」を表示させようと、まもすけさんの記事を参考に
して作っていたのですが、フリーズするだけでなかなかうまくいかないので質問にきました

↓Exploit
WS000002.JPG


バイナリローダーについての質問なんですが、"sceKernelDcacheInvalidateRange", "sceKernelDcacheWritebackInvalidateAll" がない場合は
"sceKernelDcacheWritebackAll"や"sceKernelDcacheWritebackRange"、"sceKernelDcacheWritebackInvalidateRange"で代用できるのでしょうか?

セーブデータを作成した手順は、

1. EBOOT.BINが復号化された状態のBOOT.BINをprxtoolを使って、関数のアドレスのリストを作成
(0x08800000より後のアドレスではなかったので、psplinkのmodimpコマンドを使って調べました ※ちゃんと0x08804000を引くと、prxtoolと同じ結果になりました)

2. sparta_sdkのloader.sの5箇所を書きなおし、コンパイルしてa.binを作成
("sceKernelDcacheInvalidateRange"は"sceKernelDcacheWritebackInvalidateRange"を代用)

3. 復号化したセーブデータをひらいて、名前のアドレスからpsplinkの$raレジスタのところに表示される手前までのアドレスに'a'と書きこむ
4. exploitを起こすアドレスの近くの4の倍数のアドレスにa.binを書きこむ
5. a.binの最初のアドレスから0xF0を足したアドレスに"ms0:/h.bin"と書きこむ
6. 実際にクラッシュさせて、psplinkで、savemem 0x08800000 0x20000000 memdump.bin と入力して、メモリのダンプをとる
7. ダンプしたメモリをひらいて、a.binの最初のアドレスを探し、そのアドレスに0x08800000を足す
8. psplinkで$raレジスタのところに表示されるアドレスに"7."で取得したアドレスを書きこむ
(例 "0x08A1CB68" だと "68 CB A1 08" と書きこむ)
9. とりあえずsparta_sdk.hとmain.cは"sceKernelExitGame"以外は消してコンパイルし、ms0:/h.binを読み込んだら終了されるかどうかテストする

こんな感じでやってますが、どこかおかしはないでしょうか?

Re: バイナリローダーについての質問

未読記事Posted: 2010年11月29日(月) 00:54
by teck4
plum さんが書きました:日本のとあるゲームでSavedata Exploitを発見したので「Hello World」を表示させようと、まもすけさんの記事を参考に
して作っていたのですが、フリーズするだけでなかなかうまくいかないので質問にきました

↓Exploit
WS000002.JPG


バイナリローダーについての質問なんですが、"sceKernelDcacheInvalidateRange", "sceKernelDcacheWritebackInvalidateAll" がない場合は
"sceKernelDcacheWritebackAll"や"sceKernelDcacheWritebackRange"、"sceKernelDcacheWritebackInvalidateRange"で代用できるのでしょうか?

セーブデータを作成した手順は、

1. EBOOT.BINが復号化された状態のBOOT.BINをprxtoolを使って、関数のアドレスのリストを作成
(0x08800000より後のアドレスではなかったので、psplinkのmodimpコマンドを使って調べました ※ちゃんと0x08804000を引くと、prxtoolと同じ結果になりました)

2. sparta_sdkのloader.sの5箇所を書きなおし、コンパイルしてa.binを作成
("sceKernelDcacheInvalidateRange"は"sceKernelDcacheWritebackInvalidateRange"を代用)

3. 復号化したセーブデータをひらいて、名前のアドレスからpsplinkの$raレジスタのところに表示される手前までのアドレスに'a'と書きこむ
4. exploitを起こすアドレスの近くの4の倍数のアドレスにa.binを書きこむ
5. a.binの最初のアドレスから0xF0を足したアドレスに"ms0:/h.bin"と書きこむ
6. 実際にクラッシュさせて、psplinkで、savemem 0x08800000 0x20000000 memdump.bin と入力して、メモリのダンプをとる
7. ダンプしたメモリをひらいて、a.binの最初のアドレスを探し、そのアドレスに0x08800000を足す
8. psplinkで$raレジスタのところに表示されるアドレスに"7."で取得したアドレスを書きこむ
(例 "0x08A1CB68" だと "68 CB A1 08" と書きこむ)
9. とりあえずsparta_sdk.hとmain.cは"sceKernelExitGame"以外は消してコンパイルし、ms0:/h.binを読み込んだら終了されるかどうかテストする

こんな感じでやってますが、どこかおかしはないでしょうか?

おめでとうございます。間違いなくexploitですね。ただJAX氏のexploitに非常に似ています。J416氏に確認を取ってください。

少しだけ気になったことなど。
"sceKernelDcacheWritebackInvalidateAll"の代わりに"sceKernelDcacheWritebackAll"が使えるという話は以前J416氏から聞いたので大丈夫だと思います。
私のときは"sceKernelDcacheInvalidateRange"が無かったのでバイナリローダーからもコメントアウトしましたが動きました。

sparta_sdk.hのアドレスの書き換えが手順にありませんがやってますか?
書き換えるのは以下のものだけでいいとJ416氏が仰っていました。
コード: 全て選択
sceDisplayWaitVblankStart
sceDisplaySetFrameBuf
sceDisplaySetMode
sceCtrlSetSamplingMode
sceIoOpen
sceIoClose
sceIoWrite
sceKernelExitGame
sceKernelDcacheWritebackAll
sceCtrlReadBufferPositive

ここで聞くなら9の手順をせずに最初からHelloWorldを狙って大丈夫だと思います。

Re: バイナリローダーについての質問

未読記事Posted: 2010年11月29日(月) 01:06
by minomushi
おめでとうございます。
exploitです。
しかし、teck4氏の言うとおりJAX氏の物と非常に似ています。
j416氏に連絡をとった方が良いかと。

で質問の件ですが
方法的にはあっていますよ。
loader.sをそのまま書き換えれば良いだけです。

Re: バイナリローダーについての質問

未読記事Posted: 2010年11月29日(月) 01:08
by j416
おめでとうございます。
ただかなりJAX氏のものに似ています。以下の画像がJAX氏のexploitのときの画像です。
画像
一応確認のPM送りました。よろしくお願いします。

Re: バイナリローダーについての質問

未読記事Posted: 2010年11月29日(月) 01:27
by plum
PM確認しましたが、おそらくですが被ってますね
結構有名なゲームなのでどなたのかと被ってるだろうとは思っていましたがw
とりあえず「Hello World」が表示できるまで頑張ってみます

Re: バイナリローダーについての質問

未読記事Posted: 2010年11月29日(月) 01:31
by j416
plum さんが書きました:PM確認しましたが、おそらくですが被ってますね
結構有名なゲームなのでどなたのかと被ってるだろうとは思っていましたがw
とりあえず「Hello World」が表示できるまで頑張ってみます

まだ違う可能性があるので、PM送りました。どうでしょ。

Re: バイナリローダーについての質問

未読記事Posted: 2010年11月29日(月) 01:33
by mamosuke
おめでとうございます。

とりあえずはHello World表示を頑張ってください!

Re: バイナリローダーについての質問

未読記事Posted: 2010年11月29日(月) 01:48
by plum
j416 さんが書きました:
plum さんが書きました:PM確認しましたが、おそらくですが被ってますね
結構有名なゲームなのでどなたのかと被ってるだろうとは思っていましたがw
とりあえず「Hello World」が表示できるまで頑張ってみます

まだ違う可能性があるので、PM送りました。どうでしょ。

PM確認しました
その文字は入ってませんでした

Re: バイナリローダーについての質問

未読記事Posted: 2010年11月29日(月) 01:52
by j416
plum さんが書きました:
j416 さんが書きました:
plum さんが書きました:PM確認しましたが、おそらくですが被ってますね
結構有名なゲームなのでどなたのかと被ってるだろうとは思っていましたがw
とりあえず「Hello World」が表示できるまで頑張ってみます

まだ違う可能性があるので、PM送りました。どうでしょ。

PM確認しました
その文字は入ってませんでした

被った可能盛大ですね・・・。orz
PM送りました。できればPMで返すようお願いします。