申し訳ありませんが、質問のタイトルをどのように述べればよいかわかりません。私の問題は次のようなものです。Java プログラムを開発したので、それを友人に配布したいと考えています。だから私はそれをJarファイルにエクスポートしますが、コードを表示するためにjarファイルを抽出したくありません。プログラムを起動する代わりに、誰もソースコードを取得できないようにプログラムを作成する方法はありますか?
7 に答える
コンパイルされたクラス ファイルからいつでも元のコードを取得できます。ただし、難読化ツールを使用すると、そのようなコードを逆コンパイルしたい人の命を非常に困難にすることができるため、逆コンパイルされたコードを読み取ることはほとんど不可能です。以下は、調査が必要なオープンソースの Java 難読化ツールのリストです。
コンピューターで実行できる場合、人間はリバース エンジニアリングを行うことができます。
- あなたが探している用語は難読化です。最終的に
At best, obfuscation merely makes it time-consuming, but not impossible,
プログラムをリバースエンジニアリングすること。
- もう 1 つの手法はSaaSです。最終的にはブラック ボックス手法を使用しますが、SaaS はリバース エンジニアリングも可能です。
- もう1つのテクニックは信頼です。友人に配布するので、jar ファイルを抽出したり、コードを表示したりしないように依頼することができます。彼らが本当にあなたの友達なら、あなたの要求を尊重してくれるでしょう。
真実は、誰もあなたのソース コードを欲しがらないということです。それらを締め出すために必要な努力に見合うだけの価値があると考えるのは、かなり傲慢です。
あなたができる最善のことは、難読化することです。
通常、Jar ファイルにはコードが含まれていません。.class
通常、プログラムの実行に必要な (バイトコード) ファイルのみが含まれています。
プログラムの一部をサーバー上で実行できます。基本的に、プログラムの重要で大規模で中心的な機能を実行するために、クライアントはサーバーに接続してこの機能を計算します。
その後、クライアントを全員に配布し、サーバー コードを自分用に保持できます。サーバーを稼働させ続けるだけです。その後、他の人はソース全体にアクセスできなくなりますが、ソフトウェアを実行できます。
これが唯一の確実な方法です。他の方法は、十分な努力をすれば、いくつかの方法で回避できます。
インストール アプリケーションと実行可能ファイルを混同しているようです。また、Java jar アプリケーションと通常の .exe を混同していると思います。
それでも、これらはすべて、まだ逆コンパイルできるコードのバンドルに過ぎず、簡単に抽出できるように設計された jar ファイルを解凍するほど簡単ではありません。
Java は JVM で実行するように設計されているため、.exe 内にパッケージ化するとすぐに Windows にロックされてしまい、そもそも Java のポイントが無効になります。だから私はそれに対してアドバイスします。
誰もが述べているように、プログラムがうまく機能し、ユーザーがそれを気に入った場合、逆コンパイルすることさえ考えることはめったにありません。しかし、彼らが望むのであれば、(言語に関係なく) とにかくハウツーからの単一の Web 検索です。商用配布に関しては、ほとんどの場合、ソフトウェアは難読化され、.jar 形式で配布され、.exe、.app、.bin などの形式のアーキテクチャ固有のランチャーが使用されます。これらを実際の実行可能ファイルと混同しないでください。 .jar ファイルをどこかに置きます。