HSP3の実行ファイルを逆コンパイラするHSPdecomというものがGitHubにあったので試しに触ってみました。テキトーなHSP3の実行ファイルを作成して、元のソースコードが生成されるかを確認してみます。
https://github.com/YSRKEN/HSP-Decompiler
目次 非表示
実行ファイルを作成
文字を表示するだけの簡単なプログラムを作成して、HPS3の実行ファイルを生成します。
*main gsel 0 redraw 0//描画開始 color: boxf color 255,255,255 pos 10, 10: mes "hello1" pos 10, 30: mes "hello2" pos 10, 50: mes "hello3" redraw 1 await 1000 / 60 goto *main
HSPdecomを実行
HSPdecomをGitHubからダウンロード、Visual Studioで起動してビルドします。ビルドすると以下のようなエラーが発生しました。
コードを確認してみると、デバッグ用のコードみたいなのでコメントアウトします。再度ビルドすると成功しました。
HSPdecomを起動すると以下のような画面が開きます。これで逆コンパイルをするための準備は完了です。
HSPdecomを起動したときに以下のようなエラーが発生する場合は、HSPdecom.exeと同じ場所にソースコード内にあるDictionary.csvを配置するとうまくいくと思います。
逆コンパイル
先ほど作成したHSP3の実行ファイルをHSPdecomにドラッグ&ドロップします。実行ファイルと同名のフォルダが生成されて、フォルダ内に「start.ax」が生成されたら成功しています。
生成されたstart.axをHSPdecomにドラッグ&ドロップ。「start.hsp」が生成されたら成功です。
生成されたstart.hspを開くと、以下のようになっていました。元のコードとほぼ同じですね。もちろんF5で実行することができます。
終わりに
今回はHSPdecomを使用してHSP3の実行ファイルを逆コンパイル後に元のコードに戻せるかを確認しました。ツールを使用すると実行ファイルからソースコードを簡単に生成できてしまうんですね。。。
知っている人は逆コンパイルの対策をするのでソースコードを生成できない場合が多いと思いますが、知らない人は対策しないんだろうなという感じです。そもそも、素人が作るゲームを解析する暇人はそんなにいないと思うので、そこまで気にする必要はないのかなと思いました。