0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Декомпиляция и Компиляция APK приложения Android (Видео)

Декомпиляция и Компиляция APK приложения Android (Видео)

Полная декомпиляция Android приложений, декомпиляция приложений в исходный Java код

Порой при разработке не понимаешь как реализовать определенную функцию, которую видел в чужом приложении, или просто изучить стороннее приложение охота, для этого существует декомпиляция приложений.
В данной статье я покажу как декомпилировать Андроид приложения из *.apk файла в исходный код.

Все приложения являются бесплатными, мультиплатформенными и открытыми (кроме Java Decompiler, у него закрыт исходный код).
Их можно скачать с официального сайта.

Инструкцию буду проводить для ОС Windows.

  1. Качаем dex2jar-0.0.9.8.zip (номер версии может изменяться) и извлекаем все файлы в желаемую папку, например D:Decompile .
  2. Качаем Java Decompiler, я использовал JD-GUI и извлекаем файлы для удобства в ту же папку, куда и dex2jar.
  3. Качаем apktool и apktool-install-windows-r04-brut1.tar.bz2 и извлекаем файлы уже в системную папку. По умолчанию C:Windows. (Не забываем скачать второй архив)
  4. Берем нужный apk файл и кладем в папку с dex2jar и Java Decompiler. В примере приведу декомпиляцию приложения Calculator.zip ( 66,18 КБ )
    . (надо извлечь из архива).
  5. Открываем Командную строку (Обработчик команд Windows) в вышеупомянутой папке (В папке по пустому месте при зажатой кнопке Shift нажимаем правую кнопку мыши и выбираем Обработчик команд Windows).
  6. Вводим команду dex2jar Calculator.apk и если все прошло хорошо, в той же папке появится файл Calculator.apk.dex2jar.jar
  7. Запускаем jd-gui и открываем полученный на предыдущем шаге файл. (На Windows 7 открывать с правами администратора и с совместимостью Windows XP SP3)
  8. Выбираем пункт меню File-Save All Sources и сохраняем.
  9. Извлекаем полученный zip архив.
  10. Помещаем полученную папку в папку src (надо предварительно создать).(Что бы получилась примерно такая структура D:DecompileCalculatorsrccomandroid)
  11. Опять же в командной строке вводим команду apktool d Calculator.apk Calculator, где Calculator.apk-имя пакета, Calculator-папка для декомпиляции
  12. Если все хорошо, тогда в указанной папке будут исходники в двух форматах (java и smali), ресурсы и файлы AndroidManifest.xml, apktool.yml
  13. Все готово, исходники получены. Правда после декомпиляции в коде есть, можно сказать, ошибки, я заметил пока только что вместо true и false стоят 1 и 0 соответственно.

P.S. Если хочется импортировать полученный код в IDE Eclipse (File-Import), тогда положите содержимое этого архива(Eclipse.zip ( 1,44 КБ )
) в папку с проектом, предварительно изменив на третьей строке PROJECT NAME PROJECT NAME на желаемое название, в моем примере «Calculator» в файле .project
P.P.S. Если apk файл был пропущен при компиляции через обфускатор (proguard), тогда полученный код будет плохо читаем.
Источник: http://boomik.ru/polnaya-dekompilyaciya-android-prilozhenij

Сообщение отредактировал KEEPERekb — 09.06.15, 14:51

Декомпиляция APK-файлов онлайн

Недавно я рассказывал как с помощью бесплатных онлайн сервисов проверить Android приложения на вирусы (проверить APK-файл). Сегодня мы продолжим тему APK-файлов, и я вам покажу как декомпилировать APK файл онлайн.

Но для начала, для тех кто не в курсе, я расскажу, что такое декомпиляция APK и декомпиляция в целом, и в каких случаях это может понадобиться. Кодерам, IT-шникам и другим компьютерным гикам читать следующую главу категорический не рекомендуется! Сразу переходите к обзору онлайн-сервисов.

Декомпиляция APK онлайн

  • Предисловие
  • Что такое декомпиляция
  • Декомпилятор APK файлов онлайн
    • Онлайн сервис APK Decompilers
    • Онлайн сервис Javadecompilers
    • Онлайн сервис APK-Deguard
  • Выводы

Что такое декомпилятор или процесс декомпиляции?

Декомпилятор пытается перевести скомпилированный бинарный файл обратно в некое подобие исходного кода. Качество данной операции напрямую зависит от особенностей языка программирования исходника.

Для языка программирования Java существует большое количество декомпиляторов. Байт-код Java содержит много информации. Это облегчает декомпилятору восстанавливать изначальный код до состояния, пригодного к повторной компиляции.

Декомпиляция APK

Как вы знаете, Андроид-приложения как правило пишут на Java. С момента выхода самой первой версии Андроид перед программистами стояла задача — не только компилировать из файлов Java в APK файл для установки его в Android-устройство, но и произвести обратное действие, т.е. декомпилировать файл APK.

Зачем нужна декомпиляция APK-файла?

Ответ простой — для того чтобы в первую очередь посмотреть, как работает то или иное Android-приложение, ну и конечно изменить если требуется. При декомпиляции APK-файла (если он не был подвергнут предварительной обфускации) вы получаете полный комплект Java файлов с исходным кодом.

Большинству нужно именно просмотреть содержимое и для того чтобы это сделать на компьютере нужно установить много различных инструментов. Требуется наличие установленной Java-машины, Android SDK и таких инструментов как: JavaDecompiler, dex2jar и т.д. На самом деле это хоть и сложная, но самая правильная дорога, увы требующая от пользователя некоторых знаний и навыков, ну и конечно возни.

Можно ли декомпилировать Андроид-приложение как-нибудь проще?

Да, конечно. С развитием облачных технологий появились бесплатные онлайн-сервисы о которых я сейчас расскажу.

Декомпиляция APK онлайн с Javadecompilers

Начнем наш обзор с онлайн сервиса Javadecompilers. Данный инструмент основан на оффлайн версии декомпилятора Jadx.

1. Заходим на сайт Javadecompilers нажимаем кнопку «Обзор» и выбираем необходимое приложение.

2. Нажимаем на кнопку «Upload and Decompile».

3. Через несколько минут (в зависимости от размера приложения) будет отображен результат, который можно скачать на компьютер нажав на кнопку «Save».

Javadecompilers

4. Вы также можете просмотреть все файлы находящиеся в директориях и скачать каждый по отдельности.

Javadecompilers

Кроме этого на сайте есть и другие инструменты. В целом сайт очень даже неплох. Однозначно в закладки!

Декомпиляция APK онлайн с APK-Deguard

Еще один интересный онлайн сервис называется APK-Deguard. Работает по тому же принципу. Заходим, загружаем на сайт необходимый файл и нажимаем на кнопку «Upload».

APK-Deguard

Вот как выглядит декомпилированный APK-файл на сайте.

APK-Deguard

Онлайн-сервис APK-Deguard, как и предыдущий сайт, позволяет скачать исходники. В формате txt, zip и apk.

APK-Deguard

Есть ограничение на максимальный размер загружаемого приложения. Размер файла не должен превышать 16мб. Сервис не плохой и вполне юзабельный, уже давно добавлен в закладки.

Декомпилятор APK Decompilers

Ну и напоследок в двух словах про сервис APK Decompilers. Коротко, потому что особенно не о чем и рассказывать, сайт для декомпиляции APK файлов.

APK Decompilers

По функционалу уступает предыдущим. Позволяет скачать исходники на компьютер без возможности просмотра директорий и файлов на сайте.

Выводы

Возможности облачного онлайн сервиса не сравнить с оффлайн способом декомпиляции APK файлов, который более функционален и позволяет компилировать. Но рассмотренный в статье метод в некоторых ситуациях для определенных задач может быть вполне достаточен.

На этом все. Сегодня вы узнали больше о строении и декомпиляции APK файлов. Я уверен вам понадобиться эта информация и эти навыки для защиты от вредоносных программ при установке подозрительных приложений на Android.

Декомпиляция apk: туда и обратно

Скорее памятка для себя, чем пост для общественности.

С офсайта https://developer.android.com/studio/index.html забираем Android SDK Tools (ссылка внизу страницы). На данный момент там выложена версия 3859397.

Распаковываем и устанавливаем platform-tools и build-tools для последнего релиза Android. Соответствие имени релиза, версии Android и значению Android API можно посмотреть на https://source.android.com/source/build-numbers

build-tools;25.0.2 | 25.0.2 | Android SDK Build-Tools 25.0.2

build-tools;25.0.3 | 25.0.3 | Android SDK Build-Tools 25.0.3

cmake;3.6.3155560 | 3.6.3155560 | CMake 3.6.3155560

> toolsbinsdkmanager.bat «build-tools;25.0.3» «platform-tools»

Далее получаем на руки apk-шку, которую будем препарировать. Название пакета можно взять из адресной строки браузера, открыв страницу с программой на Play Market. Далее ищем и вытаскиваем архив через adb (root не требуется).

Читать еще:  Как отремонтировать телефон, который не заряжается должным образом

Пусть например, для программы «Sample Foobar» имя пакета будет com.example.foobar

List of devices attached

> adb shell «pm list packages -f -3 | grep com.example.foobar»

> adb pull /data/app/com.example.foobar-1.apk

/data/app/com.example.foobar-1.apk: 1 file pulled. 3.0 MB/s (39955506 bytes in 12.719s)

С сайта https://ibotpeaches.github.io/Apktool/ забираем и устанавливаем apktool, который умеет декомпилировать архив apk в набор файлов и обратно.

> java -jar apktool_2.2.2.jar d -o foobar_src com.example.foobar-1.apk

Декомпилированный код будет в формате smali — синтаксис и краткая справка на офсайте https://github.com/JesusFreke/smali/wiki. Описание команд можно посмотреть на http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html или на официальном сайте Android https://source.android.com/devices/tech/dalvik/dalvik-bytecode

Уже можно изучать исходный код. В Notepad++ можно добавить подсветку синтаксиса smali с https://forum.xda-developers.com/showthread.php?t=2760141, а для IntelliJ Idea недавно вышел плагин https://github.com/JesusFreke/smali/wiki/smalidea, который, по заявлению автора, даже позволяет отлаживать приложение на телефоне через ddms (проверять это я, конечно, не буду.)

Можно облегчить себе изучение кода, попробовав декомпилировать apk в исходный код на Java, но надо иметь в виду, что с вероятностью в 99.5% код получится нерабочий и его невозможно будет скомпилировать обратно в apk. В зависимости от фазы Луны и погоды на Марсе, в таком коде будут присутствовать совершенно дикие конструкции типа for (;;) и тому подобное. Но общую структуру кода можно посмотреть, посравнивать с тем, что есть в файлах smali. Для этого нам потребуется dex2jar отсюда: https://sourceforge.net/projects/dex2jar/ и jd-gui отсюда: http://jd.benow.ca/

> dex2jar-2.0d2j-dex2jar -os -ts -r com.example.foobar-1.apk

На выходе имеем com.example.foobar-1-dex2jar.jar. Запускаем jd-gui и открываем в нем этот jar:

> java -jar jd-gui-1.4.0.jar

Можно изучать код прямо в jd-gui, а можно экспортировать весь Java-код через меню File -> Save all sources.

После того, как поизучали, добавили нужное и удалили ненужное, собираем обратно smali в apk:

> java -jar apktool_2.2.2.jar b -o foobar_unaligned.apk foobar_src

Выравниваем запакованные файлы по 4-байтовой границе:

> build-tools25.0.3zipalign 4 foobar_unaligned.apk foobar_fixed.apk

Если ещё нет своего keystore, то его можно сделать с помощью программы keytool.exe, которая входит в состав JRE:

> keytool -keystore android_keystore.jks -genkey -alias recompile

Далее подписываем apk, используя сертификат из своего keystore. Указываем такое же значение min-sdk-version, как указано в исходнике foobar_srcapktool.yml, в параметре minSdkVersion:

> build-tools25.0.3apksigner sign —ks android_keystore.jks —min-sdk-version 14 foobar_fixed.apk

Перед тем, как ставить обновленную apk, надо вручную удалить оригинальную программу, если она установлена, так как оригинал и переделанная версия подписаны разными ключами.

А мне было полезно, плюсану

на 4пда, этих памяток .

думаю тут будет актуален тег «реверс-инжиниринг».

Сервис для перехода из 3D в 2D — наш, Российский.

Привет! Годами анимешники пытаются разорвать грани 2D мира. На реддите есть целый раздел посвящённый данным разработкам. Так вышло, что и я поучаствовал в схожем проекте.

Думаю, что многие из вас видели сайт selfie2anime. Он основан на открытом исходном коде и позволяет с помощью магии машинного обучения конвертировать фоточки в аниме.

Иногда выходит годно!

Иногда кринжово не очень.

Результат высылается на почту, что несколько устарело.

Так вышло, что несколько моих друзей разбираются в машинном обучении. После пары недель нытья просьб одна из них запустила публичную модель и разработала к ней Android приложение. Вышло удобнее чем с сайтом. Особенно, когда работает.

Оказывается, вам не нужен большой IP, чтобы оказаться вдохновителем крутого сервиса!

Правда, после пары постов, появились первые установки, отзывы и понимание, что мир ещё не готов.

А ещё люди не читали инструкцию и публиковали туда всякие

50 сантиметровые штуки. Угадайте, сколько пикабушников на 100 человек?

Но кого остановит волна негатива? Не нас! Нужно найти проблему и решить её. (Даже, если это не так проблема)

Можно заметить, что у получающихся картинок блеклые цвета. Это связано с тем, что нейросеть обучалась на старых аниме. Кроме того, у неё явные проблемы с тенями.

Поэтому, после моих настойчивых замечаний было решено потратить ещё немного времени на приложение и обучить его на современном аниме!

Как идейный вдохновитель, графику должен был добыть я. Вы пробовали найти триста тыщ аниме голов? И чтобы эти головы были 2010+ года выпуска, да в достойном разрешении. Очень легко на самом деле — гуглите «Anime-Face-Dataset».

В идеале, стоило накачать рисунков из Printrest, как мне и советовали, но взять готовый архив проще же. Иногда я бываю СЛИШКОМ вдохновляющим — смог «продавить» простой путь =

Итак, эти картинки загрузили в нейросеть и как-то поставили её учиться трансформировать 3D в 2D.

К сожалению, это РЕАЛЬНО оказался набор голов и других частей тела. Там не было фонов и их программа рисовать не научилась.

Чтобы хоть как-то сгладить сиё недоразумение, в приложение была добавлена опция для ПоискЛицоОпределение. Теперь, люди, гордо загружающие себя в полный рост имеют хоть какой-то шанс увидеть достойный результат.

После обучения, картинки стали действительно выглядеть современнее. Но и достичь достойного результата стало сложнее из-за моего косяка с подбором данным для обучения.

Новая сеть хуже различает цвета волос и глаз. Зато реже уходит в трип из-за теней и не путает число глаз. Это же важнее чем их цвет?

Ну и конечно лучше работает с котиками o(≧▽≦)o

Так и заканчивается эта история. (И не смотрите на текст ниже) Спасибо, если прочитали. Надеюсь, что она вас чему-нибудь научила. Планированию там. или игнорированию мнения вдохновляторов по выбору дата-сета для обучения. Надеюсь, что вы не ожидали тут какой-то эпик.

Я вдохновил подругу на создание забавного сервиса, который всё же не пришёлся людям по душе. Мы получили опыт, повеселились, слили денег на сервера и набили синяки — это жизнь 2D она или 3D. Некоторых вон вообще грузовики сбивают.

Если честно, боюсь, что промахнулся немного с сообществом, но про разработку я знаю только GameDev ._.

Напоследок оставлю чит-код для приложения, который отключает рекламу — PIKABU, чтобы его ввести, надо на главном экране зажать плашку с ссылкой на UGATIT.

Подруга моя, просьбы мои, тупые советы мои, тег ваш.

P.S. Нет. Это нельзя использовать в реальном времени на очках виртуальной реальности.

Русская азбука Mорзе для Андроид

Впечатлившись произведениями Павла Кучера решил изучить морзянку.

Да и вообще морзянка всегда может пригодиться, например можно гудком автомобиля сказать пешеходу, что про него думаешь. Или подсказать кому то правильный ответ морганием глаз или пожатием руки или покашливанием.

Нашёл неплохие программы по изучению для PC. Но за компьютер лишний раз сесть некогда и стал искать, что есть под андроид для обучения русской азбуке морзе. Выяснилось, что нет ничего. Т.е. что-то якобы есть, но по факту это оказывались или трейнеры для отработки того, что уже умеешь или справочники или что то типа превратим ваш текст в морзянку.

Я не программист, но пробовал как то писать на Яве под андроид программку для своих детей для обучения математике и игре в математику. И вроде получилось. Ну думаю попробую и тут написать, дело то нехитрое. Оказалось, что дело очень даже хитрое, ибо эта Ява под андроид не умела даже то, что делал мой ZX Spectrum в прошлом веке. Там можно было задать частоту звука и его длительность и наслаждаться прослушиванием. Тут же для получения нужного звука приходилось программировать по точкам синусоиду с которой будет колебаться динамик устройства.

В общем думал справлюсь за несколько вечеров, но шли дни, недели, месяцы. Программа рождалась в муках, справочного материала на Яве под Андроид на русском ничтожно мало, на форумах помогают плохо. И повторюсь, что я вообще не программист. В итоге, когда доделал, то понял, что программке пропадать грех, ибо аналогов то нет. Решил уж потратить ещё несколько вечеров на оформление и выкладывание для всеобщего использования на Google Play и 4PDA.

Программа полностью бесплатна и не содержит рекламы.

Поэтапное изучение знаков азбуки Морзе на приём и на передачу по методике близкой к методике ДОСААФ СССР. Приложение можно использовать и в качестве игры из двадцати уровней с увеличивающейся сложностью.

Читать еще:  Как исправить баг Apple Music для воспроизведения недоступного контента

После прохождения десяти уроков останется не только удовлетворение от пройденного, но и базовый опыт приёма и передачи букв и цифр посредством азбуки Морзе. Воспользовавшись режимом тренировка можно будет отработать приём и передачу отдельных символов до автоматизма.

Изучать морзянку с использованием компьютера обычно некогда, а телефон или планшет всегда под рукой, желательно только иметь наушники, чтобы не мешать окружающим.

Приложение активно скачивается, почти 65 тысяч установок. В основном людям нравится. Правде не все андроид устройства одинаково полезны. На некоторых есть проблемы на «приём», у Явы есть особенности проигрывания звуков. Так, что у кого не пойдёт — не обижайтесь. Буду не против, если кто-то возьмёт за основу и перепишет программу профессионально.

Декомпиляция APK-файла на Андроид

Каждая операционная система имеет собственные типы файлов, которые являются исполняемыми программами. Так, на Windows они имеют расширение «.exe», на MacOS их функция более-менее повешена на файлы-контейнеры «.pkg», а на Android – «.apk».

Расшифровывается это расширение как Android Package и означает, что внутри файла находятся все нужные для запуска приложения компоненты. Распространяются они через Play Маркет или его свободные аналоги вроде F-droid.

Кроме того, на различных сайтах, посвящённых мобильным устройствам, например, 4PDA или XDA, такие файлы можно скачать самостоятельно. Установка последних может потребовать от пользователя дополнительных действий, вроде активации в настройках телефона права на развёртывание на устройстве программных компонентов, полученных из неизвестных источников.

Декомпиляция приложений и её функции

Один из языков программирования, который используется при написании программ для ОС Android – Java. На нём, как правило, пишут программы новички и люди, которые привыкли к его инструментарию. Крупные разработчики используют другие языки, которые дают больше свободы в использовании сторонних библиотек или программных компонентов.

Для того, чтобы написанный код превратился работающее приложение, его нужно скомпилировать встроенным в SDK (Software Development Kit) компилятором. Обратный же процесс, когда из готового APK-файла получается программный код, называется декомпиляцией.

Для чего может понадобиться декомпилировать такие файлы? Есть несколько ситуаций, в которых это пригодится:

  1. Пользователю недостаточно предоставленного функционала и он обладает достаточными знаниями и опытом, чтобы вносить изменения в готовый код.
  2. Посмотреть, как работает определённый компонент программы и приобрести нужный опыт в его реализации при создании собственного продукта.
  3. Определить, используются ли в приложении какие-либо части вредоносного кода.

Как видно, все эти задачи требуют некоторого опыта работы с языками программирования и Android SDK. Но при этом, на просторах интернета есть множество инструкций, которые под силу и новичкам, что делает процесс обратной компиляции полезным и для них. Нужно просто следовать инструкциям.

Декомпиляторы APK-файлов

Существует три разновидности такого типа программ – устанавливаемые на компьютер, на телефон пользователя и облачные. Первые и вторые имеют более широкий спектр функций. Последние привлекательны тем, что не используют производительности железа и работают прямо из браузера. Недостаток облачных сервисов – ограниченность поддержки сторонних модулей и надстроек, пользователь остаётся с тем набором функций, которые предоставляет владелец сервиса.

Стоит отметить, что разработчики встраивают защиту от таких действий. Это называется обфускацией и производится через специальные сервисы. При этом структура и функциональность полностью собранной программы не нарушается, но после декомпиляции пользователь получает бессвязные куски машинного кода, которые делают невозможным детальный анализ.

Лучшая программа для ПК

Это одна из самых многофункциональных утилит – APK Easy Tool. Она работает с несколькими типами файлов и способна распаковывать файлы, находящиеся на любой стадии разработки. Главное окно содержит несколько вкладок, на которых располагаются все возможности утилиты:

  • Main – отправная точка в работе с программами. Здесь можно задать папку для получения всех исходных файлов обратной инженерией, декомпилировать и компилировать их, подписывать и модифицировать подписи после внесения изменений. Внизу вкладки при всех процессах отображается вся служебная информация о версиях инструментария.
  • Framework – вкладка для подключения дополнительных модулей и фреймворков, способных помочь в процессе распаковки или упаковки готового продукта. Поддерживается установка фреймворка в APK-формате и назначение отдельной папки для каждой версии или разновидности.
  • Smali/backsmali – соответственно, компилятор и декомпилятор файлов, которые записаны в десятеричном формате. На момент написания статьи функция находится в состоянии беты, но работает без серьёзных ошибок. Функционал довольно примитивный, в наличии всего две кнопки – «Компилировать» и «Декомпилировать». Можно выбирать папки для исходного кода или целевого места назначения хранения результата повторной компиляции.
  • Log output – полезная для отладки процессов вкладка, содержит все логи каждого из запускаемых процессов.
  • Options – позволяет гибко настроить программу для выполнения всех задач. Есть опции подключения разных версий Apktool и утилиты APK Signer для обеспечения максимальной совместимости с более ранними версиями Android. Присутствует 4 собственных вкладки с различными параметрами.
  • FAQ – часто задаваемые вопросы, встроенная инструкция, помогающая пользователям преодолевать самые распространённые ошибки в работе.
  • About – сведения о версии и контакты разработчика с реквизитами для добровольной поддержки.

Приложение работает на версиях Windows, начиная с Vista и не поддерживает русского интерфейса. По функционалу вполне подходит как новичку, который разберётся с ней с помощью инструкций и видео-мануалов, так и опытному разработчику приложений.

Декомпиляция на мобильном устройстве

Когда нет возможности отладить приложение на компьютере, а сделать это нужно обязательно, на помощь приходят программы для телефона. Это тоже APK-файлы, которые представляют собой не слишком богатые в настройках, но надёжные Java-декомпиляторы. Самой простой, но в то же время полезной из таких утилит является Show Java A Java Decompiler.

Принцип работы очень прост:

  1. Начальное окно вполне минималистично – приветствие и кнопка «+», с которой начинается работа.
  2. Нажав на «+», пользователь должен выбрать, откуда загрузить программу для декомпиляции – из внутренней памяти или выбрать из уже установленных.
  3. Если выбран первый пункт, следующий шаг – навигация в папку с APK-файлами и выбор одного из них. Потом нужно подтвердить это действие, нажав на Select.
  4. После этого выбирается декомпилятор, который будет использоваться в процессе.
  5. А далее выводится окно с прогрессом операции. Если она завершается успешно, пользователь видит все файлы, нужные для функционирования приложения, и его исходный код. Если же нет, выводится окно с ошибкой.

Из недостатков – плохое декодирование файлов, которые были подвержены обфускации. В остальном же, набор возможностей здесь практически неотличим от десктопных аналогов.

Облачный сервис

Сайт javadecompilers.com предоставляет все возможности по разбору APK-файлов на составные части. Здесь есть, кроме хорошего онлайн-декомпилятора, и сетевая версия APKTools, что бывает полезно, если нет под рукой нужных устройств или пользователь не желает тратить время на инсталляцию приложений.

Принцип работы прост:

  1. Нужно открыть браузер и перейти по адресу javadecompilers.com/apk.
  2. Выбрать файл из Проводника и нажать кнопку «Upload and Decompile».
  3. Процесс декомпиляции здесь выглядит так (красная строка – прогресс, с указанием конкретного процесса, дублируется внизу экрана в области с заголовком Decompilation Results).
  4. После окончания процесса статус сменяется на окно такого вида, в котором присутствует возможность скачать полученные файлы.
  5. Предпросмотр файлов находится внизу страницы и позволяет оценить степень успеха после окончания. Файловая структура сохранена в том виде, в котором будет скачиваться архив, со всем древом каталогов и подкаталогов. Если содержимое хотя бы одного из них прочесть трудно, значит обфускацию обойти не удалось.
  6. Все файлы запакованы в архив и выглядят так.

После распаковки с ними можно делать что угодно. Облачный сервис предоставляет доступ без ограничений, хоть и показывает много рекламы в процессе своей работы. Для функционирования используется декомпилятор JaDX, который может не удовлетворять требований некоторых проектов. Ссылку на проект можно опубликовать на одной из соцсетей. Импорта на github нет, что тоже не очень удобно для конечного разработчика, у которого нет под рукой нужных инструментов.

Сборка декомпилированного приложения обратно в APK 22.07.2015

Если Вы читали первую часть статьи о том, как декомпилировать приложения для Android, то Вы знаете, что остановился я на том, как собрать все файлы, которые получились при разборке приложения, обратно в APK.

Читать еще:  Что лучше: чистый Андроид или MIUI, подробное сравнение

Лирическое отступление

К сборке рекомендуется папка с файлами, полученная в результате декомпиляции с помощью apktool. Файлы кода, которые представляют из себя набор инструкций для виртуальной машины Dalvik, собираются обратно в архив классов без каких-либо проблем. В то время как преобразование из Dalvik в Java и обратно может привести к проблемам несовместимости. Как следствие, программа будет работать некорректно. Поэтому для успешной модификации программ, а не только ради исследования, Вам необходимо изучить инструкции Dalvik.

Сборка

Собрать такие файлы обратно в APK достаточно просто. Для этого необходимо запустить apktool с соответствующим флагом сборки и передать ему путь к папке с декомпилированным приложением внутри. Например, если у нас есть папка app, которая размещена в том же каталоге, что и apktool, то команда будет выглядеть так:

После сборки готовый APK файл будет лежать в каталоге app/build. Далее необходимо подписать APK. Делается это для того, чтобы приложение работало на устройствах, где запрещена отладка. То есть, запуск неподписанных приложений на таких устройствах запрещен. Подробнее, о цифровых сертификатах и процедуре подписывания файлов можно прочитать здесь.

Подписать файл очень просто: для этого есть специальная утилита под названием signapk. Ее необходимо запустить, передав в качестве аргументов сначала сертификаты, затем путь к приложению, и, наконец, путь для подписанного приложения (результат, куда сохранять). Выглядит это примерно так:

Где же взять такой сертификат, спросите Вы? Сертификаты можно найти в Интернет. Либо сгенерировать самому. Подробную инструкцию о настройке и генерации всех необходимых файлов можно найти, например, здесь.

Заключение

Как видите, декомпиляция и сборка APK файлов достаточно простой процесс, который вдобавок можно автоматизировать, облегчая работу исследователю. Сама виртуальная машина Dalvik также проста в освоении и открыта, что, с одной стороны, снижает порог вхождения для разработчиков, с другой – является основной причиной столько большого процента пиратства именно на платформе Android. Отчасти поэтому разработчики, например, игр в основном не заинтересованы в выпуске интересных игр с сюжетом. Намного выгоднее при нынешнем отношении пользователей клепать поразительно похожие друг на друга фермы с донатом. Поэтому, покупаем приложения, поддерживаем разработчиков и в итоге получаем интересный контент. А вот донатить совершенно не нужно!

RuCore.NET

Модификации приложения APK

Необходимый софт для модификации приложений и прошивок и для чего он нужен

JAVA JDK – скачать отсюда собственно необходим для всех действий проводимых с приложениями и прошивками android .

Установка: после установки необходимо добавить ее в переменную Windows, для этого:

Открываем «Система» — «дополнительные параметры системы» — «переменные среды» — «системные переменные» — « PATH » создаем путь к папке с JAVA (Добавьте путь до файла в виде каталога ‘bin’)

Android SDK – скачать отсюда Программа для создания виртуальной машины на которой можно опробовать свое творение. Так же программа часто необходима для изменения системных данных или взлома аппарата на базе Android, для этого конечно ее нужно настроить.

APK Tool – отсюда программа необходима для распаковки apk файлов и манипуляций с ними.

Установка: скачанный файл переименовать в apktool.jar

В блокноте создать файл apktool.bat с текстом:

if «%PATH_BASE%» == «» set PATH_BASE=%PATH%

java -jar -Duser.language=en «%

Переместить оба файла в папку C : apktool

Декомпиляция: Чтобы декомпилировать приложение, скопируйте файл APK приложения в папку где

находится apktool, далее необходимо выполнить вот что, в командной строке ввести команду:

apktool d название.apk

В папке с Apktool появится папка разобранного приложения.

Компиляция: Вводим в командной строке: apktool b имя_проекта

После чего в папке с разобранным приложением появятся две новые папки: build и dist

В папке dist будет находится готовое приложение.

После компиляции приложение нужно подписать!

Для того чтобы модифицировать системные приложения необходимо прежде всего необходимо скормить программе APKTOOL системный файл framework-res.apk который находиться в системном разделе Android:

Для того чтобы скормить Apktool данный файл необходимо скопировать данный файл с телефона в папку C: apktool , затем ввести команду:

apktool if С : apktool framework -res.apk

Также для того чтобы можно было модифицировать системные файлы прошивка должна быть вначале Deodex-ирована.

SmartApkTool – скачать отсюда аналог APK Tool , только с интерфейсом (нет необходимости манипуляций в командной строке). Для работы требуются: Java JDK и Apktool .

A ndroid M ultitool скачать отсюда еще один аналог APK Tool с интерфейсом (нет необходимости манипуляций в командной строке). Для работы требуются: Java JDK , Microsoft Powerpacks скачать отсюда, NET framework .

Sign Android – скачать отсюда необходим для подписи измененных приложений android .

Для подписи приложения: распаковать архив:

Скопировать готовое приложение в папку с распакованным Sign Android

Потянуть приложение на файл Sign_APK.bat после чего приложение будет подписано!

Готовое подписанное приложение будет носить название apk_signed.apk

Программы для Deodex – идирования прошивок android

Deodex приложений в прошивке необходим тем, кто хочет устанавливать различные моды — которые могут кардинально изменить внешний вид Android (изменить иконки, изменить строку уведомлений, добавить или убрать меню)

Прежде всего необходимо: скачать и установить Java JDK на компьютер

Установите менеджер файлов Root на телефон и с помощью него перейти в раздел /system и скопировать следующие папки во внутреннюю память или карту памяти:

JoelDroid Batch Deodexer – скачать отсюда необходима для проведения Deodex – идирования прошивок android . Для работы необходимо: NET Framework 4.5 (скачать отсюда).

Подходит для Android : 5. x . x

Использование: Распаковать архив в котором находиться папка с программой

Папки Android (app, priv-app, framework) скопировать в какую либо одну на компьютере (например MyRom)

Запустить программу и указать расположение, нажав на «Browse», папки где находится (app, priv-app, framework)

Нажать «Start Process»

Deodexer for Android Runtime – скачать отсюда необходима для проведения Deodex – идирования прошивок android .

Подходит для Android : 5. x . x — 6. x . x

Использование: Распаковать архив в котором находиться папка с программой

Папки Android ( app , priv — app , framework ) скопировать в какую либо одну на компьютере (например MyRom)

Запустить программу Deodexer for Android Runtime и указать расположение папки где находится ( app , priv — app , framework )

Отметить для deodex : app , priv — app , framework

Нажать кнопку Execute

Jbart – скачать отсюда необходима для проведения Deodex – идирования прошивок android .

Подходит для Android : 2.3. x — 6. x . x

Использование: Распаковать архив в котором находиться папка с программой

Скачать всю папку с/system c Android, переместить на компьютер и запаковать в ZIP архив или же вам понадобиться прошивка упакованная в ZIP

Указать ZIP архив

Выбрать версию Android (Rom API)

Внизу справа нажать на «D — (Deodex)»

xUltimate – скачать отсюда необходима для проведения Deodex – идирования прошивок android .

Программы для перевода приложений:

Translator APK скачать здесь делает все сама, в том числе декомпиляцию и компиляцию приложения.

Прочие вспомогательные программы:

Smali – скачать отсюда дизассемблер dalvik кода.

smali нужен для дизассемблирования

backsmali ассемблирования кода

Tickle My Android – скачать отсюда Многоцелевая кухня, для редактирования системных ресурсов:

Графические изменения системы или apk.

Изменять значки батареи, WiFi , сигнала, блокировки, кольца блокировки.

Изменять клеванты уведомления, смайлики, функциональные клавиши.

Декомпилировать и перекомпилировать несколько файлов в пакетном режиме,

Распаковка изображений из файлов APK ,

zipalign (сжатие) APK -файлов,

Подпись перекомпилированых файлов APK оригинальной подписью,

Deodex (деодексированиея) APK и JAR -файлов,

Odex (одексирование) APK и JAR -файлов,

Изменять загрузочные анимации и их размер, шрифты,

Создавать update . zip для отката изменений,

Создавать update . zip вашего проекта,

Делать скриншоты с вашего устройства,

Может генерировать LogCat файлы.

Easy Debugging – скачать отсюда Приложение для определения запущенного активити приложения

Инструкция: Запустить приложение.

Нажать кнопку Пуск.

Открыть Ваше приложения для отображения запущенного активити. Активити будет показано во всплывающем сообщении (toast сообщение).

Для остановки дебага, нажмите на кнопку стоп.

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector