先日頒布を開始した60mk2のXeGraderですが、エミュでの動作も確認済みであるため、もしかすると申込数が増えるかもと思いまして、SetSerialer なるツールを開発しました。このツールはアセンブルされたバイナリファイルに対して、以下の追加処理を行います。
  1. シリアル番号埋め込みとデータ圧縮
  2. 実行プログラムエリアの難読化
  3. バンクの隙間を偽装化
そのため、バイナリエディタで内部を覗いても殆ど意味がわからない16進数の羅列となっています。ただ、これだと今度は開発する私がとても不便ですので、アセンブル直後の状態では、シリアルの埋め込みなどがなくても動作するように設計してあります。そして、ツールでコードの書き換えがしやすいような作りにしてあったりします。
SetSerialer
この辺りは自分的には最新の技術を用いているつもりですが、まあ、エミュで実行中に停止させられると、当たり前に内部の動作が見えてしまいます。そこで難読化に貢献しているのが、トータル400箇所と至るところに存在する自己書換箇所です。自己書換は逆アセンブルを狂わせます。

また、シリアルコードをそのままの数値として書き込むなんて親切なこともしていません。128KB という広大なエリアに暗号化して紛れ込ませています。そのため、そこからシリアルコードを探して潰すのは無理だと思います。起動時に表示されるシリアルコードとユーザー名は、埋め込んだ情報を表示しているわけではなく、画像として埋め込んでから圧縮して書換不能にしてるだけです。
XeGraderv1.0.5
こんな事をしてるので遅くなっていないのかと言われると、実はちょっとだけステージの切り替えとかで遅くなっています。なっていますが、復号する時間は1秒にも満たないので、ちょっと良いウェイト代わりになっています。SRだと殆ど瞬間的に復号してきますしね…。

なんでここまで丁寧にプロテクトを掛けたかと言えば、今回はエミュでの動作が可能という点です。つまりは海賊版の防止です。以前仕事でプロテクトを掛けていたこともあり、海賊版の防止にはかなりの時間を費やしています。当時は最後は正直疲れてしまいましたが、今は趣味でプロテクト掛けてるので、とことんまで拘る事が出来ました。また、媒体がROMなので、コピーそのものは容易です。そのため、誰が流したか即座に分かる仕組みにして防止する事にしてるのです。

頒布に対して皆さんに個人情報の開示をお願いしてるのはそういうことなのです。
※綺麗に映ると良いな♪