小さな Java アプリを実行可能な jar として引き渡したいのですが、私のソース コードに誰もアクセスできないようにしたいと考えています。jar ファイルにソース コード (.java ファイル) が含まれていないと推測するのは正しいですか?
ユーザー269799
小さな Java アプリを実行可能な jar として引き渡したいのですが、私のソース コードに誰もアクセスできないようにしたいと考えています。jar ファイルにソース コード (.java ファイル) が含まれていないと推測するのは正しいですか?
ユーザー269799
通常、 Jar ファイルには、Java バイトコード ファイルである .class ファイルとリソースのみが含まれます。ただし、コードをもう少し安全にするために、デバッグ情報をオフにして、本当に安全にしたい場合は、難読化ツールを使用して実行することをお勧めします。
編集:berry120のコメントは正しいです-ソースファイルを含めることができますが、通常は含まれません。これを将来読む人のために明確にしたいだけです。jar の生成に使用するツールの設定によって異なります。
Java ファイルを jar ファイルに入れないと仮定すると、魔法のように表示されることはありません :) もちろん、好きなものを jar ファイルに含めることができます。チェックする内容をリストできます。
jar tvf foo.jar
ただし、Java は非常に簡単に逆コンパイルできることに注意してください。そのため、受信者はコメントなどで実際のソース コードにアクセスすることはできませんが、ロジックをかなり明確に見ることができます。難読化ツールを使用して、IP を保護することをお勧めします。個人的には、難読化ツールを避けるようにしています -コメントやテストを含む実際のソースがある場合、ほとんどの人がコードを維持するのがいかに難しいかを考えると、それらがない場合にどれほど難しいか想像してみてください:)それはあなたの電話です。難読化されたコードを徹底的にテストするようにしてください。特にリフレクションを使用している場合は、微妙な問題が発生する可能性があります。
コンピューターで実行できる場合は、人間がリバース エンジニアリングを行うことができます。Java にとっては特に難しいことではありません。
したがって、技術的な保護は機能しません。拘束力のある契約または類似の形で法的保護が必要です。お金を払っている人を除いて、あなたの作品を GPL の下に置くことさえできます。これは、ほとんどの企業があなたの作品を盗むことを避けるのに十分です.
絶対に避けたい状況とは?
そうです、jar にソース コードはありません (ビルド システムを構成してそこに入れるようにしない限り)。しかし、コードがバイトコードから逆コンパイルされるリスクは常にあります。ここでは難読化ツールが役立つかもしれません。
はい。通常、jar にはバイトコンパイルされた .class ファイルのみが含まれます。とはいえ、ソース コードを含めることもできます。これは、ユーザー (またはツール) に何を入れるかによって異なります。
ただし、逆コンパイルは .class ファイルに対して非常にうまく機能するため、このようなコードの難読化手法にセキュリティ関連を依存させないでください。
あなたは正しいですが、.class ファイルは Java コードに簡単に逆アセンブルでき、ほとんどの場合、かなり正確です。
適切に保護する必要がある場合は、難読化する必要があります。
.jar を生成した方法によって異なります。Eclipse には、.jar に .java ファイルを含めるオプションがありますが、デフォルトでは無効になっているため、必要に応じて有効にする必要があります。
Jarファイルにはソースが含まれている可能性があるため(含めるかどうかを選択できます)、ソースを含めなくても特に問題はありません。ただし、jar ファイルに含まれるクラス ファイルをリバース エンジニアリングする可能性があることに注意する必要があります。
Antタスクとして簡単にフックできるyGuardなどの難読化ツールを使用してこれを回避できますが、他の人が言っているように、あなたのコードは本当に重要で、他の人には見えませんか?
通常はありませんが、jar -tvf <filename>
コマンドを使用して確認できます。
.class
ただし、ほとんどのファイルをかなり読みやすい Java ソース コードに逆コンパイルするのは非常に簡単であることを警告しておきます。
これを回避するには、難読化ツールを使用する必要がありますが、それにはユーザーに代わって追加の作業が必要です。(例: RetroGuard。)
そうは言っても、次の質問を自問してください。通常、答えはノーです。私たちが書くコードのほとんどは特別なものではありません。
.jar ファイルにはソース コードは含まれず、バイトコード (.class) のみが含まれます。しかし、バイトコードはマシンに依存しないため、非常に簡単に逆コンパイルできます。他のユーザーがソース コードにアクセスするのを防ぐ方法はありません。