• ベストアンサー

JAVAのソフトウェアが逆コンパイルされる可能性について

JAVAで作成したソフトウェアは、逆コンパイルされ易いと聞いたのですが、これを防ぐ方法はありますか? フリーソフトで配布する予定ですが、ソースコードをぱくられるのは嫌なのでなにか、良い方法ってないでしょうかね? よろしくおねがいいたします。

  • Java
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • punidama
  • ベストアンサー率50% (2/4)
回答No.2

Javaのクラスファイルを逆コンパイルされないようにすることは根本的に不可能です。 なぜならば、逆コンパイルできないと言うことは、Javaの仮想マシンがクラスファイルを解析して動作させることがができないと言うことになります。 Javaの場合、仮想マシンの仕様が全て公開されているため、他の言語と比較して逆コンパイルをするハードルが低目だということもまた事実です。 どうしてもいやだと言う場合、逆コンパイルされたソースを複雑にして分かりにくくするツールも存在しますが、オープンソースにしてはいかがでしょう?

その他の回答 (1)

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

一応バイトコードを暗号化するクラスがあるけど・・・・。 JLicenserで検索するよろし。

関連するQ&A

  • javaの逆コンパイルを防ぐ方法はありますか?

    javaの逆コンパイルを防ぐ方法はありますか? javaのクラスファイル(.class)を公開したいと思います。 しかしjadやJadClipseなどの解析ソフトを使うと、簡単にソースコードが解析されてしまいます。 逆コンパイルを防ぐ方法があれば教えて下さい。 困っています。よろしくお願いいたします。

    • ベストアンサー
    • Java
  • C#でコンパイルしたクラスを逆コンパイル

    マイクロソフト .NET C#でコンパイルしたクラス(dll)があり、 元の最新のソースコードがなくなってしまったので、 dllから一部復元したいのですが、 dllからソースコードを復元(逆コンパイル)することは可能でしょうか? あるファイルのこの部分だけ、という形でもかまいません。

  • Javaのコンパイル時間

    Javaのコンパイル時間 Javaのコンパイルの時間は1MBのソースコードでどれぐらいの時間ですか? いつも20kb程度のプログラムで、一瞬でコンパイルされてしまいます。 複雑なプログラムは何分かかりますか?

    • ベストアンサー
    • Java
  • 逆コンパイルを防ぐには?

    VB.net 2005 ExpressEditionで作成したEXEを配布したいのですが、 Reflectorなどでソースコードが参照されることを知りました。 調べたところ、Dotfuscatorやnanndokuなどで難読化できることは 分かりましたが他の方法はないのでしょうか?

  • Delphiの逆コンパイル

    Delphiのexeのソースってみれますか? 一度コンパイルしたものを、逆コンパイルするソフトはあるようなのですが、簡単にできるものなのでしょうか? できるとしたらそれを防ぐ方法はあるのでしょうか? ソフト名とかは、とりあえずいりません。 どれくらいのレベルの人ができるのか。 どんな感じにソースが読めるのか。 変数名なんかは、変わるみたいだし。 詳しい方よろしくお願いします。

  • コンパイルの逆はできますか??

    プログラムの本にこんなことが書いてありました。 『人間にわかる文字をコンパイルして、CPUのわかる0101にします。』 これを見て思ったのですが、CPUのわかる0101文字を逆に人間にわかる文字に返すことは出来ますか?? 他にも、JavaやCで書いた命令をコンパイルし、CPUのわかる0101文字にしてから逆にコンパイルして、JavaをCに変えたり、CをJavaに変えたりできるってことですか??

  • 逆コンパイルマニアが多いのでしょうか?

    ウインドウズOSをはじめとするマイクロソフト製品に、 アルゴリズムやプログラム記述上の欠陥過失があることを マッキントッシュのユーザーグループで多く話題にされているのを見ます。 そこで、ごくごく単純素朴な疑問なのですが、 ソースコードの見比べをしないとわからない内容だと思いますので、 オープンソースでもないのに中身がわかる、というのは、マックファンの皆さんは多分MS製品を逆コンパイルをしてアップルのプログラムと比較しているのだと思うのですが、 そもそも逆コンパイルによって生成されたソースコードの記述文というのは「原本」とはかなり違ったアバウトなものになる、という逆コンパイラの一般論的な説明文をパソコン用語辞典などで拝見しています。 アップルの製品は逆コンパイルして生成される記述文であっても、やはり美しくて感心するようなものなのでしょうか??? またプログラミング上の美しさや間違いというものは、逆コンパイルで本当に判明できるものなのでしょうか?

  • 「逆コンパイル」ってできるんですか?

    自力なり、ツールをつかうなりして逆コンパイルすれば、EXE形式から、Cなどのプログラム言語に変換することができるんですよね。 そうすると、ソフトを作っている会社なんかは、自社が力をそそいで作ったプログラムを簡単に真似されたりすると思うんですけど、それでいいんでしょうか。 それから、 ウィンドウズのEXEから、ソースコードに変換することはできないんですか? すごい労力になるけど、やることは可能な気がするんですが。

  • Javaのコンパイルについて

    どうでもいいことかも知れませんが少し気になったので質問します。以下のようなプログラムを作成しました。 (1) Client.java main()有り、main内でServerのインスタンス作成 (2) Server.java main()無し、インターフェイスの定義のみ (3) ServerImpl.java main()有り、main内で自分自身(ServerImpl)のインスタンス作成 いつもはフォルダ内でjavac *.javaとコンパイルしてきたのですが、たまたま今日は一つずつコンパイルしてみました。一ファイルずつコンパイル出来るものかと思っていたのですがそうではなく、 (2)は単独でコンパイル出来る。 (1)と(3)は単独でコンパイル出来ない。((1)は(2)と同時にコンパイルする必要がある。(3)は(2)と同時にコンパイルする必要がある。) であることを初めて知りました。つまり関連するクラスは一緒にコンパイルしなければならないということだと思うのですが、普通は関連するjavaファイルだけのMakefileをそれぞれ作るのでしょうか?それも大変だと思うのですが。。それともjavac *.javaのように一括でコンパイルするのが普通なのでしょうか?もし毎回全ファイルをコンパイルすると、修正のないものまでコンパイルしてしまうことになると思いますがそういうものなのでしょうか?質問がちょっと意味不明で恐縮ですが一人で小さなプログラムを作成したことしかないので、会社などで大規模なプログラムを作成している現場では普通どうやっているものか知りたくて質問しました。

    • ベストアンサー
    • Java
  • 逆コンパイル

    C#で書いた単純なプログラムをコンパイルして、それをテキストエディタで開いたところ、なんだかソースコードのような文字列がかなりそのまま実行バイナリの中に含まれています。 これって簡単に逆コンパイルとかされないでしょうか。 プログラムのバイナリを圧縮や暗号化して、実行時にそれを展開するような方法があると聞いたのですが、それはC#でもできますか? 別のプログラムは圧縮ファイルを解凍するような方法じゃなくて、1つのプログラム内でそういうことできませんか?

専門家に質問してみよう