HBLをPatapon以外に対応させる

フォーラムルール
フォーラムをご利用するにあたってのルールは以下に記載してあります。
初めてご利用になる方へ:最初にお読みください

HBLをPatapon以外に対応させる

未読記事by neur0n » 2010年9月10日(金) 11:00

・import.configの編集
import.configは、StubテーブルのアドレスとHBLで使われる関数のNIDから構成されています。

・Stubライブラリの編集
あらかじめStubアドレスを探し出しておいてどこかにメモしておきます。
それに合わせてimport.configを書き換えます。
Stubアドレス数はゲームによって数が変わってきます。また、同じゲームでもFWによってアドレスが変わる場合があるので注意が必要です(HBLでimport.configがFWごとに複数あるのはそのため)。

ここではStubアドレス数が5つだった場合について解説します。

編集する前のimport.configです(画像はみんごるの物です)
緑色で囲った所がStubアドレス数で、青色で囲った所がStubアドレスのリストです。
画像ではStubアドレス数が8つあるので、青色で囲った部分のサイズは(4×8=)32バイトとなっています。
config.png


Stubアドレス数が5つだった場合は緑色で囲った所の数値を「8」から「5」に書き換えます。
次に、青色で囲ったStubアドレスのリストにメモしておいたStubアドレスを書き込んでいきます。
注意することは、一番始めに書き込むアドレスはゲームのMainModuleのStubアドレスになるようにしてください。
うまく書き込めればこのようになるはずです(ここでは分かりやすいように0xAAAAAAAAと書き込みました)。
config-2.png


もともとStubアドレス数が8つだった所を5つにしてしまったのでゴミが出てきてしまいました。ここは詰めてしまいましょう。
リストのサイズが(4×8=)32バイトから(4×5=)20バイトに減ったので、12バイト分詰めます。
config-3.png


これでStubアドレスの編集は完了です。しかしリストのサイズが変わったので、NIDリストのオフセット値がズレてしまっています次はこれを修正します。
        \     テーレッテー    /
          \  ∧_∧   /
            |∩( ・ω・)∩|<・・・
          / 丶    | / \     
        /     ( ⌒つ´)    \
neur0n
 
記事: 88
登録日時: 2010年6月09日(水) 13:48
お住まい: 関東甲信越

HBLをPatapon以外に対応させる

スポンサードリンク

スポンサードリンク
 

Re: HBLをPatapon以外に対応させる

未読記事by neur0n » 2010年9月10日(金) 15:59

NIDリストのオフセット値の修正を解説をする予定でしたが、ちょい面倒なので編集が容易になるツールを作りました。

"import.comfig -> TextFile"をクリックするとimport.comfigからテキストファイルを作成します。
"TextFile -> import.comfig"をクリックするとテキストフィアルからimport.comfigを作ります。
ConfigEditor.zip
Win7にて動作確認済み(GUIアプリです)
(91.68 KiB) ダウンロード数: 656 回


変換したテキストファイルを開いて「StubTable.*」となっている所を編集すればStubアドレスリストを編集できます。(右の数字はStubアドレスの数です)
ce.png


たとえば8つから5つに変えるときはこのようにします(アドレスは適当です)
ce2.png


NIDリストのオフセット値の修正は勝手にやってくれるので特に気にする必要は無い・・・はずです
        \     テーレッテー    /
          \  ∧_∧   /
            |∩( ・ω・)∩|<・・・
          / 丶    | / \     
        /     ( ⌒つ´)    \
neur0n
 
記事: 88
登録日時: 2010年6月09日(水) 13:48
お住まい: 関東甲信越

Re: HBLをPatapon以外に対応させる

未読記事by teck4 » 2010年9月10日(金) 17:57

便利なツールをありがとうございます。
とても簡単にconfigファイルが作ることができました。
おかげで先に進むことができます。
twitterはじめました。
http://twitter.com/teck4
Blogもはじめました。
http://teck4.com/blog/
teck4
 
記事: 81
登録日時: 2010年5月06日(木) 00:21

Re: HBLをPatapon以外に対応させる

未読記事by neur0n » 2010年9月27日(月) 10:23

ConfigEditorに「ファイルへのパスが長いとエラーが出てアプリが終了する」バグがあったので修正。
特にエラーが起きていなければ作り直す必要は無いです。

ConfigEditor.zip
(198.17 KiB) ダウンロード数: 694 回
        \     テーレッテー    /
          \  ∧_∧   /
            |∩( ・ω・)∩|<・・・
          / 丶    | / \     
        /     ( ⌒つ´)    \
neur0n
 
記事: 88
登録日時: 2010年6月09日(水) 13:48
お住まい: 関東甲信越

Re: HBLをPatapon以外に対応させる

未読記事by neur0n » 2010年10月11日(月) 13:20

追記:

このツールを使うよりもHBLに同梱されてるRubyスクリプトを使ったほうが効率がいいです。
このツールはPCに事情があってRubyが使えない人向けですね。
        \     テーレッテー    /
          \  ∧_∧   /
            |∩( ・ω・)∩|<・・・
          / 丶    | / \     
        /     ( ⌒つ´)    \
neur0n
 
記事: 88
登録日時: 2010年6月09日(水) 13:48
お住まい: 関東甲信越

Re: HBLをPatapon以外に対応させる

未読記事by neur0n » 2010年10月19日(火) 00:16

table.c の int build_nid_table() をパッチします。

コード: 全て選択
         // Get actual call
         cur_call = pentry->jump_pointer;
         good_call = get_good_call(cur_call);

の下の行に以下のコードを埋め込んでみてください。


コード: 全て選択
#ifdef BUILD_NID_UTILITY_FIX
         if( strcmp( (char *)pentry->library_name , "sceNet") == 0)
         {
            LOGSTR0(" is killed here\n ");
            good_call =0xFFFFFFFF;
         }
         else if( strcmp( (char *)pentry->library_name , "sceMp3") == 0)
         {
            LOGSTR0(" is killed here\n ");
            good_call =0xFFFFFFFF;
         }
         else if( strcmp( (char *)pentry->library_name , "sceMpeg") == 0)
         {
            LOGSTR0(" is killed here\n ");
            good_call =0xFFFFFFFF;
         }
         else if( strcmp( (char *)pentry->library_name , "sceNetAdhocMatching") == 0)
         {
            LOGSTR0(" is killed here\n ");
            good_call =0xFFFFFFFF;
         }
         else if( strcmp( (char *)pentry->library_name , "sceNetAdhoc") == 0)
         {
            LOGSTR0(" is killed here\n ");
            good_call =0xFFFFFFFF;
         }
         else if( strcmp( (char *)pentry->library_name , "sceNetAdhocctl") == 0)
         {
            LOGSTR0(" is killed here\n ");
            good_call =0xFFFFFFFF;
         }

#endif


あとは exploit_config.h に #define BUILD_NID_UTILITY_FIX と追記すればおk

追記:
こうしたほうが見やすいかも
コード: 全て選択
#ifdef BUILD_NID_UTILITY_FIX
         if( strcmp( (char *)pentry->library_name , "sceNet") == 0
            || strcmp( (char *)pentry->library_name , "sceMp3") == 0
            || strcmp( (char *)pentry->library_name , "sceMpeg") == 0
            || strcmp( (char *)pentr->library_name , "sceNetAdhocMatching") == 0
            || strcmp( (char *)pentry->library_name , "sceNetAdhoc") == 0
            || strcmp( (char *)pentry->library_name , "sceNetAdhocctl") == 0 )
         {
            LOGSTR0(" is killed here\n ");
            good_call =0xFFFFFFFF;
         }

#endif


追記:この問題はr102で修正されたようです。r102以降ではこのパッチは必要ないと思われます。
        \     テーレッテー    /
          \  ∧_∧   /
            |∩( ・ω・)∩|<・・・
          / 丶    | / \     
        /     ( ⌒つ´)    \
neur0n
 
記事: 88
登録日時: 2010年6月09日(水) 13:48
お住まい: 関東甲信越


Return to PSP Hack

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[12人]

cron