Как извлечь файлы Java из.apk файла
К сожалению, я удалил свой исходный код Android. Пытался получить jar с использованием dex2jar и baksmali и использовал jd-gui для получения исходных файлов java, используя мой файл.apk. Да, я получил файлы, но проблема в том, что в других местах в файле Java код находится в байтовом формате. Нужно перевести это в читаемый формат, чтобы заставить себя двигаться вперед.
2 ответа
Декомпиляция - не идеальная наука, и вы редко получаете точный набранный код Java.
Когда вы компилируете свой код, для него выполняется куча оптимизаций, которые затрудняют декомпиляцию, если вы хотите получить оригинальный код.
В лучшем случае вы получите много прилично декомпилированного кода, а также немного байтового кода. Вы должны быть в состоянии выяснить, какой Java-код заменить этим байтовым кодом, основываясь на том, где в программе он находится, если вы уже писали исходный код.
Для большинства простых приложений легче переписать с нуля, чем декомпилировать и пытаться исправить этот декомпилированный код.
tl; dr: не забудьте сделать резервную копию вашего кода. Когда-либо.
Как правило, если ваша цель - вернуть читаемый исходный код, то лучше всего подойдет JD-Gui. Но для случаев, когда это не помогает, вы можете попробовать Krakatau, декомпилятор, который я написал.
Krakatau разработан для того, чтобы иметь возможность декомпилировать файлы классов, даже если они запутаны или не скомпилированы из Java. Однако результат менее читабелен, чем что-то вроде JD-Gui, потому что он не использует шаблоны, оставленные компилятором Java. Это не идеально, но я думаю, что это определенно стоит попробовать.
PS Кракатау поддерживает только байт-код JVM. Вам понадобится способ преобразовать его из Android обратно в байт-код Java, прежде чем вы сможете декомпилировать его.