Декомпіляція - процес відтворення вихідного коду декомпілятори
Нещодавно я задався питанням: Який декомпілятор краще?
Почав мучити Google, експериментувати. У підсумку знайшов відмінне рішення. Як декомпільнуть будь-яку програму і отримати робочі «вихідні»? Про це в сабже.
Короткий огляд популярних декомпілятори
JAva Decompiler
DJ Java Decompiler
- Повністю написана на мові C ++, що робить декомпіляцію надзвичайно швидкою
- Не вимагає для роботи Java Runtime Environment і тому не вимагає спеціальної установки
- Коректно декомпілюються .class-файли, згенеровані більшістю компіляторів
Fernflower
Fernflower - один з кращих декомпілятори мови програмування Java на сьогоднішній день.
Володіє наступними можливостями:
1. Підтримує різноманітні мовні конструкції:
- параметричні типи
- анотації
- Рахункова типи
- твердження
2. Коректно декомпілюються байткод, згенерований внаслідок деяких відомих багів компіляторів
Fernflower буде розвиватися в бік деобфускатора
...
Спеціальних функцій деобфускаціі Fernflower зараз не містить, вони будуть підключатися в подальшому окремими модулями
Оскільки онлайн версія з невідомих причин не працює, а про оффлайн важко що-небудь сказати (крім того, що якість декомпіляцію відмінне), не про якісь модулях на даний момент мови бути не може.
Бракує ще модуля перейменування
Це так. Пошукаємо щось таке в інтернетах.
На виручку прийде Proguard, але незвичайний
ProGuardDeobfuscator - невелика модифікація програми ProGuard, що перетворює її в квазі-деобфускатор. В процесі обробки короткі обфусцірованние імена пакетів, класів, полів і методів замінюються на більш осмислені і унікальні в межах Jar файлу.
Інструменти все є, але особисто я, для полегшення відтворення сорци використовую улюблену Netbeans IDE - дуже сильно допомагає своїми підказками, особливо коли класів багато.
Дякую за увагу!