2016-03-23 9 views
0

私は多くのJava obfuscatorに遭遇しました。クラス名の名前を変更し、オンラインJavaデコンパイラで見ることができます。しかし、私は任意のツールを使用して逆コンパイルできない出力を生成するobfuscatorが必要です。 (私たちはこのような方法で.netプロジェクトを難読化することができます)。逆コンパイル時にプレーンテキストを決して与えないJava obfuscator

私はそのようなJava難読化器をお勧めしますか?

+0

私はそのようなツールが可能であるとは思わないでしょう。 Javaバイトコードを指定すると、いつでもJavaソースに変換できます。 –

+0

"このような方法で.netプロジェクトを難読化することができます"何を使用していますか? – weston

+0

"しかし、どのツールを使っても逆コンパイルできない出力を生成する難読化ツールが必要です。" Java仮想マシンを含む?次に、スクランブラーを書いてください。あなたのコードは盗まれず、コードは実行されません。 –

答えて

2

「フローの難読化」を検索します。

逆コンパイルは常に可能です。しかし、多くのデコンパイラでは、バイトコードがjavacのような通常のコンパイラによって生成され、コンパイル可能なJavaソースをフロー難読化されたクラスから復元するのに苦労しています。その結果は、人間がオリジナルの(Javaハイレベルの)制御フローを認識するのが難しいほど壊れていないことが多い。これは、バイトコード解析に多くの時間を費やすことによってのみ克服することができる追加のハードルを作ります。

しかし、それは競合だということに注意してください。デコンパイラもこの点で改善しています。したがって、すべての逆コンパイラに対して難読化された結果を常にテストしておく必要があります。

非常に満足のいく結果を得たプロジェクトでは、「allatori」という名前のobfuscator(2番目のほとんどが名前ベースの難読化ツール)を使用しました。

1

Stefanはフローの難読化は古いデコンパイラを混乱させる簡単な方法だと述べています。現代のデコンパイラでは、もっと努力する必要があります。あなたが検索できるHERESにいくつかの機能:

  • 合成修飾子(JD-GUIが合成メンバーは表示されません)
  • 不透明述語(静的に解決することができないジャンクコードとしてこれを考える)
  • 文字列暗号化
  • replacing all invokes with invokedynamics is cruelとは何かがわかりません。 Java 8の実行と逆コンパイルが必要です。

すべては可逆ですが、痛みが増します。

関連する問題