Как установить взломанные программы на андроид
Установка приложений на андроид довольно проста, в большинстве случаев вам не надо ни прошивать, ни как-то патчить своё устройство! Чтобы помочь начинающим пользователям и не только, представляем вашему вниманию мануал "как установить игры и программы на Андроид", а так же "как установить игры с кэшем на андроид".
1. Подготовка, первое что вам следует сделать:
- Заходим в "Настройки" - в разделе "Личное" выбираем "Безопасность" - в разделе "Администрирование устройства" выбираем "Неизвестные источники" ставим галочку!
! Примечание: Андроид один для всех, но каждый производитель по какой-то причине может изменить размещение тех или иных функций в меню настроек, поэтому ваша задача найти что-то похожее на "Неизвестные источники" и поставить галочку!
2. Теперь переходим к загрузке необходимых файлов:
- Существуют установочные файлы APK, а так же файлы кэш, это дополнительные файлы к некоторым играм и программам! Как всё это устанавливать опишу ниже, сначала разберемся как выбрать подходящие файлы для вашего устройства.
- К некоторым приложениям в блоках версий, на нашем сайте, отображаются следующие метки:
- Adreno , PowerVR , Mali , Tegra, Tegra 2 , Tegra 3 и другие тегра - это типы видеоускорителей. Вам необходимо выбирать файлы в соответствии с видеоускорителем вашего устройства (см пункт 2.1). Если метки отсутствуют, то кэш один для всех!
- Так же есть метка @root - приложения которые будут работать только на устройствах с правами супер пользователя. Что такое Root права и как их получить смотри тут
2.1 Какой же КЭШ выбрать? Определяем тип процессоров в вашем устройстве:
-
Вариант 1. На на нашем сайте PDALIFE.info в каталоге смартфонов и планшетов. Найти свой девайс и посмотреть в характеристиках.
Вариант 2. Зарегистрировавшись на текущем сайте, переходим в "Личный кабинет" - "Настройки" и в поле "Гаджеты" выбираем и добавляем ваши устройства. После чего на вашей личной страничке и на странице приложения будут отображаться ваши устройства с указанными рядом типами видеоускорителей.
Вариант 3. Воспользоваться программой CPU-Z
Для процессоров Broadcom – пробуем кэш от Adreno
Для процессоров Vivante – должен подходить кэш от Mali
2.2 Как узнать архитектуру процессора (arm64-v8a, armabi-v7a, x86)?
-
Вариант 1. На на нашем сайте PDALIFE.info в каталоге смартфонов и планшетов. Найти свой девайс и посмотреть в характеристиках.
Вариант 2. Для этого нужно воспользоваться специальными приложениями: AIDA64, DevCheck, CPU-Z.
3. Установка APK на Андроид:
- Если файлы загружали на ПК, подключаем устройство при помощи USB шнурка, ждем пока устройство определится как флеш накопитель (для некоторых может потребоваться подтверждение соединения на устройстве). Далее копируем загруженный файл в удобную для вас папку.
- Если загружали файл сразу на устройство, то предыдущий пункт пропускаем.
- Далее запускаем файловый менеджер. Стандартный или рекомендуем установить "ES Проводник".
- Находим загруженный файл и жмем на него, запустив установку, следуем инструкции, по окончанию жмем готово!
- Если к игре не требуется дополнительных кэш файлов, тогда в списке ваших приложений находим игру и запускаем!
3.1 Установка игр с кэшем на Андроид:
- Если к игре или приложению имеется кэш, то скачиваем его на ПК или сразу в смартфон.
- Выбираем загруженный кэш и распаковываем его воспользовавшись программой архиватором WinRAR для ПК или ES Проводник на Андроид, или любым другим удобным для вас архиватором.
- Убедитесь что полученная папка из архива не повторят в точности название архива, если вдруг повторят, то вам нужна папка внутри.
- Папку с кэшем размещаем по пути указанному на странице с игрой (в сером блоке над ссылками).
- Далее устанавливаем апк, как было написано выше.
- До Android 5.0 все кэши размещаются на ВСТРОЕННОЙ карте памяти. НЕ съемной microSD! Начиная с Android 5.0 и выше в настройках устройства может быть возможность назначить внешнюю карту памяти (microSD) как основную или объединить, тогда можно размещать и на microSD
- /Android/data/ и /gameloft/games/ - кэши, размещаемые по данным путям можно скачивать через приложение по wi-fi, или мобильный интернет. Так же, от версии к версии не обязательно качать новые кэш, все необходимое приложение скачает само.
- /Android/obb/ - кэши в эту папку загружать только с сайта, при обновлении версии снова загружаем новый кэш.
4. Основные ошибки и часто задаваемые вопросы:
Вопрос: Что такое Root права и как их получить?
Ответ: Это пользователь с расширенными правами доступа, как Администратор на ПК с Windows. Root права можно получить методом прошивки устройства или через спец программы. Переходим на наш сайт PDALIFE.info в каталог смартфонов и планшетов находим свой девайс через поиск, если к нему есть прошивки, то вы увидите соответствующую вкладку "Прошивки" в ней вы найдете и инструкцию по получению root прав и инструкции по прошивке. Например: инструкции по прошивке Samsung G9208 Galaxy S6
Вопрос: А на моем устройстве пойдет?
Ответ: Смотрите по меткам и в Google Play поддерживается ваше устройство или нет. Мы не можем знать пойдет она у вас или нет, а ждать ответа от пользователя с таким же устройством можно долго! Лучше отпишитесь о результате!
Вопрос: Пишет синтаксическая ошибка, что делать?
Ответ: Ваша версия Андроид ниже чем требуется. Если есть возможность, то обновите свое устройство до новой версии Андроид.
Вопрос: У меня нет папки data или obb, что делать?
Ответ: Создайте ее!
Вопрос: Почему не видит кэш?, я разместил всё как написано.
Вопрос: Я разместил кэш правильно, но просит докачать ХХХ Мб, почему?
Ответ: Кэш размещен не на встроенную память телефона, а на microSD. Не каждая игра поддерживает размещение кэша на внешний накопитель. Исключением являются некоторые китайские устройства и некоторые модели Fly, в этих смартфонах/планшетах при подключении карты microSD происходит подмена внешней карты на встроенную.
Ответ 2: Запустите игру и посмотрите какую папку и где она создаст, должна быть похожа на папку из архива кэша, переместите файлы из папки в архиве в созданную игрой папку.
Ответ 3: Папку из архива нужно извлечь в текущую папку, а не в папку с названием архива (при распаковки через WinRAR)
Вопрос: Я кэш разместил правильно, но просит докачать х МБ, почему?
Ответ: Если количество МБ приблизительно равно МБ кэша скачанного с сайта, то это не докачать, а скачать полностью! То есть кэш размещен не верно, читайте предыдущий вопрос/ответ!
Вопрос: У меня мало встроенной памяти, как быть?
Ответ: Прошить root права и воспользоваться программой, например: Directory Bind.
Ответ 2: Посмотрите в настройках смартфона, некоторые производители и устройства на Android 5.0 и выше могут позволять назначать внешнюю карту памяти как основную.
PS: Общайтесь культурно, не употребляйте слова из одних заглавных букв и знаки препинания в большом количестве! В противном случае ваш комментарий может быть удалён!
В наше время устройства, работающие под Андроид ОС, проходят модификацию получения ROOT прав, и владельцы пытаются установить на них взломанное программное обеспечение, во множестве предлагаемое глобальной сетью интернет. Так как установить взломанную игру?
Установка взломанных игр на устройства Андроид ОС
Рассмотрим несколько моментов по установке взломанных игр на рутированные устройства. Самый простой вариант установки, когда происходит скачивание программы в АРК файле и программа не пытается скачать из интернета. Или не требует прохождения верификации. Верификация - процедура скачивания необходимых файлов для корректной работы игры через мобильный интернет.
АРК файл это установочный файл какой-либо программы. К примеру, при установке программ с плеймаркета данный файл скачивается, но после установки автоматически удаляется. При установке взломанной игры без необходимости установки кеша самый простой вариант скачиваем в любую папку файл АРК, после чего проводим установку. И наслаждаемся игрой.
Совсем другая ситуация с установкой взломанных игр. Такие игры требуют прохождения верификации или установки кеша – фалы, содержащие дополнительную информацию об игре. И обеспечивают быструю и стабильную работу игрушки, – как правило, могут занимать намного больший объем, чем сама игра. И обычно при наличии расширителей памяти - СD, кеш устанавливаются на них
Такая установка взломанного софта требует индивидуального подхода к каждой программе, так как место записи необходимого для программы кеша прописано в АРК файле. И если установку провести в какое-либо другое место программа попросту не запустится, потому при скачивании данных файлов у них всегда в наборе идет текстовый файл с указанием директории, в которую необходимо записать кеш к данной игре – такой кеш обязательно должен быть в разархивированном состоянии.
Значит, действия по вопросу как установить взломанную игру состоят из следующих этапов.
- Находим в интернете сайт с взломанной интересующей нас игрой и скачиваем его на ПК или прямо в телефон на СD карту. При скачивании в телефон необходимо наличие установленной в аппарат программы архиватора вин зип и вин рар.
- Все скачанные файлы должны иметь расширение арк для самой игры, кеш файлы могут иметь любое расширение, но только не архивы. Все заархивированные файла необходимо разархивировать.
- Скачанные файлы скидываем на телефон при том, что файл арк скидываем в любое место, в то время как кеш сбрасываем в директорию, указанную в текстовом файле.
- Тапаем по арк файлу и производим установку
Если установка всех элементов произведена правильно и по инструкции, то можете радоваться, все действия совершены должным образом. Игрушка, за которую взяли бы, энное количество денег установлена на устройство совершенно бесплатно. При этом пользование всеми сервисами программы, предусматривающими плату, тоже будет бесплатным.
Но самое главное во всей пройденной процедуре помнить, что ваш аппарат стоит денег и предназначен для принесения пользы. В то время как все это можно уничтожить вторжением нелицензированного программного обеспечения.
Ни один разговор о взломе и модификации приложений не обходится без упоминания дизассемблера, дебаггера, формата исполняемых файлов и вездесущей IDA Pro. Однако в случае с Android все намного проще, и здесь для вскрытия и даже внедрения кода в приложение совсем не обязательно использовать все эти инструменты. Код можно легко декомпилировать обратно в Java и модифицировать, используя пару простых инструментов и текстовый редактор.
Этой статьей мы начинаем цикл, посвященный вскрытию и модификации приложений для Android. Первая часть — вводная, поэтому никакого хардкора: мы разберемся в устройстве пакетов APK, научимся разбирать APK на части, декомпилировать его код, вносить правки и собирать обратно, и в качестве примера взломаем одно популярное приложение из маркета. Вторая статья будет целиком посвящена внедрению бэкдора/вируса в чужое приложение. Это уже не просто правка нескольких строк, а глубокая модификация. Третья статья — методы обфускации и их обхода. Все больше разработчиков используют нетривиальную обфускацию, чтобы осложнить жизнь реверсерам. Мы распутаем их код и опять же внесем правки в приложение.
WARNING
Это ознакомительная статья, призванная всего лишь показать процесс взлома приложений. Она не призывает тебя заниматься варезом и лишать доходов людей, потративших многие недели на создание приложений. ASAP Launcher — великолепное приложение без навязчивой рекламы, почти вся полезная функциональность доступна бесплатно. Поэтому вместо того, чтобы использовать крякнутую версию, лучше купи полное приложение и поддержи разработчика. Оно обойдется тебе всего в 100 рублей.
Снаряжаемся
Для выполнения описанных в статье действий понадобится ряд инструментов, и главный инструмент — это Linux. Да, многие из названных далее программ могут работать и в Windows, но в любых операциях, связанных с Android и его приложениями, лучше не полагаться на детище Билли. В Linux практически все сделать проще, командная строка здесь в разы удобнее (она нам ох как понадобится), а некоторые инструменты просто недоступны для других ОС.
После установки Linux в виртуалку или второй системой сразу устанавливаем средства разработки на Java и виртуальную машину. В Ubuntu это можно сделать с помощью одной команды:
Также нам нужны четыре инструмента для распаковки и декомпиляции приложений:
-
— швейцарский армейский нож для распаковки и запаковки приложений; — декомпилятор байт-кода Dalvik в код на Java; — дизассемблер кода Dalvik (не пугайся, с настоящим ассемблером он имеет мало общего); — утилита для подписи пакетов.
Для удобства создадим в домашнем каталоге подкаталог Android и скачаем эти инструменты в него:
Добавим в конец файла ~/.bashrc следующие строки:
Они нужны для того, чтобы вместо длинных и неудобных команд вроде java -jar ~/Android/sign.jar можно было набрать просто sign.
Вскрываем подопытного
Теперь нам нужно найти приложение, которое, во-первых, нетрудно расковырять, а во-вторых, которое несет какую-то пользу и достаточно известно. То есть брать простейшую софтину только для того, чтобы было не очень сложно разобраться в ее коде, мы не будем, а вместо этого устремим свой взор на топ Play Store. Практически идеальный кандидат на эту роль — выпущенный два месяца назад ASAP Launcher, удобнейший домашний экран с массой полезных и неординарных функций.
Другие статьи в выпуске:
Для удобства переименуем пакет в asap.apk:
Разархивируем с помощью unzip:
Да, APK — это обычный архив ZIP, но тем не менее он имеет четкую структуру:
- META-INF — каталог, содержащий файлы MANIFEST.MF, CERT.MF и CERT.RSA. Первые два — список всех файлов пакета и их контрольных сумм, последний содержит открытый ключ разработчика и созданную с помощью закрытого ключа цифровую подпись файла CERT.MF. Эти данные нужны, чтобы при установке пакета система смогла выяснить, что пакет не был модифицирован и действительно создан его автором. Это важно, так как, поскольку нет возможности подделать цифровую подпись пакета (для этого нужен закрытый ключ), модифицированный пакет придется подписывать другим ключом;
- res — ресурсы приложения. Здесь находятся иконка (mipmap), переводы строк (values), изображения (drawable), а также описания интерфейса приложения (layout). Все их можно модифицировать, чтобы изменить внешний вид приложения. Правда, файлы XML придется сначала «разжать» — для улучшения производительности они хранятся в бинарном формате;
- classes.dex — код приложения в форме байт-кода виртуальной машины Dalvik. Обычно приложения содержат только один такой файл, но, используя директиву multiDex, разработчик может заставить среду разработки разбить его на множество более мелких для улучшения производительности или преодоления ограничения на 65 536 методов в одном dex-файле;
- AndroidManifest.xml — манифест приложения, описывающий его структуру, включая активности, сервисы, обработчики интентов и так далее. Опять же в формате бинарного XML.
Также пакет может содержать другие каталоги, например assets (любые файлы, включенные разработчиком, в данном случае — шрифты и база данных) и lib (нативные библиотеки, созданные с использованием Android NDK).
Изучаем код
Само собой разумеется, просто разархивировать пакет недостаточно. Чтобы разобраться в работе приложения, необходимо декомпилировать файл classes.dex.
Для этого мы воспользуемся jadx-gui. Запускаем, выбираем asap.apk и видим слева список пакетов Java, включенных в APK. В данном случае это пакеты android.support — официальная библиотека Google, реализующая поддержку функций новых версий Android в старых (например, чтобы получить Material Design в Android 4.1), com.google.android.gms — Google Mobile Services, com.nispok.snakbar — реализация GUI-элемента snakbar, а также несколько других.
Основной код приложения содержится в пакете com.citc.asap, именно такое имя носит и само приложение в Google Store и на устройстве. Открываем его и видим больше десятка каталогов и множество исходников Java. Наша задача — сделать приложение «оплаченным», не платя за него. Но как найти нужный файл, реализующий проверку на оплату? Скорее всего, он будет содержать в имени слово billing. Пробегаемся по исходникам в поисках нужного нам файла и натыкаемся на исходник BaseBillingFragment в подкаталоге (пакете) fragments:
Это очень простой класс Java, в котором есть интересный метод:
Все, что он делает, — просто возвращает значение поля mHasPrime, однако интересен он не этим, а своим именем. Дело в том, что платная (точнее, оплаченная) версия ASAP называется Prime, и очевидно, что метод hasPrime как раз и нужен для проверки оплаты приложения. Чтобы подтвердить свою догадку, сохраним декомпилированные исходники (File -> Save all) в каталог и попробуем найти в них вызовы hasPrime():
Совпадений немного, основной «пользователь» hasPrime() — это SettingsFragment, то есть исходник, отвечающий за формирование окна настроек. Учитывая, что Prime-версия отличается от бесплатной именно тем, что в ней разблокированы дополнительные поля настроек, уже сейчас мы можем быть на 90% уверены, что hasPrime() — нужный нам метод. Скорее всего, именно с его помощью приложение выясняет, куплена ли Prime-версия. Осталось только убедиться в этом окончательно, подменив код метода на свой.
Вносим правки
Метод hasPrime() очень прост: он возвращает значение поля mHasPrime, которое имеет тип boolean. Нетрудно предположить, что в случае, если приложение оплачено, hasPrime() вернет true, иначе вернет false. Наша задача — сделать так, чтобы метод всегда возвращал true и остальная часть приложения думала, что приложение оплачено, и разблокировала дополнительные опции в окне настроек.
К сожалению, сделать это с помощью прямой правки исходного кода не получится: приложение нельзя скомпилировать обратно. Однако никто не запрещает дизассемблировать код, внести правки и собрать его вновь. И как раз здесь нам понадобится apktool. Дизассемблируем APK:
В текущем каталоге появится подкаталог asap. Открываем файл asap/smali/com/citc/asap/fragments/BaseBillingFragment.smali и находим hasPrime() . Декларация метода будет выглядеть так:
Это и есть дизассемблированный листинг, и, как ты видишь, он на порядок проще, чем дизассемблированный код нативных приложений. В целом здесь все тривиально:
- .method protected hasPrime()Z — объявляет protected-метод, который возвращает значение типа boolean (Z);
- .locals 1 — говорит виртуальной машине, что метод использует в своей работе один регистр (в данном случае он будет содержать возвращаемое значение);
- .prologue и .line 167 — директивы, необходимые для отладки, на ход исполнения не влияют;
- iget-boolean v0, p0 . — получает значение поля типа boolean и записывает в регистр v0, регистр p0 — это нулевой параметр, он всегда равен имени класса (this);
- return v0 — возвращает значение регистра v0;
- .end method — закрывает тело метода.
Теперь мы должны изменить данный метод так, чтобы он возвращал true независимо от значения поля mHasPrime . Мы могли бы сделать это вручную, но проще написать новый метод на Java:
И пропустить его через компилятор и дизассемблер:
На выходе получаем следующий ассемблерный код:
Ты уже должен сам догадаться, что он объявляет константу v0 со значением 1 и возвращает ее (в Dalvik тип boolean — это int, который может иметь значение 1 — true или 0 — false). Осталось только вставить этот код вместо оригинального и собрать пакет обратно:
Пакет появится в каталоге asap/dist . Переименуем его, чтобы не запутаться:
И подпишем с помощью тестового ключа:
В результате в текущем каталоге появится файл asap-fake-hasPrime.s.apk. Остается только закинуть его на карту памяти и установить, удалив перед этим оригинальное приложение.
Выводы
Взломать приложение для Android очень и очень просто. Да, я не спорю, нам попался удобный и простой пример для модификации, но опять же повторюсь — это весьма популярное приложение, о котором рассказывали на большинстве сайтов, посвященных Android.
Большинство других приложений вскрыть так же просто, однако есть достаточное количество экземпляров, пропущенных через обфускаторы и различные системы защиты. С ними все несколько сложнее, и таким приложениям будет посвящена третья статья цикла. Во второй статье мы рассмотрим, как тот же самый метод модификации использовать для внедрения собственного кода.
Евгений Зобнин
Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.
Иногда некоторые приложения на Android чем-то не устраивают пользователя. В качестве примера можно привести назойливую рекламу. А то бывает и так — всем хороша программа, да только перевод в ней или кривой, или вовсе отсутствует. Или, например, программа триальная, а получить полную версию возможности нет. Как же изменить ситуацию?
Введение
В этой статье мы поговорим о том, как разобрать пакет APK с приложением, рассмотрим его внутреннюю структуру, дизассемблируем и декомпилируем байт-код, а также попробуем внести в приложения несколько изменений, которые могут принести нам ту или иную выгоду.
Чтобы сделать все это самостоятельно, потребуются хотя бы начальные знания языка Java, на котором пишутся приложения для Android, и языка XML, который используется в Android повсеместно — от описания самого приложения и его прав доступа до хранения строк, которые будут выведены на экран. Также понадобится умение обращаться со специализированным консольным софтом.
Итак, что же представляет собой пакет APK, в котором распространяется абсолютно весь софт для Android?
Декомпиляция приложений
В статье мы работали только с дизассемблированным кодом приложения, однако если в большие приложения вносить более серьезные изменения, разобраться в коде smali будет гораздо сложнее. К счастью, мы можем декомпилировать код dex в Java-код, который будет хоть и не оригинальным и не компилируемым обратно, но гораздо более легким для чтения и понимания логики работы приложения. Чтобы сделать это, нам понадобятся два инструмента:
Использовать их следует так. Сначала запускаем dex2jar, указывая в качестве аргумента путь до apk-пакета:
В результате в текущем каталоге появится Java-пакет mail.jar, который уже можно открыть в jd-gui для просмотра Java-кода.
Устройство APK-пакетов и их получение
Пакет приложения Android, по сути, является обычным ZIP-файлом, для просмотра содержимого и распаковки которого никаких специальных инструментов не требуется. Достаточно иметь архиватор — 7zip для Windows или консольный unzip в Linux. Но это что касается обертки. А что внутри? Внутри же у нас в общем случае такая структура:
- META-INF/ — содержит цифровой сертификат приложения, удостоверяющий его создателя, и контрольные суммы файлов пакета;
- res/ — различные ресурсы, которые приложение использует в своей работе, например изображения, декларативное описание интерфейса, а также другие данные;
- AndroidManifest.xml — описание приложения. Сюда входит, например, список требуемых разрешений, требуемая версия Android и необходимое разрешение экрана;
- classes.dex — компилированный байт-код приложения для виртуальной машины Dalvik;
- resources.arsc — тоже ресурсы, но другого рода — в частности, строки (да-да, этот файл можно использовать для русификации!).
Перечисленные файлы и каталоги есть если не во всех, то, пожалуй, в абсолютном большинстве APK. Однако стоит упомянуть еще несколько не столь распространенных файлов/каталогов:
- assets — аналог ресурсов. Основное отличие — для доступа к ресурсу необходимо знать его идентификатор, список asset’ов же можно получать динамически, используя метод AssetManager.list() в коде приложения;
- lib — нативные Linux-библиотеки, написанные с помощью NDK (Native Development Kit).
Этот каталог используют производители игр, помещая туда движок игры, написанный на C/C++, а также создатели высокопроизводительных приложений (например, Google Chrome). С устройством разобрались. Но как же получить сам файл пакета интересующего приложения? Поскольку без рута с устройства забрать файлы APK не представляется возможным (они лежат в каталоге /data/app), а рутить не всегда целесообразно, имеется как минимум три способа получить файл приложения на компьютер:
- расширение APK Downloader для Chrome;
- приложение Real APK Leecher;
- различные файлообменники и варезники.
Какой из них использовать — дело вкуса; мы предпочитаем использовать отдельные приложения, поэтому опишем использование Real APK Leecher, тем более что написан он на Java и, соответственно, работать будет хоть в винде, хоть в никсах.
Настройка Real APK Leecher
Другие статьи в выпуске:
Просмотр и модификация
Допустим, ты нашел интересующий тебя пакет, скачал, распаковал… и при попытке просмотра какого-нибудь XML-файла с удивлением обнаружил, что файл не текстовый. Чем же его декомпилировать и как вообще работать с пакетами? Неужели необходимо ставить SDK? Нет, SDK ставить вовсе не обязательно. На самом деле для всех шагов по распаковке, модификации и упаковке пакетов APK нужны следующие инструменты:
Использовать все эти инструменты можно и по отдельности, но это неудобно, поэтому лучше воспользоваться более высокоуровневым софтом, построенным на их основе. Если ты работаешь в Linux или Mac OS X, то тут есть инструмент под названием apktool. Он позволяет распаковывать ресурсы в оригинальный вид (в том числе бинарные XML- и arsc-файлы), пересобирать пакет с измененными ресурсами, но не умеет подписывать пакеты, так что запускать утилиту signer придется вручную. Несмотря на то что утилита написана на Java, ее установка достаточно нестандартна. Сначала следует получить сам jar-файл:
Далее нам понадобится скрипт-обвязка для запуска apktool (он, кстати, доступен и для Windows), включающий в себя еще и утилиту aapt, которая понадобится для запаковки пакета:
Далее просто сваливаем содержимое обоих архивов в каталог ~/bin и добавляем его в $PATH:
Если же ты работаешь в Windows, то для нее есть превосходный инструмент под названиемVirtuous Ten Studio, который также аккумулирует в себе все эти инструменты (включая сам apktool), но вместо CLI-интерфейса предоставляет пользователю интуитивно понятный графический интерфейс, с помощью которого можно выполнять операции по распаковке, дизассемблированию и декомпиляции в несколько кликов. Инструмент этот Donation-ware, то есть иногда появляются окошки с предложением получить лицензию, но это, в конце концов, можно и потерпеть. Описывать его не имеет никакого смысла, потому что разобраться в интерфейсе можно за несколько минут. А вот apktool, вследствие его консольной природы, следует обсудить подробнее.
Импорт APK в Virtuous Ten Studio
Рассмотрим опции apktool. Если вкратце, то имеются три основные команды: d (decode), b (build) и if (install framework). Если с первыми двумя командами все понятно, то что делает третья, условный оператор? Она распаковывает указанный UI-фреймворк, который необходим в тех случаях, когда ты препарируешь какой-либо системный пакет.
Рассмотрим наиболее интересные опции первой команды:
- -s — не дизассемблировать файлы dex;
- -r — не распаковывать ресурсы;
- -b — не вставлять отладочную информацию в результаты дизассемблирования файла dex;
- --frame-path — использовать указанный UI-фреймворк вместо встроенного в apktool. Теперь рассмотрим пару опций для команды b:
- -f — форсированная сборка без проверки изменений;
- -a — указываем путь к aapt (средство для сборки APK-архива), если ты по какой-то причине хочешь использовать его из другого источника.
Пользоваться apktool очень просто, для этого достаточно указать одну из команд и путь до APK, например:
После этого в каталоге mail появятся все извлеченные и дизассемблированные файлы пакета.
Препарирование. Отключаем рекламу
Теория — это, конечно, хорошо, но зачем она нужна, если мы не знаем, что делать с распакованным пакетом? Попробуем применить теорию с пользой для себя, а именно модифицируем какую-нибудь софтину так, чтобы она не показывала нам рекламу. Для примера пусть это будет Virtual Torch — виртуальный факел. Для нас эта софтина подойдет идеально, потому что она под завязку набита раздражающей рекламой и к тому же достаточно проста, чтобы не потеряться в дебрях кода.
Поиск кода рекламы в jd-gui
Итак, с помощью одного из приведенных способов скачай приложение из маркета. Если ты решил использовать Virtuous Ten Studio, просто открой APK-файл в приложении и распакуй его, для чего создай проект (File -> New project), затем в контекстном меню проекта выбери Import File. Если же твой выбор пал на apktool, то достаточно выполнить одну команду:
После этого в каталоге com.kauf.particle.virtualtorch появится файловое дерево, похожее на описанное в предыдущем разделе, но с дополнительным каталогом smali вместо dex-файлов и файлом apktool.yml. Первый содержит дизассемблированный код исполняемого dex-файла приложения, второй — служебную информацию, необходимую apktool для сборки пакета обратно.
Первое место, куда мы должны заглянуть, — это, конечно же, AndroidManifest.xml. И здесь мы сразу встречаем следующую строку:
Нетрудно догадаться, что она отвечает за предоставление приложению полномочий на использование интернет-соединения. По сути, если мы хотим просто избавиться от рекламы, нам, скорее всего, достаточно будет запретить приложению интернет. Попытаемся это сделать. Удаляем указанную строку и пробуем собрать софтину с помощью apktool:
В каталоге com.kauf.particle.virtualtorch/build/ появится результирующий APK-файл. Однако установить его не получится, так как он не имеет цифровой подписи и контрольных сумм файлов (в нем просто нет каталога META-INF/). Мы должны подписать пакет с помощью утилиты apk-signer. Запустили. Интерфейс состоит из двух вкладок — на первой (Key Generator) создаем ключи, на второй (APK Signer) подписываем. Чтобы создать наш приватный ключ, заполняем следующие поля:
- Target File — выходной файл хранилища ключей; в нем обычно хранится одна пара ключей;
- Password и Confirm — пароль для хранилища;
- Alias — имя ключа в хранилище;
- Alias password и Confirm — пароль секретного ключа;
- Validity — срок действия (в годах). Значение по умолчанию оптимально.
Остальные поля, в общем-то, необязательны — но необходимо заполнить хотя бы одно.
Создание ключа в apk-signer
WARNING
Чтобы подписать приложение с помощью apk-signer, ты должен установить Android SDK и указать полный путь до него в настройках приложения.
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.
Теперь этим ключом можно подписать APK. На вкладке APK Signer выбираем только что сгенерированный файл, вводим пароль, алиас ключа и пароль к нему, затем находим файл APK и смело жмем кнопку «Sign». Если все пройдет нормально, пакет будет подписан.
Так как мы подписали пакет нашим собственным ключом, он будет конфликтовать с оригинальным приложением, а это значит, что при попытке обновить софтину через маркет мы получим ошибку.
Цифровая подпись необходима только стороннему софту, поэтому если ты занимаешься модификацией системных приложений, которые устанавливаются копированием в каталог /system/app/, то подписывать их не нужно.
Обычно авторы приложений создают специальные классы для вывода рекламы и вызывают методы этих классов во время запуска приложения или одной из его «активностей» (упрощенно говоря, экранов приложения). Попробуем найти эти классы. Идем в каталог smali, далее com (в org лежит только открытая графическая библиотека cocos2d), далее kauf (именно туда, потому что это имя разработчика и там лежит весь его код) — и вот он, каталог marketing. Внутри находим кучу файлов с расширением smali. Это классы, и наиболее примечателен из них класс Ad.smali, по названию которого нетрудно догадаться, что именно он выводит рекламу.
Мы могли бы изменить логику его работы, но гораздо проще будет тупо убрать вызовы любых его методов из самого приложения. Поэтому выходим из каталога marketing и идем в соседний каталог particle, а затем в virtualtorch. Особого внимания здесь заслуживает файл MainActivity.smali. Это стандартный для Android класс, который создается Android SDK и устанавливается в качестве точки входа в приложение (аналог функции main в Си). Открываем файл на редактирование.
Внутри находится код smali (местный ассемблер). Он довольно запутанный и трудный для чтения в силу своей низкоуровневой природы, поэтому мы не будем его изучать, а просто найдем все упоминания класса Ad в коде и закомментируем их. Вбиваем строку «Ad» в поиске и попадаем на строку 25:
Здесь происходит создание объекта. Комментируем. Продолжаем поиск и находим в строках 433, 435, 466, 468, 738, 740, 800 и 802 обращения к методам класса Ad. Комментируем. Вроде все. Сохраняем. Теперь пакет необходимо собрать обратно и проверить его работоспособность и наличие рекламы. Для чистоты эксперимента возвращаем удаленную из AndroidManifest.xml строку, собираем пакет, подписываем и устанавливаем.
Наш подопытный кролик. Видна реклама Он же, но уже без рекламы
Оп-па! Реклама пропала только во время работы приложения, но осталась в главном меню, которое мы видим, когда запускаем софтину. Так, подождите, но ведь точка входа — это класс MainActivity, а реклама пропала во время работы приложения, но осталась в главном меню, значит, точка входа другая? Чтобы выявить истинную точку входа, вновь открываем файл AndroidManifest.xml. И да, в нем есть следующие строки:
Они говорят нам (и, что важнее, андроиду) о том, что активность с именем Start должна быть запущена в ответ на генерацию интента (события) android.intent.action.MAIN из категории android.intent.category.LAUNCHER. Это событие генерируется при тапе на иконку приложения в ланчере, поэтому оно и определяет точку входа, а именно класс Start. Скорее всего, программист сначала написал приложение без главного меню, точкой входа в которое был стандартный класс MainActivity, а затем добавил новое окно (активность), содержащее меню и описанное в классе Start, и вручную сделал его точкой входа.
Открываем файл Start.smali и вновь ищем строку «Ad», находим в строках 153 и 155 упоминание класса FirstAd. Он тоже есть в исходниках и, судя по названию, как раз и отвечает за показ объявлений на главном экране. Смотрим дальше, идет создание экземпляра класса FirstAd и интента, по контексту имеющего отношение к этому экземпляру, а дальше метка cond_10, условный переход на которую осуществляется аккурат перед созданием экземпляра класса:
Скорее всего, программа каким-то случайном образом вычисляет, нужно ли показывать рекламу на главном экране, и, если нет, перескакивает сразу на cond_10. Ок, упростим ей задачу и заменим условный переход на безусловный:
Больше упоминаний FirstAd в коде нет, поэтому закрываем файл и вновь собираем наш виртуальный факел с помощью apktool. Копируем на смартфон, устанавливаем, запускаем. Вуаля, вся реклама исчезла, с чем нас всех и поздравляем.
- Перевод приложений Android;
- пример снятия триала с приложения.
Итоги
Эта статья лишь краткое введение в методы вскрытия и модификации Android-приложений. За кадром остались многие вопросы, такие как снятие защиты, разбор обфусцированного кода, перевод и замена ресурсов приложения, а также модификация приложений, написанных с использованием Android NDK. Однако, имея базовые знания, разобраться во всем этом — лишь вопрос времени.
Тадаммм. Патчер к большинству программ и игр для андроид!
Взламывайте игры, путем изменения значений.
Взломайте соседский wi-fi без особых знаний и усилий.
v4.1 build 140 Premium
Расширьте возможности своего андроид девайса всего в несколько кликов!
Уникальная программа для поиска и изменения любых значений.
Простое приложение для взлома многих игр.
Отличное приложение для взлома игр.
Отличное приложение для изминения разрешение и частоты кадров в мобильных играх!
Еще одно отличное приложение для взлома андроид игр.
Облегчайте себе жизнь в играх при помощи патчей.
Еще одна программа на андроид от злостных хакеров, как гром среди ясного неба для Андроид Маркетов!
Взламывайте точки доступа wi-fi в любом месте и в любое время.
Простое приложение для взлома игр.
Взломщик для андроид утройств - аналог прог Sorcerer для симбиан и PGS для ВМ, Artmoney для ПК. Содержит возможность изменения скорости игры.
Программа позволяющая использовать различные читы для игры GTA: San Andreas
Читайте также: