Препарирование. Отключаем рекламу

Теория - это, конечно, хорошо, но зачем она нужна, если мы не знаем, что делать с распакованным пакетом? Попробуем применить теорию с пользой для себя, а именно модифицируем какую-нибудь софтину так, чтобы она не показывала нам рекламу. Для примера пусть это будет Virtual Torch - виртуальный факел. Для нас эта софтина подойдет идеально, потому что она под завязку набита раздражающей рекламой и к тому же достаточно проста, чтобы не потеряться в дебрях кода. Это сродни борьбе с сорняками. Вот так растишь какую-то культуру, заказываешь удобрения, ищешь с доставкой чернозем, а растение из-за сорняка не может вырасти в полную силу, порадовать глаз хозяина.
Итак, с помощью одного из приведенных способов скачай приложение из маркета (bit. ly/13tUCWC). Если ты решил использовать Virtuous Ten Studio, просто открой АРК-файл в приложении и распакуй его, для чего создай проект (File - > New project), затем в контекстном меню проекта выбери Import File. Если же твой выбор пал на apktool, то достаточно выполнить одну команду:
$ apktool d com.kauf.particle. - virtualtorch.apk
После этого в каталоге com.kauf.particle. virtualtorch появится файловое дерево, похожее на описанное в предыдущем разделе, но с дополнительным каталогом smali вместо dex-файлов и файлом apktool.yml. Первый содержит дизассемблированный код исполняемого dex-файла приложения, второй - служебную информацию, необходимую apktool для сборки пакета обратно.
Первое место, куда мы должны заглянуть, - это, конечно же, AndroidManifest. xml. И здесь мы сразу встречаем следующую строку:
< uses - permission android: name= - "android.permission.INTERNET" />
Нетрудно догадаться, что она отвечает за предоставление приложению полномочий на использование интернет-соединения. По сути, если мы хотим просто избавиться от рекламы, нам, скорее всего, достаточно будет запретить приложению интернет. Попытаемся это сделать. Удаляем указанную строку и пробуем собрать софтину с помощью apktool:
$ apktool b com.kauf.particle. - virtualtorch
В каталоге com.kauf.particle.virtualtorch/ build/ появится результирующий АРК-файл. Однако установить его не получится, так как он не имеет цифровой подписи и контрольных сумм файлов (в нем просто нет каталога META-INF/). Мы должны подписать пакет с помощью утилиты apk-signer. Запустили. Интерфейс состоит из двух вкладок - на первой (Key Generator) создаем ключи, на второй (АРК Signer) подписываем. Чтобы создать наш приватный ключ, заполняем следующие поля:
•Target File - выходной файл хранилища ключей; в нем обычно хранится одна пара ключей;
•Password и Confirm - пароль для хранилища;
•Alias - имя ключа в хранилище;
•Alias password и Confirm - пароль секретного ключа;
•Validity - срок действия (в годах). Значение по умолчанию оптимально.
Остальные поля, в общем-то, необязательны - но необходимо заполнить хотя бы одно.
Теперь этим ключом можно подписать АРК. На вкладке АРК Signer выбираем только что сгенерированный файл, вводим пароль, алиас ключа и пароль к нему, затем находим файл АРК и смело жмем кнопку «5ign». Если все пройдет нормально, пакет будет подписан.
После этого скидываем пакет на смартфон, устанавливаем и запускаем. Вуаля, реклама пропала! Вместо нее, однако, появилось сообщение, что у нас нет интернета или отсутствуют соответствующие разрешения. По идее, этого могло бы и хватить, но сообщение выглядит раздражающе, да и, если честно, нам просто повезло с тупым приложением. Нормально написанная софтина, скорее всего, уточнит свои полномочия или проверит наличие интернет-соединения и в противном случае просто откажется запускаться. Как быть в этом случае? Конечно, править код.