Приятного времени суток всем на этом сайте, сегодня я затрону тему связанную напрямую с восстановлением исходного кода мобильных приложений написанных на java.
Итак, приступим.
ps Вы из будущего, когда увидите свой код
Необходимые программы...
Всего, для получения исходного кода нам требуется три программы.
1.
ProGuard Deobfuscator
2.
JD Decompiler
3.
fernflower.jar
А теперь по подробнее о каждой, и, к слову, все имена кликабельны
Что такое обфускация-деобфускация?
Не секрет, что большинство разработчиков не хотят раскрывать тайны своего исходного кода для других, что-бы не допустить "дополнительной сторонней отладки" и использования на свое усмотрение, так сказать. Все то же большинство разработчиков используют для защиты своих приложений один действенный способ. Разумеется не в 100% случаев, но в 90 точно =)
Свои приложения они подвергают обфускации, и код становится абсолютно непонятным. Методы,переменные и классы теряют все свои уникальные имена, и, понять как приложение работает просто нереально. Более того, обычные декомпиляторы даже такой код восстановить не в состоянии.
Добрые люди из отдела поддержки пиратства создали программку ProGuard Deobfuscator, она работает в точности до наоборот. Присваивая всем переменным и методам уникальные (но все еще непонятные имена) и, делая код возможным к запуску в принципе.
Зачем нужен JD Decompiler?
Просто так, если захочется
только посмотреть код. Ибо полная декомпиляция занимает некоторое время. А вот за просмотром отдельных классов, прошу использовать эту программу. Хотя код на 100% она не восстанавливает, но, явно лучше чем DJ Java Decompiler, который лишь представлял набор команд для виртуальной машины java.
fernflower.jar - Какого черта?
А это и есть то, ради чего мы все здесь сегодня собрались. Маленький декомпилятор без интерфейса который делает чудеса. Найти его очень трудно, если не сказать больше. Но, он возвращает исходный код. Самый натуральный.
Среда разработки или как там её черт возьми...
Совсем забыл, что для редактирования (удобного, а не через блокнот) и компиляции кода, нужен компилятор. Сам лично пользуюсь NetBeans. Премудростями его установки сейчас делиться не стану, ибо есть и другие среды разработки, вы вольны в своем выборе) Но, код придется "вставлять" в одну из таких программ-компиляторов. Так что, не забудьте что-нибудь установить
Порядок действий.
Вы готовы стать кодерами?)
И перенять на себя всю ту головную боль от рефакторинга приложений?
Тогда вот с чего мы начнем:
1. Найдем какую нибудь небольшую игрушку. Пускай это будут танчики про.
2. Теперь берем Jar файл этой замечательной игры, и кидаем его со всей дури на deobfuscate.bat
3. А теперь самое интересное - консоль. Открываем её через комбинацию Win+R, вписываем cmd, затем Enter =)
4. Чем дальше тем лучше. Для начала установим адрес до папки с нашим jar-файлом. Командой "cd" устанавливаем каталог с fernflower-ом и нашей игрушкой после деобфускации.
ps
5. Как же там было... Ах да, сначала пишем активацию нашего цветочка, затем путь до приложения, а затем папку в которую нужно будет поместить исходный код.
Получилось что-то вроде:
java -jar fernflower.jar A:\Users\Беспалевный\Desktop\Гайды\танчики\tanchiki_pro.jar
A:\Users\Беспалевный\Desktop\Гайды\танчики\out
ps Естественно без переноса строк.
6. Вот и все. Заходим в папку куда был загружен jar с декомпилированными файлами. Распаковываем его 7zip-ом или чем-то подобным. Выдираем из рук разработчиков файлы с расширением java и спокойно уносим их в закат под героическую музыку...
Что делать дальше? Заносить содержимое jar в среду разработки, настраивать проект под особенности приложения и компилировать. Затем искать критические ошибки (если есть) и исправлять их. А потом приступать к рефакторингу...
На этом желаю всем удачи в расчленении своих любимых, и не обязательно, игр.
ps Программы нужные для декомпиляции уже залиты, ссылки в начале страницы кликабельны