Декомпіляція java додатків

Декомпіляція - процес відтворення вихідного коду декомпілятори

Нещодавно я задався питанням: Який декомпілятор краще?
Почав мучити Google, експериментувати. У підсумку знайшов відмінне рішення. Як декомпільнуть будь-яку програму і отримати робочі «вихідні»? Про це в сабже.

Короткий огляд популярних декомпілятори

JAva Decompiler
DJ Java Decompiler
  • Повністю написана на мові C ++, що робить декомпіляцію надзвичайно швидкою
  • Не вимагає для роботи Java Runtime Environment і тому не вимагає спеціальної установки
  • Коректно декомпілюються .class-файли, згенеровані більшістю компіляторів
Fernflower

Fernflower - один з кращих декомпілятори мови програмування Java на сьогоднішній день.
Володіє наступними можливостями:
1. Підтримує різноманітні мовні конструкції:

  • параметричні типи
  • анотації
  • Рахункова типи
  • твердження

2. Коректно декомпілюються байткод, згенерований внаслідок деяких відомих багів компіляторів

Fernflower буде розвиватися в бік деобфускатора
...
Спеціальних функцій деобфускаціі Fernflower зараз не містить, вони будуть підключатися в подальшому окремими модулями

Оскільки онлайн версія з невідомих причин не працює, а про оффлайн важко що-небудь сказати (крім того, що якість декомпіляцію відмінне), не про якісь модулях на даний момент мови бути не може.

Бракує ще модуля перейменування

Це так. Пошукаємо щось таке в інтернетах.
На виручку прийде Proguard, але незвичайний

ProGuardDeobfuscator - невелика модифікація програми ProGuard, що перетворює її в квазі-деобфускатор. В процесі обробки короткі обфусцірованние імена пакетів, класів, полів і методів замінюються на більш осмислені і унікальні в межах Jar файлу.

Інструменти все є, але особисто я, для полегшення відтворення сорци використовую улюблену Netbeans IDE - дуже сильно допомагає своїми підказками, особливо коли класів багато.
Дякую за увагу!

Схожі статті