必要なもの
HSPdeco 1.00 と 最新版のDictionary.csv (10/25更新)
またはHSPdecom 1.00(12/15の追記参照)
HSPdecomの場合は、最新版のDictionary.csvは不要です。
注意
HSPdecoに付属のDictionary.csvは古く、一部の命令を認識できないため、最新のElonaではエラーが出ます。
たとえば、Elona omake overhaul 2015/07/19の場合、start.hsp.logには以下のように出力されます。
000001行:deHSPの出力する#structはHSPの公開されている言語仕様には含まれませんそのため、Dictionary.csvを最新版に差し替えておく必要があります。
127579行:式:不適切な要素を検出
265648行:式:不適切な要素を検出
270995行:式:不適切な要素を検出
271039行:式:不適切な要素を検出
271106行:式:不適切な要素を検出
272734行:式:不適切な要素を検出
最新版へのリンクはすでに上に示しました。
手順
例としてomake_overhaul.exeを逆コンパイルします。
- HSPdeco.exeと同じフォルダにあるDictionary.csvを、最新版のDictionary.csvに置き換える
- HSPdecoを起動し「ここにドロップしてください」と書かれている部分に「omake_overhaul.exe」をドラッグ&ドロップすると解析が始まる
- 解析終了後「omake_overhaul.exe」が置いてあるフォルダに「omake_overhaul」という名前のフォルダが作られていることを確認する
- 「omake_overhaul」フォルダ内のstart.axを、再度HSPdecoにドラッグ&ドロップする
- 解析終了後、start.axと同じフォルダに逆コンパイルされたソースコードstart.hspができている
雑記
- 最新版のDictionary.csvを使ってもstart.hsp.logに以下のように出力されるけど気にしないでいいよね…(HSPあんまりわからない)。
000001行:deHSPの出力する#structはHSPの公開されている言語仕様には含まれません
- 逆コンパイルされたソースコードを、HSPで再々?コンパイルした結果、(少なくとも見かけ上は)動作しました。一部ヴァリアントはこのようにして作っているものと思われます。
- HSPの過去バージョンは以下のリンクからダウンロード可能です。たとえばoomは
3.31b3.5b2で制作されているらしいです(readmeより)。
http://www.onionsoft.net/hsp/file/
参考
Dictionary.csvは下のサイトのものを利用させて頂きました。
CSSの問題?でページが真っ白になるのでview-sourceから引っ張ってきました。
CSSの問題?でページが真っ白になるのでview-sourceから引っ張ってきました。
逆コンパイルの手順は下のサイトを参考にさせて頂きました。
http://elona.wikiwiki.jp/?%3A%B2%F2%C0%CF%2F%B2%F2%C0%CF%A4%D8%A4%CE%C6%BB
10/25追記
Elona omake overhaul modify (oom)は、HSP 3.5b2で制作されているため、ヴァリアントwikiで公開されているDictionary.csvでは古すぎるようです。そのため、私の方で新しい命令を追記したものを、上のリンクで公開しました。
12/15追記10/25追記
Elona omake overhaul modify (oom)は、HSP 3.5b2で制作されているため、ヴァリアントwikiで公開されているDictionary.csvでは古すぎるようです。そのため、私の方で新しい命令を追記したものを、上のリンクで公開しました。
HSPdecom1.00を公開しました。
これは、HSPdeco1.00を改良したもので、変数名の復元を行います。
以下詳細
axファイル内のデバッグ領域には、変数名や行数などのデバッグに必要な情報が記録されています。
この情報は通常、リリース段階で取り除かれるのですが、作者さんが変数名をあえて残してくれることがあるらしいです。
ところが、HSPdecoではデバッグ情報の有無に関わらず、変数名はすべてvar_***の形で逆コンパイルされます。
HSPdecomでは、デバッグ情報から変数名を読み取り、逆コンパイル時に復元するようにしました。
参考
http://jbbs.shitaraba.net/bbs/read.cgi/game/58103/1438401066/950-954
http://www.onionsoft.net/hsp/v33/hspsdk/hsp3code.txt
とてもありがたく使わせてもらっているのですが、oomの逆コンパイルをしようとすると、#func と、それで定義された命令名が出力されないようです。
返信削除対応していただけるとありがたいです。