Javaアプリケーションのライセンス管理は無に等しい。

某Webアプリケーションを扱っているのだが、その製品はライセンスサーバなるものを立てる必要があり、ライセンスサーバは、IPアドレスを元にしてライセンスキーを生成してもらった後、ライセンスサーバ内に配置するという仕組みになっている。Webアプリケーションからはそのライセンスサーバにアクセスし、正しいライセンスかどうかの判断を行っている。
今回そのWebアプリケーションがライセンスがないというエラーメッセージが出現するので、よくよく調査をしてみたら、移転のためライセンスサーバのIPが変わってしまったことが原因だった。(つーかMACアドレスとかにしてほしいものだ。)
申請するのも面倒で、ただの勉強で使いたかったので、Webアプリケーションの中身をいじることにした。
Earアーカイブで提供されているアプリケーションで、まずはライセンスの処理を行っている場所を特定する必要があった。以下の手順で特定 & 修正
①Lhazを用いて、Earファイルを解凍する。
②xx_common.jar なる最もありそうなJarアーカイブをLhazを用いて閲覧する。
③License.classなる最もあやしいクラスファイルを特定する。
jadを用いて、License.classを逆コンパイル
⑤ソースを修正。問答無用でライセンスOKにする。
⑥jarで固めて、再度Earファイルを作成する。
⑦Webアプリケーションにデプロイ。
すると簡単にライセンス処理を無視して、稼動してしまったのでした。

素人な自分でもこんなに簡単にソースを書き換えられてしまうことを考えると、Javaで作る限り、オープンソースのようなものになってしまいますね。もちろんコンプライアンス上では大問題なので注意が必要です。