冒険者の休息所 ~Wiki for Elona~
:解析/解析への道
Last-modified: 2016-10-31 (月) 23:00:35
警告:以下の文章はスポイラー、いわゆるネタバレです。 ここの記載はHSPによるプログラミングやバイナリファイルの解析についての基本的な知識があることを前提としています。 用意しておくもの
(セーブデータを解析する場合)バイナリエディタ(Stirlingがお勧め) exeの分解
elona.exeからstart.axを抽出する。
逆コンパイル
start.axをstart.hspに逆コンパイルする。
再コンパイル
start.hspをコンパイルする。 start.hspをelona.exeがあったフォルダにおき、HSP3でコンパイルする。 第一に、10万行目あたりで"if命令以外で{~}が使われています"というエラーがでてコンパイルが止まる。 else { } という部分があるのでこれを消す。 if(a){ if (b) { x = 0 } else{ x = 1 } else{ y = 1 } else{ y = 0 } のようにifとelseの対応が怪しくてもコンパイルしてしまうらしく、そのようなstart.axを逆コンパイルすると再コンパイルできないソースになってしまうようだ。 余計なelseを消すとコンパイルは通るようになる。が、起動直後に固まってしまう。 また、一部の動作がおかしい。 #defcfunc cbit と ibit, cdbitのHMMBITCHECK直後の return stat を return abs(stat) に書き換える(計三か所)。 以上でおそらく正常に動作する。 解析
がんばれ。 |