- 締切済み
JARファイルを展開不可能にしたい
とあるプログラムを実行可能JARファイルとして配布したいと考えています。 しかし、jarコマンドで普通にアーカイブとするだけでは、少し知識のある人なら 展開してJARファイルの中身を見ることが可能でしょう。 このJARファイルの中には画像ファイルや音楽ファイルも同梱する予定で、 できるならプログラム自身以外には中身を参照されることを防ぎたい (強いては、2次配布の可能性を排除したい)と考えています。 このようなことは実現可能でしょうか。 可能であれば、手法を教えてください。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- love-less
- ベストアンサー率60% (9/15)
JARファイルなんてのはZIPやらLZHみたいなものですから 書庫内の特定のファイルにアクセス権ってのは無理なんじゃないですかねぇ。 だからこそ、画像や音楽なんかのAVコンテンツを転用されたくないアプリはEXEになってたりするわけで・・・ あとはすでに出てますが暗号化ですね。 ファイルを読み込んでEncryptしてバイナリで吐き出したファイルを同梱、アプリ実行時にバイナリを読んで複合化。 貧相な知識だとこんなもんです。
- UKY
- ベストアンサー率50% (604/1207)
> UNIXのアクセス権のようなものを設定できないか ですから、そういうことも含めて無理だということです。
- Bonjin
- ベストアンサー率43% (418/971)
基本的には無理でしょう。 JARファイル自身はただのアーカイブファイルに過ぎませんし、VMはJARファイルが展開できなければ実行さえできません。 >このJARファイルの中には画像ファイルや音楽ファイルも同梱する予定で、 >できるならプログラム自身以外には中身を参照されることを防ぎたい >(強いては、2次配布の可能性を排除したい)と考えています。 リソースファイル自体を暗号化するなり、独自圧縮するなりして内容が漏れないようにすれば良いのではないでしょうか?
- UKY
- ベストアンサー率50% (604/1207)
それは原理的に不可能です。 JAR が実行可能であるということはその JAR の中身が展開できるということですから、実行時と同様の方法で展開できるということになります。通常の方法で展開できないということになれば、肝心のプログラムの実行もできなくなってしまいます。 たとえるなら、缶詰のふたを空けずに缶詰の中身を食べるなどということはどうやっても不可能なわけです。 どうしてもというのなら、各データファイルを暗号化して JAR に入れておき、実行時にプログラム内で復号化するという方法があります。復号化の方法がばれない限りは、JAR を展開されてもデータを盗むことはできなくなります。
補足
タイトルが悪かったのでしょうか。 アーカイブをゴチャゴチャにしたいという意味ではありません。 UNIXのアクセス権のようなものを設定できないか、というのを想定しての質問です。