2011-06-22 8 views
8

私はJavaアプリケーションを実行するプラットフォームで作業します。これらのアプリは難解なものが多く、ProGuardを使用するものがほとんどです。これにより、プラットフォームでのデバッグの問題が非常に困難になります。難読化されたJavaバイトコードの逆コンパイル

現在、私はそれらのアプリケーションを逆コンパイルするためにJD(http://java.decompiler.free.fr/)を使用しています。 JDはまともな仕事をしていますが、生成されるコードが理解しにくいことがあります。

これは主に、難読化ツールがJVMバイトコードの制約の少ない仕様を利用して、有効なJavaコード(例:積極的なオーバーロード)にマップされない有効なバイトコードを生成するために発生します。

私の質問です:難読化されたバイトコードを扱うために特別に構築されたデコンパイラはありますか?

+0

はあなたがhttp://members.fortunecity.com/neshkov/dj.html –

+0

@ anirudh4444それはWindowsでのみ動作しますしようとしています。私はUbuntuで動作するものが必要です。 – JoaoHornburg

+0

ワイン/モノを使ってubuntuで実行できます。 –

答えて

5

デコンパイラーがそれを行うのではないかと疑います。しかし、カスタムバイトコード変換を実装し、オーバーロードされたメソッドと変数名の名前をASMなどの名前に変更することができます。

5

メンバによって開発されたFernflowerとして知られている逆コンパイラがあります。それは、逆コンパイルコード用に特別に作られた逆コンパイラであることを誇っていますが、あなたは塩の穀粒でその主張をしたいかもしれません。 ここにアップロードされています:https://github.com/Zidonuke/Bukkit-MinecraftServer/blob/master/tools/fernflower.jar?raw=true

+0

Fernflowerは公式に利用できなくなりましたが、これはかなり単純なコントロールフローの変換によっても打ち負かすことができます。 – Antimony

+0

@アンチモンはどのような変容を説明してくれますか? AFAIKは、ゲーム内で最も良いフローの難読化であると思われる(起こった?)ZKMの不透明な述語の挿入さえも処理できます。 – oldrinb

+0

ファーンフラワーが帰ってきました! – thomas

関連する問題