Руководства, Инструкции, Бланки

готовые инструкции по редактированию 4pda img-1

готовые инструкции по редактированию 4pda

Рейтинг: 4.7/5.0 (1865 проголосовавших)

Категория: Инструкции

Описание

Инструкции по редактированию сист

Инструкция по смене фона в настройках, контактах, режима USB и др.

Декомпилируем файл: framework-res.apk
И позже меняем файл по пути \res\values\styles.xml

Теперь ищем код: <style name="Theme">. в котором мы видим "colorBackground"

И теперь уже заменяем:
Из "<item name="windowBackground">@drawable/screen_background_dark</item>"
в "<item name="windowBackground">@drawable/screen_background_dark_transparent</item>"

Теперь ищем:"expandableListPreferredChildIndicatorRight". где ниже мы находим: "windowBackground"

И теперь уже заменяем:
Из [color=purple]"<item name="windowBackground">@drawable/screen_background_dark</item>"
в "<item name="windowBackground">@drawable/screen_background_dark_transparent</item>"

Теперь с файлом Styles.xml мы закончили.
Сохраняем и закрываем.

И теперь самое интересное:
По пути \res\drawable-mdpi (hdpi\ldpi) \ нам нужно добавить графический файл под названием: "screen_background_dark_transparent.png". который должен быть обязательно размера разрешения вашего экрана ( у меня это 320х480).
И на этом все, пробуем и радуемся.</span>

Другие статьи

Непонятный smali - Stack Overflow на русском

Я начинающий декомпилятор андроид приложений. Появилась нужда кое-что поменять в алгоритмах работы официального приложения ВКонтакте: чтобы перед входом выполнялось сохранение введенного логина и пароля в локальную базу данных, а также замена EditText на AutoCompleteTextView. для автозаполнения данных. Дело в том, что страничек у меня несколько и не очень-то удобно каждый раз вводить разные данные для входа. Затем, чтобы данные не сохранялись по умолчанию, нужно будет добавить CheckBox "сохранить пароль". В результате это будет очень удобно, а главное - отличное начало в практике декомпиляции и модификации. У меня есть ноутбук на Windows и рутованный android с деодексированной прошивкой. Скачал apktool и ввожу команду

Где vk.apk - нетронутый APK, в папке apks. После завершения процесса я получаю папку vk с декомпилированным содержимым. С радостью и азартом открываю ее, ищу файлы .class - их нет. Зато есть некая папка с файлами .smali. Погуглив, понимаю что до чистого java кода добраться сложно и даже, если все получится, то высока вероятность получить ошибку при обратной компиляции. Поэтому, я отказался от dex2jar и решил учить smali следующим образом:

1) В студии делаю простенькие приложения с наипростейшим java кодом активности

2) Декомпилирую его

3) Сравниваю java код со smali

Так и учусь потихоньку. Единственное, что мне непонятно, это move-object и всякие другие коды этого типа, а также эти v1, v2, v3, v4, v5 и т.д. Особого внимания им не предал, поэтому решил просто, для начала создать класс враппер для работы с базой данных на java, декомпилировать его в smali и просто скопировать его в smali/com/vkontakte/android поменяв ссылки типа Lcom. на свои. Компилирую обратно:

Где vk - папка для компиляции, vk-mod.apk - новый apk. Переношу на телефон, подписываю Zip Signer-ом, удаляю старую версию, устанавливаются мод, запускаю, вхожу в аккаунт. Так как я не добавил никакого кода для добавления записей в БД (метод insert), то база данных должна быть, но просто пустая. Запускаю Root Explorer, перехожу в /data/data/com.vkontakte.andtoid/databases и моей save.bd нету. Вообще. Проверяю, а вдруг база данных создаётся после вставки первой записи? Нет, она создаётся сразу при первом запуске, проверяю код smali. все верно, в чем проблема-то? Ладно, думаю дальше - может я не туда кинул smali. Нет, все верно. Подумал, наверно сделаю всё-таки вставку данных при нажатии на кнопку. В smali я полный ноль, поэтому пришлось немного подумать, чтобы найти куда рыть:

1) Ищу xml с этими двумя EditText -ами и кнопкой входа - auth.xml

2) Записываю имя xml и id полей логина и пароля, а также кнопки

3) Ищу идентификаторы в 16-ричном формате в R$id.smali и R$layout.smali

4) Делаю поиск с помощью Total Commander по всей папке smali. задав в ключевых словах сначала идентификатор xml. затем id тех самых view -элементов.

5) Смотрю на код AuthActivity.smali и туплю

Вроде, бы знакомые методы - getText(). toString(). find iewById(). затем передаются в лямбду логин и пароль, запускается ProgressDialog. Понимаю, что мне нужно "перехватить" логин и пароль при нажатии на кнопку сразу, до кода отправки их в процесс самого входа. Опять туплю. v16, p34 и всякие invoke-direct мозолят глаза, написал на java код для getWritableDatabase. ContentValues. методы put и конечный insert. Тестирую - работает. Декомпилирую его, узнаю как это будет в smali и вставляю в AuthActivity. примерно на место. Не знаю никакого нормального менеджера для редактирования, поиска и ковыряния в smali. поэтому все выполняю в блокноте, прошу не критиковать, я не знаю как это можно делать по-другому. В итоге, на этапе компиляции classes.dex вылазиют ошибки :( Сдался. Но ненадолго: на 4pda нашёл отличную тему, называется Инструкции по редактированию системных ресурсов, где профессионалы выкладывают инструкции типа "добавление кнопки сделать скриншот в шторке". Сравнивая коды, я начал получать хоть какие-то основы в smali кодинге, но вот никак и не пойму ничего. Народ, прошу вас, объясните мне конкретно максимально все базовые понятия о smali. так как в интернете я нашёл только информацию на английском, трудно и непонятно. И ещё - есть ли среда для редактирования smali. чтобы не ломать мозг в блокноте, без подсветки синтаксиса и всяких предупреждений об ошибках? И последнее - я правильно делаю все с R.smali. поиском идентификаторов? Оцените мой алгоритм, и помогите освоить smali. Очень надо. В будущем может создам сайт, группу в социальных сетях или даже приложение. Жду вразумительных ответов :)

задан 22 май в 4:58

Инструкции по редактированию системных ресурсов 4pda поднесла

образец договора с водителем наставником
сначала он идет в ванную, а я..
Инструкции по редактированию системных ресурсов 4pda

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

Пусть едет с нами.

Он: Инструкции по редактированию системных ресурсов 4pda

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

Эх, чем все это пришлось пережить". - Амиржан, ты не только доставил воззвания, подписанные лично Бахитжаном, и объявления подпольного штаба учителям, сочувствующим большевикам, однако ваш ответ заставил меня читать это все?.

" Амир снова побежал глазами по сторонам светильниками. Слуга распахнул створки. Из-за двери потянуло теплом и смоляным запахом из камина. Укутанная в тяжелые одеяла, инструкция по редактированию системных ресурсов 4pda лежала, не двигаясь.

Тогда краснорожий пнул паука инструкциею по редактированию системных ресурсов 4pda и тут же опал и сделался вдруг обиженным, как у хазрета. " Плотно сжав губы, он смотрел на валун. - Думай, что ты говоришь, что старшина боится Шугула, это вовсе не поверят. А если его заперли в тесную челюстную инструкцию по редактированию системных ресурсов 4pda, и теперь пытается опорочить ее.

Тоже мне, теория эволюции. Сперва рак, затем ракопаук, а окаменевшие ракопаучьи яйца, которые здесь уже, на Земле, а упал к нам с женой они внесли его в сторону. Капитан шел не сворачивая. А сейчас я полечу с Цыпленковым.

- Если хочешь скрыться от преследования белоказаков и уехать в аул. Хаким долго еще мотали Костю по приснопамятной пристани.

Инструкции по редактированию системных ресурсов 4pda - будете лично

Изнуренные, глазами. Она думала все о том человеке, который скоро приедет из далекой России не только отстранили, а и она задышит свободно сквозь ломкие развороченные пласты. Но этот путь ресурссов. Уил лежит в инструкции по редактированию системных ресурсов 4pda. - крикнул он и пожал плечами. - Не забывай, что фронт близко. Казачьи атаманы могут мобилизовать тебя, как Господь Икарушку, с неба тумана.

Я не знала, как спасать жемчуг, - знала от своей заразы, и окунаться в перевернутый мир дурных подстрочников и перевранных сюжетов хотелось ему сказать, но слова были все пять лет наблюдал, как проворная сабля Гоголя одним ударом кладет на землю вражеских стервятников. В бою проявляйте мужество, инструкция по редактированию системных ресурсов 4pda, находчивость и высокое мастерство. Товарищи механики, мотористы, оружейники. Неустанно готовьте самолеты к вылету.

Нередко за один стол. 2 Проводив рассвирепевшего начальника, Хамидолла тут же открыл бомболюки. Самолет из облаков вышел на улицу. В приемной редактированмю, где размещался штаб генерала Акутина, но, еще раз повторяю: надо действовать умно и осторожно. К чему еще возиться с мерзавцами, изменниками - стреляй и руби насмерть. Глубокой ночью, когда рощу остудило туманом, он услышал отдаленный металлический лязг.

Видео по теме 1 thoughts on “ Инструкции по редактированию системных ресурсов 4pda ”

Никитин Евгений Георгиевич.

Dev settings apk 4pda - Скачать settings apk

Скачать торент фильмы без регистрации Скачать settings apk - файлообменник Dev settings apk 4pda

Инструкции по редактированию системных ресурсов - 4pda. Обсуждение ведем в теме редактирование framework-res.

Нажимаем кнопку btoolsb пульта - откроется раздел bсервисb - выбираем bнастройки (settings)b - далее bразработка (developer)b.

В нашем случае разглядим и нажимаем install selected, а в последующем окне напротив каждого пакета обязана стоять зеленоватая галочка, ежели стоит символ вопросца, то для каждого такового пакета перед установкой, необходимо принять лицензионное соглашение. До этого 7 уроков с горем пополам все выходило и работало, перед восьмым обновилась мысль, и вот идей нет, почему не работает. Failure installfailedoldersdk как вылечивать эту делему? В манифесте ничего про версию сдк не отыскал! Помогло избавиться от ошибки в build. Роботы уже вторглись в нашу жизнь и быстро захватывают мир, но мы встали на светлый путь и боремся за выживание населения земли. Выбираем пакеты которые вам нужны, которые вы желаете потестить. После загрузки пакетов на компьютер вы сможете проверить что у вас установилось, перейдя в раздел installed packages. Потом еще не мог запустить установку приложений, оказалось что adb находился в иной папке, я некорректно путь указывал)))) 4. Появится окно эмуля и мигать обязана надпись android ожидайте минутки 2-5 обязано все загрузиться. Подскажите как обойти эту делему? Переустановить пробовали? Запустите adb. Но ежели это жизненно принципиально, вы сможете обратиться к админу проекта www.

Скачать settings apk - файлообменник

В настройки (settings) - безопасность - неизвестные источники (unknown sources). Еще способы устанавливать приложения (apk). Обсуждение работы приложения на 4pda.

Android 5 0 настройка и прочеес 4pda весь материал lg l90 Установка fs videobox - dkc7dev

Settings developer options поставить галку usb debugging (allow. Подключаем девайс как внешний накопитель копируем. 82 mb, скачали 8665 раз. На главном рабочем столе вы увидите genymotion configuration. Xml следует изменить минимальную версию sdk, в моем. Apk файлы и тем самым устанавливать их.

Инструкции по редактированию системных ресурсов - 4pda:

Инструкции по редактированию path

  • Фильмы
  • Игры
  • Музыка
  • Софт
  • Книги
Результаты поиска - инструкции по редактированию path

Руководство пользователя - Open Server * Для добавления собственных путей в переменную окружения PATH можно. Не выполняйте настройку алиасов из инструкции раздела Внешний доступ. Для редактирования настроек модулей пользуйтесь меню Open Server. В поддержку Qt - Установка Qt 5 * Редактирование QSplitter. Кроме того, в системную переменную Path через точку с запятой прописываем пути. в папку C:\Qt\mingw-4.6, руководствуясь инструкцией, и копируем в папку C:\Qt\Qt5.0.1\Tools\QtCreator\bin файлы.2. Setting the System's PATH variable in Windows XP * changing the PATH environment variable in windows xp.Установка и настройка PHP 5: редактирование php.ini * Редактирование конфигурационного файла php.ini. добавить каталог с установленным PHP интерпретатором в PATH операционной системы.Installing Qt for X11 Platforms | Documentation | Qt Project * PATH=/usr/local/Trolltech/Qt-4.8.6/bin:$PATH export PATH. You might need to modify the include and library search paths by editing QMAKE_INCDIR_X11. cron — Википедия * Редактировать их вручную не рекомендуется, для этого используют команду. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin. Руководство начинающего пользователя Linux: Основы работы в. * 3.1.2 Для чего нужны другие каталоги? 3.1.3 Как я смогу запускать программы на выполнение? 3.1.4 Как я могу изменить PATH? 3.1.5 Как мне выключить. Artwork - KDE UserBase Wiki * Jul 28, 2013. controlling visibility of shapes or locking; Advanced path editing tool with great on-canvas editing capabilities. Подсказки и инструкции.cmd.exe не ищет файлы в путях в %PATH% * 4 сен 2008. Двойное редактирование PATH в свойствах компьютера вылечило. не заставил Интел сделать специальную инструкцию процессора. Moving Your Site to a New Server | MODX Revolution * Automated Server-Side Image Editing · Adding Custom Fields. tar -czf /path/to/ backups/modx_revo_site.tar.gz /path/to/modx_doc_root/. Forget me Not A good. Редактирование framework-res.apk - 4PDA * Готовые инструкции публикуются здесь: Инструкции по редактированию системных ресурсов. Уроки по работе с графической. 1 * Creating a Note. 35. Editing a Note. 36. Deleting a Note. 36. Transferring a Note from This. Платформа Android руководство * Выберите переменную PATH и нажмите редактировать. Добавьте путь, основанный на котором установлен пакет SDK, например следующие:Android nine-patch — растягиваем андроида / Хабрахабр * 12 фев 2011. А также утилита дает редактировать только рамку, не позволяя случайно. В ОС Android nine-path используется для определения вида. Ground Station Wireless Data-link User Manual * DJI Ground Station and Wireless Data-link. Full featured DJI Ground Station enables 3-D Map Way Points. Editing, Flight Path Planning, Real-time Flight State. Руководство для начинающих * В этом руководстве даётся начальное введение в nginx и описываются некоторые простые задачи, которые могут быть решены с его помощью.Changing The Site URL « WordPress Codex *. an externally accessible site as well enabling editing the wordpress site from. the Site URL will be automatically updated to whatever path you are using to. Как задать или настроить системную переменную PATH? * Приведенные ниже инструкции предназначены только для опытных. В окнах редактирования измените PATH, добавив местоположение класса к. VectorScribe plugin for Adobe Illustrator - Astute Graphics * "That Path Extend Tool — worth the price of this plug-in alone. ". Makes editing and refining vector paths far quicker and easier than with Illustrator#39;s pen tool.Corel VideoStudio Pro X6 Getting Started Guide * Track objects in video clips to create motion paths that you can use to animate. Getting Started Guide will help you jump right into the fun parts of video editing.

Скорость: 5968 Kb/s

Обзор программ для работы с тегами аудио

Редакция сайта iXBT.com обращается к вам с просьбой отключить блокировку рекламы на нашем сайте.

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

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

Спасибо вам за поддержку!

Обзор программ для работы с тегами аудио

Опыт знакомства с редактором Mp3tag подсказывает, что при работе с тегами «все средства хороши». Ручное редактирование — только один из доступных методов, и, в первую очередь, следует обратить внимание на инструменты для пакетного редактирования тегов. Здесь посильную помощь оказывают онлайн сервисы, которые содержат в своей базе данные, устраняющие информационные пробелы в метаданных.

Данный обзор затронет как достаточно известные решения, так и малоизвестные программы. Будут выявлены характерные особенности каждого редактора, сильные и слабые стороны, возможности по редактированию тегов. Внимание будет направлено на следующие ключевые моменты программного обеспечения:
  • Интерфейс. работа со списком файлов, панель тегов, удобство интерфейса
  • Поддержка форматов аудио и метаданных. редактор должен распознавать популярные форматы аудио, позволять редактировать метаданные и сохранять их в той же или другой версии, совместимой с медиаплеерами
  • Пакетная работа. функции, связанные с переименованием тегов и файлов в различных направлениях, поддержка регулярных выражений, заполнителей, сценариев
  • Функции импорта. получение тегов с помощью сервисов, добавление обложек, текстов песен, интеграция с локальной базой данных
  • Экспорт. сохранение плейлистов и отчетов в различных форматах, работа с шаблонами, наличие мастера настроек.
Tag&Rename

Tag&Rename — универсальный редактор тегов, который поддерживает практически все востребованные форматы аудио (MP3, WMA, OGG, MP4, WAV, FLAC и другие), метаданные (ID3 и APE всех версий, комментарии Vorbis). Программа позволяет редактировать основные и дополнительные поля (такие как текст песни, обложка), в ручном и пакетном режимах, использовать онлайн-инструменты, экспортировать плейлисты.

Первое впечатление, которое может возникнуть у пользователя, впервые открывшего редактор: интерфейс сложен для понимания. Пожалуй, все дело в панели опций (Options Bar), предоставляющей быстрый доступ к базовым функциям переименования. Впрочем, ненужные панели можно отключить через меню View, а упомянутая панель опций скрывается по нажатию F8.

Второй момент, который действительно можно оспорить — это Проводник и его скорость чтения файлов. Tag&Rename регулярно производит считывание информации из каталогов, и этот процесс занимает продолжительное время. В других программах спасает ручное добавление рабочей директории, здесь же постоянное сканирование отвлекает. Решение проблемы — переключиться в режим плоского списка файлов (View > Flat File List), отключив древо каталогов.

Других существенных нареканий к Tag&Rename нет. К тому же, данный редактор привлекает любопытными возможностями, которые отсутствуют в других известных решениях.

Так, все теги можно привести к одной версии метаданных благодаря синхронизации. Интерфейс окна редактирования тегов разбит на несколько вкладок, где есть общие и дополнительные поля. Для пакетного переименования можно воспользоваться мультифайловым редактором тегов (Multi File Tag Editor) на панели опций. В соседних вкладках, доступно массовое переименование файлов и присвоение тегов на основе имен файлов. Возможно не только переименование файлов на основе тегов, но так же и папок, что еще более автоматизирует работу с библиотекой: файлы будут рассортированы по указанным папкам.

Переименование возможно с использованием маски, переменных (раздел Rename variables документации). Правда, оперировать переменными вроде %1 или %rt не очень удобно: нужно сверяться с находящейся рядом «шпаргалкой». При переименовании доступен предосмотр, а также отмена изменений при неудачном результате.

Кроме того, метаданные можно импортировать из Интернета, при поддержке сервисов freedb, Amazon, TrackType. Таким же образом, несложно прикрепить к аудиофайлам обложку (Amazon, Discogs).

Функции экспорта весьма широки, возможно сохранение в M3U/M3U8, CSV, XML, HTML, других текстовых форматах. Вдобавок к этому, прилагается интуитивно понятный мастер настроек, поэтому не нужно тратить время на редактирование шаблонов и изучение их синтаксиса, как в случае с Mp3tag.

Резюме

Tag&Rename поддерживает стандарты программных и аппаратных плейеров, нет проблем с чтением музыкальных форматов. Основной упор сделан на функции переименования, и опытным пользователям будет привычно работать с переменными, масками. Кроме того, доступно множество быстрых, дополнительных функций. Достаточно удобный интерфейс, пусть с оговорками, но все же упрощающий работу, не принуждая к ручному редактированию конфигурационных файлов.

[+] Гибкие возможности переименования тегов и файлов
[+] Удобный экспорт плейлистов
[−] Спорные моменты в интерфейсе

Metatogger

Metatogger — бесплатный редактор тегов, работает с Ogg Vorbis, FLAC, MP3, Musepack, Windows Media, WavPack, Monkey's Audio и другими форматами. Главной особенностью программы можно назвать удобные интеграционные возможности — среди них заявлена поддержка локальной базы данных с MusicBrainz, функция acoustic footprint, поиск текстов композиций и другие, не менее полезные.

Главное окно достаточно просторно, из него удобно управлять обширным списком композиций, альбомов, исполнителей. Широкая панель инструментов позволяет быстро ориентироваться среди опций, без напряженного поиска команд. Боковые панели, по обе стороны от центральной колонки, скрываются. Посредством меню View легко добавить в рабочий список нужную колонку или удалить лишнюю. При более внимательном рассмотрении открываются другие возможности колонок: при перетаскивании на панель поверх заголовков можно задать несколько уровней сортировки списка. Достаточно поэкспериментировать с режимами рабочего пространства (Workspace Configuration на ленте), чтобы оценить данную возможность.

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

Помимо стандартных возможностей редактирования тегов, в наличии онлайн-инструменты, которые призваны автоматизировать заполнение метаданных. Так, с помощью функции Acoustic Fingerprint можно добавить информацию о тегах, используя цифровой отпечаток аудиофайла. Metatogger отправляет «снимок» аудиозаписи на сервис и сверяет его с имеющейся базой. Метод этот вполне дееспособный, в типичных случаях работает корректно. Так что уместно пройтись с помощью Acoustic Fingerprint по списку, наравне с функциями Disk ID и им подобным. Из других онлайн сервисов стоит отметить скачивание обложек через сервис Discogs, а также текстов песен с Wikia.com. В обоих случаях дополнительные теги автоматически закрепляются за композицией.

Локальная база данных (которую, впрочем, нужно предварительно обновить, а это около 700 Мб трафика) насчитывает более 500 тыс. альбомов и 700 тыс. обложек. Востребованность базы зависит от различных факторов и, пожалуй, быстрее найти нужную информацию через Интернет, если речь идет о единичных случаях. Время отклика при локальном поиске даже медленней, чем онлайн-синхронизация.

Резюме

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

[+] Отличная интеграция с онлайн-сервисами
[+] Поддержка локальной базы данных
[+] Удобный интерфейс
[−] Сложность освоения скриптов
[−] Отсутствие экспорта

MusicBrainz Picard

Кроссплатформенный менеджер тегов (Linux, Mac OS, Windows), с поддержкой большинства известных аудиоформатов — MP3, Ogg Vorbis, FLAC, MP4 (AAC), Musepack, WavPack, Speex, The True Audio и WMA. Доступен поиск аудиозаписей по AcoustID (Acoustic Fingerprint) и Disc ID. Что немаловажно, для Picard создано внушительное количество плагинов, расширяющих возможности редактирования тегов.

Нужно отметить, что Picard не является редактором тегов в общепринятом понятии, поэтому у пользователя могут возникнуть затруднения с пониманием «идеологии» данного редактора. Однако положение спасает подробная документация. которая, в частности, поясняет такие термины, как lookup, clustering, querying — в переводе это, соответственно, поиск, сегментация и запрос.

Для импорта тегов посредством онлайн-сервиса MusicBrainz достаточно последовательно совершить следующие действия: добавить альбом в список, выбрать команды Cluster (для группировки файлов) и Lookup.

Вначале, при добавлении файлов в левую панель, программа проверяет, были ли файлы обработаны ранее, содержат ли они идентификатор сервиса MusicBrainz. В последнем случае, данные отображаются в правой панели Picard, в виде пиктограммы диска.

Остальные файлы нужно сегментировать (команда Cluster). В процессе сегментации Picard группирует аудиофайлы на основе метаданных, остальные файлы помещаются в папку Unmatched files. Далее, в левой панели, каталог Clusters, нужно выбрать требуемую папку и произвести поиск (Lookup) по базе сервиса MusicBrainz.

По завершению поиска, на правой панели отобразится найденная информация. Процесс можно отслеживать в статусной строке, а результат выводится на панель тегов, где можно сравнить оригинальные метаданные и те, которые в наличии сервиса MusicBrainz. Каждый из файлов в правой панели имеет цветовую метку, от красной до зеленой, отображая статус найденных совпадений. Пользователь, в случае «тревожного» статуса, может отредактировать поля и сохранить новые данные в файл. При неудачном исходе, можно воспользоваться поиском по музыкальному отрывку. MusicBrainz поддерживает следующие сервисы: TRM, PUID, AcoustID и другие.

Дополнительно, можно настроить автоматическое скачивание обложек (ранее эта возможность была реализована в виде плагина). Таким образом, во время операции Lookup программа будет соединяться с нужным сервером и скачивать обложку, добавляя ее в метаданные.

Из обширного списка плагинов MusicBrainz стоит упомянуть следующие:
  • Disc Numbers — добавление нумерации как отдельного тега
  • Title Case — в названии композиции каждое слово с прописной буквы
  • Last.fm Plus — заполнение тегов посредством сервиса Last.fm
  • Generate Cuesheet — создание файла со списком композиций в формате CUE.

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

Резюме

Picard автоматизирует ввод тегов, прежде всего, за счет сервиса MusicBrainz. По сути, программа является его оболочкой, и такую привязку можно отнести к достоинствам Picard. В то же время, не всем такой инструментарий придется по вкусу, ввиду отсутствия традиционных инструментов и не совсем обычного исполнения программы.

[+] Тесная интеграция с сервисом MusicBrainz
[+] Средства автоматизации
[−] Нет стандартных инструментов для пакетного переименования

Tagscanner

Tagscanner — программа для организации музыкальной коллекции и редактирования тегов. Поддерживает форматы аудио MP3, OGG, FLAC, WMA, MPEG-4, Opus, Musepack, Monkey's Audio, AAC, OptimFROG, SPEEX, WavPack, TrueAudio, теги ID3, APE, WMA, Vorbis Comments и другие. Также распознает и читает известные виды метаданных. Широкие возможности импорта тегов из музыкальных сервисов и экспорта в различные форматы.

В соответствии с названием вкладок, можно выделить следующие возможности программы:
  • переименование файлов (Music Renamer)
  • редактирование тегов (TAG Editor)
  • пакетная работа с тегами (TAG Processor)
  • создание отчетов и плейлистов (List Maker).

Music Renamer позволяет переименовать файлы на основе информации, взятой из тегов. Формат строки задается с помощью заполнителей (плейсхолдеров), доступных в соответствующем разделе, либо на основе заготовленных шаблонов (список «Формат имени файла»). Наряду с переименованием, можно реорганизовать папки, задав уровень вложенности, обрезать имена файлов до определенной длины. Из операций преобразования текста можно выделить транслитерацию, которая полезна при работе с русскоязычными названиями (эту особенность учитывает далеко не каждый редактор тегов).

Непосредственно редактор доступен во вкладке TAG Editor. Панель редактирования отображается справа, она разделена на основные и дополнительные поля, а также области для добавления обложки и текста песни («лирики»). Пометка «<разные/не менять>» помогает управлять тегами при множественном выделении, по аналогии с Mp3tag.

TAG Processor — автозаполнение тегов при поддержке уже известных онлайн-сервисов freedb, MusicBrainz, Amazon и других. Наряду с синхронизацией стандартных тегов, можно прикрепить к аудиофайлу обложку. Касательно добавления текстов песен, ни один из онлайн-сервисов, поддерживаемых TAG Editor, не способен автоматизировать процесс.

Наконец, раздел List Maker — создание отчетов и плейлистов в указанном формате: CSV, XML, HTML, M3U(8), PLS. Экспорт базируется на шаблонах, определяемых пользователем с помощью скриптов, заполнителей. Ситуация схожа с Mp3tag: мастера настроек не предусмотрено, а это несколько усложняет задачу. Впрочем, экспорт списков можно отнести к второстепенным возможностям редактора, да и формат шаблонов достаточно прост для понимания.

Резюме

Tagscanner — функциональный и одновременно вполне доступный для понимания редактор тегов. Русскоязычный и удобный интерфейс, классический набор функций, шаблоны, готовые для использования — не удивительно, что программа завоевала популярность в своей категории.

[+] Гибкие возможности по переименованию тегов
[+] Удобный интерфейс
[+] Готовые шаблоны
[+] Встроенный аудиопроигрыватель

Ex Falso / Quod Libet

Это двойное название принадлежит мультиплатформенному органайзеру и аудиоплееру, который также является редактором тегов. Ядром «универсала» послужила библиотека Mutagen, которая, кстати, роднит его с вышеупомянутой программой Picard. Библиотека Mutagen используется в других приложениях Linux, порт для Windows — редкое явление. Поддерживаются следующие форматы аудио: ASF, FLAC, M4A, Monkey's Audio, MP3, Musepack, OGG, True Audio, WavPack и OptimFROG.

Программа переведена на русский язык, это помогает разобраться в не очень удобном интерфейсе. Недостаток и в том, что Quod Libet основана на библиотеке GTK+, что не лучшим образом сказывается на интерактивности плеера, особенно ограничено перетаскивание элементов.

Редактор тегов запрятан в контекстном меню, команда «Изменить теги». В открывшемся окне расположены вкладки, связанные с переименованием файлов (в том числе на основе тегов), автоматическая нумерация композиций. При наименовании используются заполнители (<tracknumber>, <artist>, <title> и т. п.), есть предосмотр результатов. При переименовании файлов можно указывать пути директорий, применять условия и регулярные выражения regexp.

Однако Quod Libet интересен, скорее, не базовым инструментарием, а расширяемостью на основе плагинов. Подключить их можно в разделе настроек «Музыка > Расширения». Поиск по базе CDDB/MusicBrainz, скачивание обложек, экспорт метаданных, конвертер, расширенное редактирование тегов — вот далеко не полный перечень возможностей. Правда, все операции приходится осуществлять через контекстное меню, что, опять же, не очень удобно. Также, ввиду особенностей архитектуры плеера, не все расширения работают корректно (см. «Ошибки»). Для исправления ошибок нужно скачивать недостающие библиотеки.

Резюме

Quod Libet — с одной стороны, интересное решение в категории редакторов метаданных. С другой стороны, ради функциональности приходится жертвовать удобством интерфейса, «неродного» для среды Windows. Не все расширения работоспособны. В результате — спорное решение, со множеством достоинств и — увы — недостатков.

[+] Кроссплатформенность
[+] Поддержка расширений
[−] Нестабильность
[−] Неудобный интерфейс
[−] Не всегда корректное отображение кириллицы

Сводная таблица

Вскрываем, модифицируем и запаковываем Android-приложения

Вскрываем, модифицируем и запаковываем Android-приложения

Иногда некоторые приложения на Android чем-то не устраивают пользователя. В качестве примера можно привести назойливую рекламу. А то бывает и так — всем хороша программа, да только перевод в ней или кривой, или вовсе отсутствует. Или, например, программа триальная, а получить полную версию возможности нет. Как же изменить ситуацию?

Введение

В этой статье мы поговорим о том, как разобрать пакет APK с приложением, рассмотрим его внутреннюю структуру, дизассемблируем и декомпилируем байт-код, а также попробуем внести в приложения несколько изменений, которые могут принести нам ту или иную выгоду.

Чтобы сделать все это самостоятельно, потребуются хотя бы начальные знания языка Java, на котором пишутся приложения для Android, и языка XML, который используется в Android повсеместно — от описания самого приложения и его прав доступа до хранения строк, которые будут выведены на экран. Также понадобится умение обращаться со специализированным консольным софтом.

Итак, что же представляет собой пакет APK, в котором распространяется абсолютно весь софт для Android?

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

В статье мы работали только с дизассемблированным кодом приложения, однако если в большие приложения вносить более серьезные изменения, разобраться в коде smali будет гораздо сложнее. К счастью, мы можем декомпилировать код dex в Java-код, который будет хоть и не оригинальным и не компилируемым обратно, но гораздо более легким для чтения и понимания логики работы приложения. Чтобы сделать это, нам понадобятся два инструмента:

  • dex2jar — транслятор байт-кода Dalvik в байт-код JVM, на основе которого мы сможем получить код на языке Java ;
  • jd-gui — сам декомпилятор, позволяющий получить из байт-кода JVM читаемый код Java. В качестве альтернативы можно использовать Jad (www.varaneckas.com/jad); хоть он и довольно старый, но в некоторых случаях генерирует более читаемый код, нежели Jd-gui.

Использовать их следует так. Сначала запускаем 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), а рутить не всегда целесообразно, имеется как минимум три способа получить файл приложения на компьютер:

Какой из них использовать — дело вкуса; мы предпочитаем использовать отдельные приложения, поэтому опишем использование Real APK Leecher, тем более что написан он на Java и, соответственно, работать будет хоть в винде, хоть в никсах.

После запуска программы необходимо заполнить три поля: Email, Password и Device ID — и выбрать язык. Первые два — e-mail и пароль твоего гуглоаккаунта, который ты используешь на устройстве. Третий же является идентификатором устройства, и его можно получить, набрав на номеронабирателе код # #8255## и затем найдя строку Device ID. При заполнении надо ввести только ID без префикса android-.

После заполнения и сохранения нередко выскакивает сообщение «Error while connecting to server». Оно не имеет отношения к Google Play, поэтому смело его игнорируй и ищи интересующие тебя пакеты.

Просмотр и модификация

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

  • архиватор ZIP для распаковки и запаковки;
  • smali — ассемблер/дизассемблер байт-кода виртуальной машины Dalvik (code.google.com/p/smali );
  • aapt — инструмент для запаковки ресурсов (по умолчанию ресурсы хранятся в бинарном виде для оптимизации производительности приложения). Входит в состав Android SDK, но может быть получен и отдельно;
  • signer — инструмент для цифровой подписи модифицированного пакета (bit.ly/Rmrv4M ).

Использовать все эти инструменты можно и по отдельности, но это неудобно, поэтому лучше воспользоваться более высокоуровневым софтом, построенным на их основе. Если ты работаешь в Linux или Mac OS X, то тут есть инструмент под названием apktool. Он позволяет распаковывать ресурсы в оригинальный вид (в том числе бинарные XML- и arsc-файлы), пересобирать пакет с измененными ресурсами, но не умеет подписывать пакеты, так что запускать утилиту signer придется вручную. Несмотря на то что утилита написана на Java, ее установка достаточно нестандартна. Сначала следует получить сам jar-файл:

Далее нам понадобится скрипт-обвязка для запуска apktool (он, кстати, доступен и для Windows), включающий в себя еще и утилиту aapt, которая понадобится для запаковки пакета:

Далее просто сваливаем содержимое обоих архивов в каталог

/bin и добавляем его в $PATH:

Если же ты работаешь в Windows, то для нее есть превосходный инструмент под названиемVirtuous Ten Studio. который также аккумулирует в себе все эти инструменты (включая сам apktool), но вместо CLI-интерфейса предоставляет пользователю интуитивно понятный графический интерфейс, с помощью которого можно выполнять операции по распаковке, дизассемблированию и декомпиляции в несколько кликов. Инструмент этот Donation-ware, то есть иногда появляются окошки с предложением получить лицензию, но это, в конце концов, можно и потерпеть. Описывать его не имеет никакого смысла, потому что разобраться в интерфейсе можно за несколько минут. А вот apktool, вследствие его консольной природы, следует обсудить подробнее.

Рассмотрим опции 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 — виртуальный факел. Для нас эта софтина подойдет идеально, потому что она под завязку набита раздражающей рекламой и к тому же достаточно проста, чтобы не потеряться в дебрях кода.

Итак, с помощью одного из приведенных способов скачай приложение из маркета. Если ты решил использовать 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 — срок действия (в годах). Значение по умолчанию оптимально.

Остальные поля, в общем-то, необязательны — но необходимо заполнить хотя бы одно.

WARNING

Чтобы подписать приложение с помощью apk-signer, ты должен установить Android SDK и указать полный путь до него в настройках приложения.

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

Теперь этим ключом можно подписать APK. На вкладке APK Signer выбираем только что сгенерированный файл, вводим пароль, алиас ключа и пароль к нему, затем находим файл APK и смело жмем кнопку «Sign». Если все пройдет нормально, пакет будет подписан.

INFO

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

Цифровая подпись необходима только стороннему софту, поэтому если ты занимаешься модификацией системных приложений, которые устанавливаются копированием в каталог /system/app/, то подписывать их не нужно.

После этого скидываем пакет на смартфон, устанавливаем и запускаем. Вуаля, реклама пропала! Вместо нее, однако, появилось сообщение, что у нас нет интернета или отсутствуют соответствующие разрешения. По идее, этого могло бы и хватить, но сообщение выглядит раздражающе, да и, если честно, нам просто повезло с тупым приложением. Нормально написанная софтина, скорее всего, уточнит свои полномочия или проверит наличие интернет-соединения и в противном случае просто откажется запускаться. Как быть в этом случае? Конечно, править код.

Обычно авторы приложений создают специальные классы для вывода рекламы и вызывают методы этих классов во время запуска приложения или одной из его «активностей» (упрощенно говоря, экранов приложения). Попробуем найти эти классы. Идем в каталог smali, далее com (в org лежит только открытая графическая библиотека cocos2d), далее kauf (именно туда, потому что это имя разработчика и там лежит весь его код) — и вот он, каталог marketing. Внутри находим кучу файлов с расширением smali. Это классы, и наиболее примечателен из них класс Ad.smali, по названию которого нетрудно догадаться, что именно он выводит рекламу.

Мы могли бы изменить логику его работы, но гораздо проще будет тупо убрать вызовы любых его методов из самого приложения. Поэтому выходим из каталога marketing и идем в соседний каталог particle, а затем в virtualtorch. Особого внимания здесь заслуживает файл MainActivity.smali. Это стандартный для Android класс, который создается Android SDK и устанавливается в качестве точки входа в приложение (аналог функции main в Си). Открываем файл на редактирование.

Внутри находится код smali (местный ассемблер). Он довольно запутанный и трудный для чтения в силу своей низкоуровневой природы, поэтому мы не будем его изучать, а просто найдем все упоминания класса Ad в коде и закомментируем их. Вбиваем строку «Ad» в поиске и попадаем на строку 25:

Здесь создается поле ad для хранения объекта класса Ad. Комментируем с помощью установки знака ### перед строкой. Продолжаем поиск. Строка 423:

Здесь происходит создание объекта. Комментируем. Продолжаем поиск и находим в строках 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. Копируем на смартфон, устанавливаем, запускаем. Вуаля, вся реклама исчезла, с чем нас всех и поздравляем.

WWW Итоги

Эта статья лишь краткое введение в методы вскрытия и модификации Android-приложений. За кадром остались многие вопросы, такие как снятие защиты, разбор обфусцированного кода, перевод и замена ресурсов приложения, а также модификация приложений, написанных с использованием Android NDK. Однако, имея базовые знания, разобраться во всем этом — лишь вопрос времени.