外部ファイルの展開先特定法 scePadReadが存在しない!?

外部ファイルの展開先特定法


このゲームは実行ファイルの解析だけでは
あまり重要な情報を得る事が出来ませんでした
どうやら、主に外部ファイルが動作しているようなので
その外部ファイルの場所を探します

パワプロ10のディスクをDVDドライブで開くと
こういう構成になっていました
(DNA〜のファイルが変なのは私のPCが原因です)

ICON、MOVIE、NETWORK、SOUNDは文字通りで
特に外部ファイルと思われる物は入っていないようです
MODULES内のファイルは展開するとプログラムが書かれていますが
これはどのゲームにも入っているフォルダなのでこれも無関係です

残りのBINフォルダ、開いてみた所
668個ものファイルが存在します(多っ)
とりあえず、拡張子が.binの物を開いてみます
ARE_SUBファイルをPS2DISにドラッグ&ドロップして
強引にファイルを覗いてみると・・・
00000080からプログラムが展開されています
どうやら外部ファイルはこのフォルダに入っているようです


この668ファイルから、重要そうな名前を探すと
「SCS_MAIN.bin」というファイルが見つかりました

SCSはサクセスを略した言葉だと思うので
サクセス関連のメインプログラムが入ってると予想できます
早速PS2DISで強引に開いてみると、やはりプログラムが存在します
問題は、このファイルをどのアドレスから展開しているかです

答えは灯台下暗しな部分にあります
なんと、ファイルを開いた直後のアドレスに
展開先のアドレスがそのまま記載されているからです


この0095A000からこのファイルが展開されるので
改めて、SCS_MAINを0095A000に開きます


後は、いつものように解析を進めるだけです
コード化する時には、実行ファイルと違い
Aコード(一回書き込み)が使えないので注意して下さい
Dコード(条件判定)と通常の書き込みコードを併用して下さい。



scePadReadが存在しない!?


上の方法で外部ファイルも解析して
動作確認で形式4のマスターコードを作ろうとして
意外な事実に突き当たりました
scePadReadが存在しないんです
色々な方法で調べてみましたが
他のゲームのようなプログラムは見当たりません
PadReadの仕組みを独自の物にしているのでしょうか?

形式2では画面も点滅しておらず
システムコールを使うのは危ない気がします
しかし、肝心なPadReadが無いので形式3しか無いのかな?
と思ったんですが、一つ思い付きました

「他にも毎フレームコールされるプログラムがあるんだから
それを利用すれば形式4が作れるじゃないか」

これは予想ですが、memcpyというプログラムは名前の通り
色んなメモリデータのコピーを行うのではないかと思います
という事は頻繁に呼ばれると思うので
このmemcpyの参照先をマスター候補にしたいと思います

最終的に行き着いたアドレスは
0017E7CCですが、ここに行き着いた理由は
アドレスがパッド関係のエリアに近いので
改良されたPadReadの可能性もあったからです
実際には他のmemcpyでも高確率で動くと思います。

(実際はもっと細かい部分まで考えて決めたんですが
説明すると1ページは超えるので省略)