外部ファイルの展開先特定法 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ページは超えるので省略)