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

Как посмотреть код приложения андроид

  • автор:

Как узнать исходный код программы? [дубликат]

Нужно узнать исходный код программы, написанной на C++. (Почему именно на с++? — Не спрашивайте, просто знаю и всё.) Для особо любознательных говорю, что программа эта является читом для css и мне не только интересно, как она работает, но ещё я бы хотел её чуть-чуть исправить, потому что как только ты убиваешь кого-либо, то она в чатике пишет headshot, а меня это бесит.

Отслеживать
51.4k 87 87 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков
задан 19 ноя 2011 в 6:44
Вова Сысков Вова Сысков
219 1 1 золотой знак 9 9 серебряных знаков 24 24 бронзовых знака

6 ответов 6

Сортировка: Сброс на вариант по умолчанию

ну исходный код на С++ ты ни как не получишь, а вот дизассемблировать вполне можно. погляди на IDA Pro. лучше инструмента под Windows я не видел. Если изменить ход программы нужно совсем чуток, то можешь воспользоваться OllyDbg. И прямо на ходу изменить ассеблерные команды в нужном месте и сохранить новый дамп.

Уроки и статьи по дизассемблированию можешь найти на wasm.ru.

Отслеживать
ответ дан 19 ноя 2011 в 6:56
602 4 4 серебряных знака 18 18 бронзовых знаков

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

В том случае, если exeшник aimbot’а никак не запакован (в таком случае необходимо руками снять соответствующий пакер), то строковые константы обычно хранятся в одной части файла и все вместе.

Т.е, вполне вероятно, что даже без использования IDA для реверсинга, можно в любом hex- редакторе подправить неустраивающую вас строчку ( headshot ) на что-либо менее заметное.

Модификация исходного кода android-приложения с использованием apk-файла

Так уж получилось, что приложение для чтения комиксов и манги, которое я использую на своем android-смартфоне, после обновления стало показывать рекламу в конце каждой главы комикса. Данное приложение пару лет назад было доступно на Google Play (платная версия которого и была мной куплена), но было удалено в силу «нарушения авторских прав», после чего ушло в подполье и стало распространятся через сайт разработчика. Увы, достойных альтернатив этому приложению на android и iOS я не нашел, но и смотреть рекламу особо не было желания, тем более я уже покупал версию без рекламы. Сам разработчик почему-то не сделал возможности отключить ее, а на просьбы добавить такую возможность не отозвался. Поэтому пришлось искать альтернативные методы ее отключения. Первое, что пришло в голову, это то, что android-приложения пишутся на java, а значит есть вероятность, что автор не обфусцировал свое приложение и его можно попытаться декомпилировать. Немного подумав, я приступил к работе.

Для начала был загружен сам apk-файл приложения. Затем недолгий поиск по интернету привел меня на сайт http://www.decompileandroid.com/. С его помощью можно было загрузить apk-файл с приложением и на выходе получить набор исходников. Увы, декомпиляция в java-классы происходит не совсем идеально и поэтому восстановить полностью сам проект приложения в IDE(Idea) у меня не получилось, но это позволило проанализировать саму структуру проекта и разобраться как он примерно работает. После проведения анализа, было найдено два перспективных метода в классе BaseReaderFragment.javaplaceAdViewIfNeeded и removeAdViewIfNeeded.

Код метода placeAdViewIfNeeded:

if (adViewPlaced || adView == null) < return; >else

Самое простое, что пришло на ум после чтения кода, это убрать все лишнее, и оставить лишь вызов return;

Но, как уже было сказано, даже если бы я изменил в java-классе что-либо, я бы не смог в итоге скомпилировать приложение в IDE. Поэтому пришлось искать альтернативу. Оказалось, что smali-файлы, которые создаются в процессе декомпиляции, позволяют также после внесения нужных изменений, вновь собрать модифицированное приложение. Увы, сайт, что был приведен выше, позволял лишь получать исходники, но не собирать новые. Поэтому пришлось искать способы сделать это самостоятельно.
Была найдена утилита ApkTools, которая позволяла декомпилировать и компилировать apk-файлы. Кроме того, потребовалась утилита aapt.exe, которая была взята мной из стандартного SDK под андроид в папке android-sdk\build-tools\20.0.0.

Для удобства вызова утилиты из под windows был создан скрипт apktool.bat:

@echo off set PATH=%CD%;%PATH%; java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9 

Для декомпиляции приложения были выполнены команды:

apktool if .apk apktool d .apk 

После чего, в полученных исходниках был найден файл BaseReaderFragment.smali и нужные нам методы были изменены следующим образом:

.method protected placeAdViewIfNeeded(Landroid/view/ViewGroup;)V .locals 3 .param p1, "layoutAds" # Landroid/view/ViewGroup; .prologue const/4 v2, -0x2 return-void .end method .method protected removeAdViewIfNeeded(Landroid/view/ViewGroup;)V .locals 1 .param p1, "layoutAds" # Landroid/view/ViewGroup; .prologue .line 149 const/16 v0, 0x8 return-void .end method 

Далее пришла очередь сборки apk-файла из исходников.

Сделать это можно cледующей командой:

apktool b

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

Распаковываем архив, выполняем команду:

java -jar signapk.jar certificate.pem key.pk8 .apk .apk 

Полученный apk-файл можно загружать на телефон, чтобы проверить наше модифицированное приложение. Однако в процессе тестирования изменений оказалось, что объявления больше не показываются, однако сама страница для их показа создается, что не очень приятно. Снова был проанализирован код приложения, найден класс BaseSeamlessReaderFragment, а в нем метод appendPages.

В нем было видно, что строчка:

addPage(new MangaPage(i - 1, null, chapteritem, true), false); 

создает дополнительную страницу, помимо тех, что есть в главе манги, с параметром, отвечающим за показ объявлений. Было решено удалить эту строчку и посмотреть результат. Снова заглядываем в аналогичный smali-файл(BaseSeamlessReaderFragment$4) и удаляем строчку:

invoke-virtual , Lorg/mangawatcher/android/fragments/BaseSeamlessReaderFragment;->addPage(Lorg/mangawatcher/android/fragments/BaseSeamlessReaderFragment$MangaPage;Z)V 

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

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

  • android
  • декомпиляция
  • разработка под android
  • reverse engineering
  • Информационная безопасность
  • Разработка под Android

Где можно найти исходники реальных приложений android?

Работаю один, хотел бы как-то подтянуть скилл, посмотреть реальные приложения(как организовано/сверстано).
Интересуют различные приложения, кроме игр. Может кто-нибудь знает где есть база исходников?

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

  • Вопрос задан более трёх лет назад
  • 59864 просмотра

Как посмотреть исходный код приложения Android

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

Если Вам когда-либо было интересно, что находится “под капотом” любимого приложения, и вы немного смыслите в программировании – эта статья для Вас. Мы расскажем, как посмотреть исходный код приложения Android прямо на вашем гаджете. Поехали!

Общие сведения

Большинство программ для ОС Android, как и большая часть самой операционной системы, написаны на языке программирования Java. А это значит, что посмотрев в исходный код программ Android, мы, скорее всего, увидим Java код с использованием Android SDK (которая включает в себя инструменты платформы Android). Повторюсь: чтобы понимать исходный код приложений, нужно иметь базовые знания Java и принципы работы Android.

Как узнать исходный код приложений Android?

Для начала скачайте приложение, исходный код которого Вас заинтересовал. Затем зайдите в Play Market и скачайте утилиту под названием Show Java. Именно она будет заниматься декомпилированием. Установили? Отлично, а теперь перейдем к самому интересному – извлечению исходного кода Android программы. Запускаем Show Java.

show-java-2-1-0-1

Выберите нужное приложение из установленных, или найдите его на SD карте. Теперь нужно выбрать декомпилятор. Я обычно выбираю CRF. Если возникнут проблемы – пробуйте JaDX.

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

По завершению процесса вы получите список пакетов с исходниками Android приложения. Конечно, это не 100% копия кода, которую писали разработчики этого приложения. Но основная логика сохраняется, разобрать не сложно. Что делать с исходниками? Что угодно. Смотрите, разбирайте, возможно Вам будут интересны некоторые “фичи” или особенности реализации функционала программы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *