【HSP3】実行ファイルを逆コンパイルしてみる

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」が生成されたら成功しています。

HSP3の実行ファイルの逆コンパイル

生成されたstart.axをHSPdecomにドラッグ&ドロップ。「start.hsp」が生成されたら成功です。

start.axの逆コンパイル

生成されたstart.hspを開くと、以下のようになっていました。元のコードとほぼ同じですね。もちろんF5で実行することができます。

終わりに

今回はHSPdecomを使用してHSP3の実行ファイルを逆コンパイル後に元のコードに戻せるかを確認しました。ツールを使用すると実行ファイルからソースコードを簡単に生成できてしまうんですね。。。

知っている人は逆コンパイルの対策をするのでソースコードを生成できない場合が多いと思いますが、知らない人は対策しないんだろうなという感じです。そもそも、素人が作るゲームを解析する暇人はそんなにいないと思うので、そこまで気にする必要はないのかなと思いました。