PreEmptive Protection - DashO v8.0 User Guide

はじめに

PreEmptive Protection - DashO は、Java の難読化、サイズ縮小、最適化、およびウォーターマーク作成の機能を備えたプログラムです。このセクションでは、DashO を使用する利点について概要を説明します。

難読化を行う理由

Java は、表出的なファイル構文を使用して実行可能コードを配信します。このようなクラス ファイルは、バイナリのマシン語コードよりも高度なもので、ソース コードの復元を可能にする識別子のメタデータが含まれています。アタッカーは、逆コンパイラを使用してコードをリバース エンジニアリングし、ライセンス供与されたコード、コピー保護メカニズム、所有権を有するビジネス ロジックなどをむき出しにすることができます。

難読化は、アプリケーション内のシンボルの名前をシームレスに変更する技法であり、その他にも逆コンパイラを妨害する対策を備えています。難読化を正しく適用すると、アプリケーションを変えることなく、逆コンパイルに対する保護を格段に高めることができます。

難読化の目標

難読化の目標は、混乱を引き起こすことです。混乱が生じると、クラス ファイルからソースを復元する能力が低下します。これは、実行可能なロジックの変更について言及しているのではありません。そのロジックを理解不能にするだけです。

バイト コード レベルで難読化ツールを適用すると、人間が解釈できなくなるほか、実行可能なロジックを保持しながら逆コンパイラも機能しなくなります。結果として、リバース エンジニアリングを試みると、その命令は失敗するか、またはコンパイルに失敗するコードが生成されます。

PreEmptive Protection - DashO の機能

PreEmptive Solutions は 1996 年より、Java 用の DashO ツールを皮切りに、中間コンパイル言語で作成されたソフトウェアの保護および改善について取り組んできました。弊社の Java 用および .NET 用の製品は、その能力、汎用性、および米国で特許取得済みの機能により、市場で成功を収めています。

不要コードの除去

DashO はアプリケーションのエントリ ポイントから始めて、アプリケーションが使用しているクラス、メソッド、およびフィールドを判別し、使用されている要素だけのパッケージを作成します。これは、サード パーティ製のライブラリにも適用されるため、アプリケーションで使用する部分だけを取り付けることが可能になります。

名前の変更

DashO は、PreEmptive Solutions が考案した、米国で特許取得済みのアルゴリズムである Overload Induction™(オーバーロード誘導)を使用します。オーバーロード誘導は、できる限り多くのメソッドの名前を同じ名前に変更します。次の例で、その技術を説明します。

元のソース コード:

private void calcPayroll(SpecialList employeeGroup) {
    while (employeeGroup.hasMore()) {
    employee = employeeGroup.getNext(true);
    employee.updateSalary();
    distributeCheck(employee);
    }
}

オーバーロード誘導を行った後の、リバース エンジニアリングされたソース コード:

private void a(a b) {
    while (b.a()) {
        a = b.a(true);
        a.a();
        a(a);
    }
}

DashO はまた、難読化された名前が後継のリリース間でも再適用できるように、名前の割り当てファイルを生成します。これにより、以前に展開したシステムにパッチ ファイルを統合することが可能になります。

制御フローの難読化

DashO は、逆コンパイラがソース コードを再作成するのに使用するコード パターンを破壊することによって難読化を行います。結果として生成されるコードは、意味的には元のコードと等価ですが、逆コンパイラを妨害します。

文字列の暗号化

DashO は、アプリケーションの一部または全部の文字列を暗号化することにより、アプリケーション内の特定の文字列を検索して登録やシリアル番号のロジックを探し出そうとするアタッカーに対する防御手段を提供します。

バイト コードの最適化

アプリケーションの一部または全部に対して、バイト コードの最適化を実行することができます。DashO は、代数恒等式や文字列の削減、ピープホールの最適化などを実行します。

ウォーターマーク

DashO は、ソフトウェアの不正コピーの出所を追跡できるよう、難読化された jar ファイルにウォーターマークを追加することができます。ウォーターマークは、実行時の動作に影響を与えることなく、固有の顧客識別番号や著作権情報などのデータをアプリケーションに目立たないように埋め込みます。

増分難読化

DashO がサポートする増分難読化を使用することで、前回の実行で用いた同じクラス名、メソッド名、および文字列の暗号化/復号メソッドを再利用することができます。この機能は、パッチ リリースや、シリアル化されたクラスのリリース間における一貫した名前変更に必要です。



PreEmptive Protection - DashO Version 8.0.0. Copyright © 2016 PreEmptive Solutions, LLC