強固なコード保護

Excelsior JET は、コードを盗難や改変から保護します。

Java クラス ファイルは簡単にリバース エンジニアリングが可能です。Java アプリケーションは、どこでも実行が可能であるという特長により、逆方向の翻訳も簡単です。実際、判読可能なソース コードを生成する多くの Java 逆コンパイラが存在します。

難読化ツールを使用することで逆コンパイルされたコードの解析を難しくすることもできますが、一部のツールで実装されているコントロール フローの難読化は性能に悪影響を与えます。また、将来のバージョンの Java のより厳格な検証手続きをパスできない可能性もあります。たとえ難読化ツールを使用しても、難読化された Java プログラムを理解することは、最適化コンパイラで生成された C++ プログラムをリバース エンジニアリングすることほど大変ではありません。

バイトコードを難読化する代わりに、Excelsior JET で最適化した Java アプリケーションを生成することで、難読化による性能の低下を回避して、エンドユーザーに強固なバイナリ実行ファイルを提供できます。最適化されたネイティブ コードを逆に翻訳する作業は、Java バイトコードの逆コンパイルのように自動化できないため、非常に大変です。違いがよくわからない場合は、次の理由を読んでください:

  1. ネイティブな実行ファイルの逆コンパイルは逆アセンブルとも呼ばれ、機械語をアセンブリ言語に変換します。変数名や関数名は元には戻りません。生成されたソースを見ても、特定のメソッドのコードがどこにあるのか判断する方法はありません。
  2. 他の隣接する演算子によって、ソース コードの Java 演算子は多くの異なるネイティブ コード パターンとしてリストされます。
  3. 最適化の間、JET コンパイラは、しばしばメソッド内のコードを再配置します。さらに、コンパイラは、しばしばメソッドが呼び出される場所にメソッドのコピーを挿入します。最適化されたメソッドはオリジナルのメソッドと機能的には等価ですが、初期のソース コードは生成されたネイティブ コードとは程遠いものであり、簡単に元に戻せません。

スタティック コンパイルだけでは大部分のコピー プロテクト メカニズムを回避できない点に注意してください。また、C/C++ プログラムがクラッキングされる可能性もゼロではありません。しかし、スタティック コンパイルすることで、アプリケーションのエンドユーザー コードから知的財産 (アルゴリズム、プロプライエタリなデータ形式、暗号鍵) を取り出すことは非常に難しくなります。

結論: 高度に最適化されたネイティブ コードは、完全なリバース エンジニアリングから堅く保護されます。

 

 

ページトップへ