Задать вопрос

Как получить исходный код из апк?

есть апк на компе как получить из нее исходные коды?
  • Вопрос задан
  • 591 просмотр
Подписаться 3 Оценить Комментировать
Решения вопроса 2
@aol-nnov
apk:
  1. smali -> java opcodes -> java decompiler == некоторый профит
  2. native -> assembler == тупик
  3. ресурсы


но если вопрос уже на этапе "как это распаковать", то всё тлен и тупик.
Ответ написан
Rou1997
@Rou1997
Байт-код DEX (Java) отлично дизассемблируется с помощью apktool (backsmali), полученный ассемблер smali на 100% соответствует байт-коду, поэтому можно внести изменения, собрать обратно и будет работать, большинство приложений написаны только на Java, также apktool извлекает ресурсы, манифест, XML и т.д.
Для упрощения анализа или если нужен именно код на Java используются разные декомпиляторы, но они далеко не идеальны, поэтому если надо собрать, то придется кучу ошибок исправить и долго отлаживать, лучше несколько разных декомпиляторов применить, для полноты картины проблемных методов.
Если приложение имеет библиотеки NDK (lib***.so), скомпилированный в машинный код, то используйте IDA Pro и toolchain из Android NDK, дизассемблирование и декомпиляция (Hex-Rays в IDA Pro) точно возможны, отладка без исходников тоже, вот сохранять изменения мне пока не приходилось, но и в этом помогут IDA Pro и утилиты из того же toolchain, во всяком случае они облегчат задачу даже если редактировать будете HEX-редактором, например они выдадут вам смещения (адреса) функций в файле, и вообще весь этот GNU toolchain (чья Windows-реализация известна также как MinGW_, помимо того что компилирует, еще и предоставляет нехилый функционал для дизассемблированния того, что компилирует :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы