Android decompile android studio

Android decompile android studio

Полная декомпиляция 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:\Decompile\Calculator\src\com\android)
  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: туда и обратно

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

С офсайта 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

> tools\bin\sdkmanager.bat «build-tools;25.0.3» «platform-tools»

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

Читайте также:  Managing files on android

Пусть например, для программы «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.0\d2j-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-tools\25.0.3\zipalign 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_src\apktool.yml, в параметре minSdkVersion:

> build-tools\25.0.3\apksigner sign —ks android_keystore.jks —min-sdk-version 14 foobar_fixed.apk

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

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

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

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

Яндекс погода

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

Спотифай — ладно, слушаем с женой музыку, сохраняем, один общий плейлист в машине.

2ГИС — многовато для приложения, использующего векторную графику для построения карт без фото-подложки как у Яндекс карт к примеру, но тоже ладно, москва+глобальная карта в любом случае сейчас+еще пара регионов и по ним путеводители с фоточками имеются, так что простительно.

Вконтакте — тоже все понятно, это уже целый комбайн с мини приложениями, огромным функционалом, музыкой и тонной контента.

Но вот Яндекс погода? Какого хрена? Единственное назначение этого приложения — это небольшой виджет на экране который дает мне немного информации. Ладно там есть еще карта осадков на макетной подложке. И всё.

Я далек от написания приложений для андроид, но Яндекс, приложению для своего функцианирования в теории достаточно получать пакеты текстовых данных для формирования информации, откуда там 1 ГБ? Если я не прав — попрошу разбирающихся в теме людей меня поправить и даю добро модераторам на апдейт поста, если будет ответ.

Читайте также:  Все версии ccleaner для андроид

Лучше один раз увидеть

Протестировал, проверил вроде всё что можно. ))

Сегодня пишет пользователь — «при вводе данных — приложение выбрасывает».

Ок, опять тестирую, проверяю на разных телефонах — работает.

По логам — чисто.

Присылают видео — действительно выбрасывает.

И тут, пригляделся внимательнее.

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

Уфффф. Расследование окончено. 🙂

Автономность

Нужен ещё параметр для учёта температуры на улице

Войти в айти. Часть 5

Привет, Пикабу! Да, да.. это очередной пикабушник с кризисом среднего возраста, который вдруг осознал и понял, что с детства мечтал быть программистом. Давненько не было отчёта о моём пути в профессиональный мир разработки. Если вдруг Вам интересен мой опыт, то предыдущие срезы тут:

Вкратце, с чего всё начиналось:

0) Увольнение с военной службы по контракту

2) Высшее образование (заочное) по направлению «Информатика и вычислительная техника»

3) Выучил Java, сейчас изучаю Kotlin и Swift

4) Есть несколько карманных проектов в Play Market, всё довольно простенькое, но стараюсь развивать

5) Женат, детей нет, кот есть

6) В it не работал

Цель — к декабрю 2020 набрать в сумме 1.000.000 загрузок на Android, выучить Swift и выпустить приложение на ios.

Первый пост был написан 10 месяцев назад, в котором я ставил себе рубеж — декабрь 2020. Но не дотянув 2 месяца я схожу с дистанции. Причина этому довольно меркантильная, но приятная — пора устроиться на работу, нужны деньги так как ждём пополнения.

Давайте подведу итоги того, что я имею на данный момент:

— Выучен язык программирования и технологии, позволяющие писать под Android всё, что приходит в голову. Ограничен только временем. На любой вопрос уже есть ответ, стоит только почитать, поэкспериментировать, вникнуть.

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

— Физкультура важна не менее умных книг. Мало движения — тает мотивация, появляется прокрастинация.

— 1.000.000 загрузок набрать не удалось. Цифры гораздо скромнее. На данный момент в сумме загрузок около 240.000, активных пользователей в сумме по приложениям около 83.000

— если из 100 скачавших приложение человек 30 не удаляют его, то это вполне хороший показатель, значит его можно и нужно развивать!

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

— после 30 на работу в it устроиться можно!

В последнем своём приложении я собрал весь накопленный опыт и понял, что теперь не стыдно рискнуть пройти собеседование. Казалось бы, всего лишь блокнот. Но мне так понравилось работать над деталями, и пробовать новые технологии при работе над ним, что я могу говорить теперь об этом часами. Оказывается, что к созданной тобой программе можно испытывать чувства привязанности и симпатии, что-то вроде любви к своему питомцу. Странно это=)

Результаты по Android меня вполне удовлетворили, чего не сказать о ios. Времени и сил не хватило на всё, буду заниматься им в рамках общего развития. Надеюсь что к весне смогу сделать что-то простенькое.

Читайте также:  Рутрекер плагин для андроида

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

Если мечтаете сменить род деятельности, выделите время, составьте план, определите сроки и вперёд! Другой жизни не будет, а занятие любимым делом профессионально — это очень, очень круто!

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

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

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

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

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

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

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

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

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

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

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

Источник

Оцените статью