1

.jarファイル(基本的には.classファイルのグループ)をリバースエンジニアリングしようとしています。しかし、2つの困難があります。Java deobfuscatorは変数の名前変更をサポートしていますか?

  1. は変数、メソッドやクラスの一部が正しく表示されない可能Unicode文字、と命名されています。これにより、ソース編集が非常に不便になります。

  2. Javaキーワードifなど)の名前のクラスもあります。したがって、Javaコンパイラは、リバースエンジニアリングされたソースファイルを再コンパイルするときに不平を言うでしょう。

これらの難点を克服できるJavaの解読器はありますか?

+0

Javaのデコンパイラの状態は悲しい話です。私はその上に難読化ツールを壊そうとするデ・コンパイラも尋ねると思います。あなたの質問は明らかに話題外です。オフサイトのリソースの推奨を求めています。 – GhostCat

+0

@GhostCat私はデコンパイラを求めていません。私は、JARファイル内の変数名を変更する方法を探しています。この問題を解決するには、可変名前変更をサポートしている作業用Javaのdeobfuscatorが明らかに最良の方法です。逆コンパイラがその機能を持っている場合、それは解決策ですが質問自体ではありません。ちなみに、すべての質問はお勧めの質問です。私は私の問題を解決するための答えを探していますが、ツール間の比較はありません。これは非常に主観的に見えませんよね? – Cyker

+0

jd-guiを試してみましたか? –

答えて

3

Java識別子の名前を変更できるツールがいくつかあります。たとえば、すべての名前を変更するには、Proguardを実行するだけです。

あなたのアプローチを再考することをお勧めします。 Javaのコンパイルとデコンパイルは両方とも損失の多いプロセスです。逆コンパイルはリバースエンジニアリングには便利ですが、逆コンパイルされたコードを再コンパイルすることはできません。以前は難読化されている場合は、それを忘れてしまうかもしれません。

難読化されたコードを変更する最も良い方法は、Krakatau assembler and disassemblerを使用することです。 Krakatauアセンブリは、バイトコードとの間で可逆的に変換できます。つまり、どのように難読化されていても、任意のクラスを編集できます。唯一の欠点は、Javaバイトコードに精通していなければならないことです。

+0

この回答は良さそうです。実際に私は自分のアプリケーションで動作するProguard設定を試しました。その名前はそのまま残さなければならないいくつかのパブリック変数が存在するにもかかわらず、結果はもっと良く見えます。また、クラカタウを指摘してくれてありがとう。実際に私はAndroidで作業していますし、smali/baksmaliも同様です。私は物事が最終的にうまくいくかどうかを確認するために働き続けます。 – Cyker

0

Cuchazのは、ローカル変数の名前変更をサポートしています。これはもはや更新されず、もはや更新されていないBCEL上で実行されます。あなたが何かを逆コンパイルしていない限り、BCELは処理できませんが、うまくいくはずです。

関連する問題