クラスを逆コンパイルしたくありません。
いくつかの記事を読んで、特許サイト Zelix KlassMasterを見つけました。
同様の方法で機能する市場で入手可能な無料のツールはありますか..
私の知る限り、同じ機能を備えた無料のツールはありません。
私の意見では、ProGuard とStringer Java Obfuscatorの組み合わせが、Java および Android アプリケーションを保護するための最良かつ最も安価な方法です。
NB 私は Licel LLC の CEO です。Stringer Java Obfuscator の開発者。
Proguardは、入手可能な最高の無料のオープン ソース難読化ツールです。難読化ツールは、クラス、フィールド、およびメソッド名をごちゃまぜにして、逆コンパイルされたコードを理解するのを難しくします。
Zelix Klassmaster は商用の難読化ツールであり、商用分野で最高のツールの 1 つです。また、文字列定数を暗号化して、逆コンパイル時に文字列が見えないようにする追加機能もあります。yguard、DashO-pro、Allatori、Smokescreen などの他の商用ツールもあります。
コードを難読化して、逆コンパイル時に読みにくくすることができます (プログラマーにとって)。
逆コンパイルされるのを具体的に止めることはできません。結局のところ、逆コンパイラはバイト コードを読み取ってソース コードに変換できればよいだけであり、バイト コードを読み取ることも JVM が行う必要があります。したがって、プログラムがバイト コードを読み取れないようにする何らかの方法を考え出すと、JVM はクラスを実行できなくなります。
他の人が指摘しているように、本当にこれを行う必要がある場合は難読化が有効ですが、本当に必要かどうかは疑問です。また、難読化を使用すると、スタック トレースも難読化されるため、バグを見つけるのが非常に難しくなることも指摘しておく価値があります。
難読化は確かにコードを保護する方法です。また、クラスを暗号化し、実行時にクラスを復号化してロードできるカスタム クラスローダーを提供する他のツールもあります。これは非常に簡単な方法ではありませんが、そうするツールがあります。
Java クラスが逆コンパイルされるのを防ぐことはできません。ただし、あなたのコードを理解しようとする人の命を非常に困難にする可能性があります。これは、KlassMaster などのいわゆる難読化ツールのタスクです。
オープン ソースの難読化ツールについては、このリストを参照してください。
私の質問の 1 つも参照してください: https://stackoverflow.com/questions/1872170/how-to-protect-intellectual-property-in-Java-app
残念ながら、JavaScript と同様に Java では、ソース コードを取得するのは簡単です。それを理解することは別のことです。あなたが十分に努力し、それぞれが小さな部分を実行し、それを難読化して渡す何十もの関数を介して日付を送信し、おそらくいくつかの偽の関数を追加すると、悪意のある人に十分なヘッドエケを与えるだけで十分なヘッドエケを与えることができます。成功する前にやめる。
アプリのVisual WatermarkにZelix Klassmaster を約 2 年間使用しています。それ以来、新しいプログラム「クラック」はリリースされていません。したがって、Java アプリを保護するための適切なオプションと思われます。