増分難読化
増分難読化によって、PreEmptive Protection™ DashO™ for Android & Java では前回の難読化時に使用された同じクラス、メソッド、およびフィールドの名前変更、および文字列の暗号化/復号メソッドを再利用することができます。
これは、アプリケーションの一部を再配布する場合、またはシリアル化されたクラスの名前変更を行う場合に重要です。
たとえば、アプリケーションが 3 つの .jar
ファイルで構成されているとします。
アプリケーションのリリース後、あるロジックに大きな問題が見つかり、.jar
ファイルの 1 つをパッチで再配布するとします。
増分難読化を使用して、jar ファイルが以下のようになっている必要があります
- 同じクラス名、メソッド名、フィールド名が含まれるようにする
- 差し込まれた文字列の同じ復号メソッドを呼び出す(または含める)
- ほかの 2 つの jar にある名前変更されたクラス、メソッド、およびフィールドと適切に整合させる
増分難読化は、2 つの割り当てファイルによってサポートされます。これらは必ず出力されるように設定する必要があります。
- 名前変更の割り当てファイル - 名前変更の割り当てファイルには、クラス、メソッド、およびフィールドの元の名前と新しい名前の対応(割り当て)が含まれています。 この情報は、スタックトレースのデコードおよび増分難読化に必要です。
- 文字列の暗号化の割り当てファイル - 文字列の暗号化の割り当てファイルには、DashO が文字列の暗号化に使用するアルゴリズムと、decrypter(復号メソッド)の差し込み時に使用される場所およびアルゴリズムに関する情報が含まれています。 この情報は増分難読化に必要です。
これらの出力ファイルはどちらも、内部的に、おそらくソース コントロールに保管する必要があります。そうすることで、スタックトレースのデコードまたは増分難読化の必要性が生じた場合に、使用することができます。
増分難読化を実行するには、名前変更および文字列の暗号化用に、これらのファイルの名前を変更し、入力割り当てとして設定する必要があります。 クラス、メソッド、またはフィールドが名前変更される、または除去される場合、名前変更の除外やエントリ ポイントなどの項目への変更が影響を与えることもあるので、元のビルドと同じ構成を使用するようにしてください。 ビルドが完了したら、新しい出力割り当てと入力割り当てを比較し、予期しない矛盾がないことを確認してください。
メモ:
入力割り当てに、次の理由によって使用できない、クラス、メソッド、またはフィールドの新しい名前が含まれている場合には、エラーが出力されます。
- クラス、メソッド、またはフィールドの名前変更を防止するように設定が変更されている。
- 新しい名前が別の名前と競合する。