Перейти к содержимому

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

  • автор:

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

  • расширение APK Downloader для Chrome;
  • приложение Real APK Leecher;
  • различные файлообменники и варезники.

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

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

Настройка Real APK Leecher

Настройка Real APK Leecher

Другие статьи в выпуске:

Хакер #170. Малварь для OS X

После заполнения и сохранения нередко выскакивает сообщение «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, вследствие его консольной природы, следует обсудить подробнее.

Импорт APK в Virtuous Ten Studio

Импорт 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

Поиск кода рекламы в 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

Создание ключа в 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:

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

Здесь происходит создание объекта. Комментируем. Продолжаем поиск и находим в строках 433, 435, 466, 468, 738, 740, 800 и 802 обращения к методам класса Ad. Комментируем. Вроде все. Сохраняем. Теперь пакет необходимо собрать обратно и проверить его работоспособность и наличие рекламы. Для чистоты эксперимента возвращаем удаленную из AndroidManifest.xml строку, собираем пакет, подписываем и устанавливаем.

virttorch_with_ad Наш подопытный кролик. Видна реклама Он же, но уже без рекламы Он же, но уже без рекламы

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

Модификация apk-файла

Вероятно, на пути создания своих форков приложений для Android придётся идти по пути не написания их «с нуля», а модификации уже готовых, зачастую системных приложений.

Постараюсь вкратце описать процесс такой модификации.

Состоит она из четырех этапов:

    apk правок в код в apk apk

Что из себя представляет apk-файл

По своей сути apk-файл — это zip-архив, внутри которого хранятся исполняемые и служебные файлы.

Если Вы поменяете расширение на zip, то сможете увидеть его содержимое.

Но работать с этими файлами нельзя, так как они представлены в бинарном виде, даже XML.

Декомпиляция apk

Декомпиляция apk может быть выполнена с помощью утилиты apktool. bat файл для её запуска Вы можете скачать внизу статьи. Самую последнюю версию утилиты можно взять на сайте авторов.

В Ubuntu apktool устанавливается командами:

Утилита apktool написана на языке Java и требует установки на компьютер Java 8 (JRE 1.8).

После установки JRE необходимо переименовать файл утилиты в apktool.jar (убрать из имени версию, только в случае, если Вы скачивали файл с официального сайта) и перенести jar и bat файлы в папку, которая описана в системной переменной path.

По сути, после этого мы можем уже начать декомпилировать apk.

Способов получения файла APK много.

Кто-то использует для этого Android Device Bridge (ADB).

Кто-то скачивает файл на компьютер непосредственно из Google Play.

Но лично я использую другой способ. Многие файловые менеджеры позволяют создавать резервные копии приложений. Я, например, использую «Cx Проводник», создаю резервную копию, а потом с его же помощью перебрасываю файл на компьютер через сеть, либо Яндекс диск.

Итак, у нас есть apk-файл, который мы планируем исследовать и поменять. Также у нас есть инструмент, необходимый для его декомпиляции.

После этого у нас в том же каталоге, где находится apk, появится папка с тем же именем, внутри которого находится декомпилированная структура файла apk.

Данная структура совпадает с тем, что видели с помощью архиватора, если открывали apk как архив.

Но в ней появилась директория smali, где лежит дезассемблированный код dex-файла, плюс в корне появился файл apktool.yml. Этот файл является служебным файлом apktool и понадобится утилите при обратной сборке проекта.

С этим всем нам и предстоит работать.

В данном способе есть один минус: исходный код получается в small (аналог ассемблера).

Чтобы получить более читаемый код, используют связку dex2jar и jd-gui (В качестве его альтернативы можно использовать Jad, а можно даже использовать облачную декомпиляцию).

Первый позволяет получить из apk файл jar, а второй — собственно дезассемблировать jar.

Также могут пригодиться:

    — ассемблер/дизассемблер smali / dex. — программа для подписывания apk (входит в состав Android SDK и требует его установки) — не помешает, если мы планируем разрабатывать код для Android. Можно сказать, что это целый «комбайн». — еще вариант для подписывания apk — программа, с функционалом, аналогичным apktool, но имеющая графический интерфейс и работающая под Windows.

Скачивание файла с помощью ADB

В Windows потребуется предварительно установить USB драйвера для вашего Андроид устройства (если Вы не устанавливали его ранее). В Linux этого скорее всего не потребуется.

Установите Android Device Bridge (ADB). Скачать установочный пакет для Windows можно здесь.

Для установки в Ubuntu используется команда:

Подключите Android устройство к компьютеру через USB кабелю.

Вывести список всех установленных на устройстве пакетов можно командой:

Естественно, если Вы используете Ubuntu, то можете использовать grep для фильтрации вывода и поиска искомого пакета (в Windows команда не сработает).

Теперь мы можем узнать полный путь к пакету при помощи команды

Теперь мы можем скачать файл с устройства на компьютер:

Второй параметр является не обязательным.

Скачивание файла из Google Play

На сайте Google Play необходимо найти требуемое приложение и скопировать его адрес (в строке адреса браузера).

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

Модификация кода

После декомпиляции мы получили папку со следующей структурой:

информация о программе:

  • версия
  • автор программы
  • цифровая подпись
  • другая информацию

Также могут присутствовать папки

  • assets — аналог папки ресурсов. Основным отличием ресурсов в этом папке является то, что для получения списка asset’ов можно использовать метод AssetManager.list() в коде приложения, получая их динамически;
  • lib — оригинальные статические библиотеки Linux, написанные с помощью NDK (Native Development Kit) на C/C++.

Основными объектами модификации являются:

  • Ресурсы — их можно напрямую заменять, не изменяя имён. Можно добавлять, удалять, переименовывать, но это потребует изменить файл описания ресурсов.
  • Исходный код программы — в зависимости от метода декомпиляции это может быть код на smali, или java.
  • Файл AndroidManifest.XML — если нужно изменить набор прав для приложения, ему название и т.д.

Компиляция apk

Сборка модифицированного нами кода выполняется командой

После этого внутри директории проекта появятся еще две директории:

  • build — в ней лежат скомпилированные файлы
  • dist — тут располагается сам готовый файл apk. Но установить его на устройство пока не получится, так как требуется этот файл подписать. Если Вы посмотрите, в этом apk просто отсутствует каталог META-INF, в котором хранится цифровая подпись.

Подписание apk-файла

Мне известно два способа подписания apk-файла:

  • С помощью uber-apk-signer
  • С помощью apksigner из состава Android SDK

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

Поэтому «поверх» пересобранное приложение установить нельзя. Нужно предварительно удалить оригинальное и установить своё.

Либо изменить название и установить свой форк рядом с оригиналом.

Подписывание apk с помощью uber-apk-signer

Подписывание выполняется командой:

В результате в директории с исходным apk появится файл с именем <имя проекта>-aligned-debugSigned.apk

Это и есть наш подписанный файл.

Подписывание apk с помощью apksigner

В отличии от uber-apk-signer в этом приложении можно указать свои параметры для генерации электронной подписи.

На первой вкладке программы (Key Generator) мы создаем ключи, на второй вкладке (APK Signer) производим подписывание apk.

Для создания цифровой подписи необходимо заполнить на первой вкладке следующие поля:

  • Target File — файл хранилища ключей;
  • Password и Confirm — пароль хранилища;
  • Alias — имя ключа в хранилище;
  • Alias password и Confirm — пароль секретного ключа;
  • Validity — срок жизни ключа (в годах).

Также подпись можно проводить и из командной строки.

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

Декомпиляция и отладка Android-приложений

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

Автор: Eric Gruber

В статье будет рассказано о том, как подключить отладчик к Android-приложению и пошагово пройти через вызываемые методы, используя информацию, полученную после декомпиляции приложения. Хорошая новость в том, что для отладки не требуются привилегии суперпользователя. Описанные техники могут быть очень кстати во время пентестов мобильных приложений, поскольку мы можем «проникнуть» в код во время работы программы, получить и записать информацию, к которой обычно у нас нет доступа. Например, можно перехватить трафик перед шифрованием и на лету получить ключи, пароли и любую другую ценную информацию. Статья будет полезна пентестерам и разработчикам мобильных приложений, желающих получить более глубокие знания о возможных атаках на платформе Android.

Требования к тестовой среде:

  • Операционная система: Windows / Mac OS X / Linux
  • Java (рекомендуется версия 1.7)
  • IDE (Eclipse, IntelliJ IDEA, Android Studio)
  • Android SDK (https://developer.android.com/sdk/index.html?hl=i)
  • APKTool (https://code.google.com/p/android-apktool/)/APK Studio (http://apkstudio.codeplex.com)
  • Устройство / эмулятор на базе Android
  • Dex2Jar (https://code.google.com/p/dex2jar/)
  • JD-GUI (http://jd.benow.ca/)

В статье будет использоваться следующая конфигурация: Windows 8, Android Studio и IntelliJ IDEA. Устройство: Nexus 4 с Android версии 4.4.4. Рекомендую все утилиты добавить в переменную окружения PATH, чтобы облегчить и ускорить доступ к этим инструментам.

Android application package (APK), используемый в статье, можно скачать отсюда: com.netspi.egruber.test.apk.

Настройка устройства

Инструкция ниже поможет вам подготовить устройство для экспериментов.

Активация раздела Developer Options

Для начала на Android-устройстве должна быть разрешена отладка через USB (опция USB debugging), что позволит «общаться» с девайсом при помощи инструментов из набора Android SDK. Однако перед этим необходимо активировать раздел Developer options. На устройстве зайдите в раздел Settings > About Phone и кликните несколько раз на пункт Build Number, после чего должно появиться сообщение о том, что раздел Developer options активирован.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab23d04aadb.png

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab23efed362.png

Рисунок 1: Для того чтобы активировать раздел Developer options, необходимо несколько раз кликнуть на Build number

Разрешение отладки через USB

Чтобы разрешить отладку через USB-порт, зайдите в раздел Settings > Developer options и отметьте флажок напротив USB debugging.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab245453b30.png

Рисунок 2: Включение опции USB debugging

Подключение устройства и запуск ADB

После подключение устройства к компьютеру через USB-порт, должно появиться сообщение «USB debugging connected on the device». Также следует проверить, можно ли подключиться к устройству при помощи приложения Android Debug Bridge (ADB), входящего в состав Android SDK (пакет Android SDK Platform-tools). В командной строке введите следующую команду:

Устройство должно отобразиться в списке.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20b6a88b8.jpeg

Рисунок 3: Список подключенных устройств

Если устройство не отобразилось в списке, то наиболее вероятная причина в некорректно установленных драйверах (в Windows). В зависимости от устройства драйвер можно найти либо в Android SDK, либо на сайте производителя.

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

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

Первый способ – запустить Android Device Monitor, входящий в состав Android SDK (в папке tools). В Windows файл называется monitor.bat. При открытии Android Device Monitor устройство отобразится в разделе Devices.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20cb0ee69.jpeg

Рисунок 4: Приложение Android Device Monitor

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

Второй способ проверить приложение на возможность отладки – исследовать файл AndroidManifest.xml из пакета приложения (APK, Android application package). APK представляет собой zip-архив, содержащий всю информацию, необходимую для запуска приложения на Android-устройстве.

Всякий раз, когда приложения загружается из Google Play Store, также загружается и пакет приложения. Все загруженные APK-файлы обычно хранятся на устройстве в папке /data/app. Если у вас нет прав суперпользователя, вы не сможете получить список файлов из директории /data/app. Хотя, если вы знаете имя APK-файла, можете скопировать его при помощи утилиты adb. Чтобы узнать имя APK-файла, введите следующую команду:

Появится командная строка устройства. Затем введите следующую команду:

pm list packages -f

Отобразится список всех пакетов на устройстве.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20e0c5cc5.jpeg

Рисунок 5: Перечень пакетов на устройстве

Глядя на список, находим тестовое приложение.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20e6154fe.jpeg

Рисунок 6: Пакет созданного тестового приложения (выделено белым)

Теперь необходимо скопировать файл пакета. Открываем шелл и вводим следующую команду:

adb pull /data/app/[.apk file] [location]

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20eb8d72e.jpeg

Рисунок 7: Копируем APK-файл с устройства в систему

Теперь нужно открыть файл пакета и исследовать содержимое AndroidManifest.xml. К сожалению, мы не можем просто так распаковать архив, поскольку APK-файл закодирован в бинарном формате. Для раскодировки чаще всего используется утилита apktool, хотя я использую APK Studio, поскольку у этого приложения дружелюбный графический интерфейс. Далее в статье будет рассказываться об APK Studio.

В APK Studio кликните на маленькую зеленую иконку, задайте имя проекту и укажите путь к APK файлу. Затем укажите пусть для сохранения проекта.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20f0921cb.jpeg

Рисунок 8: Создание нового проекта в APK Studio

После открытия APK выберите файл AndroidManifest.xml и посмотрите параметры тега application. Если флаг android:debuggable отсутствует (или присутствует, но установлено значение false), значит, приложение отлаживать нельзя.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20f7d225c.jpeg

Рисунок 9: Содержимое файла AndroidManifest.xml

Модификация файла AndroidManifest.xml

При помощи утилиты apktool или APK Studio мы можем модифицировать файлы и упаковывать содержимое обратно в пакет. Сейчас мы изменим файл AndroidManifest.xml так, чтобы приложение можно было отлаживать. Добавляем внутрь тега application строчку android:debuggable="true".

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab20fc42d15.jpeg

Рисунок 10: Изменяем содержимое тега application

После добавления флага кликаем на иконку «молоток» и заново собираем пакет. Пересобранный пакет будет находиться в директории build/apk.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21012ace5.jpeg

Рисунок 11: Повторная сборка пакета завершилась успешно

После пересборки пакет подписывается и его можно заново установить на устройстве (все Android-приложения должны быть подписаны). Большинство приложений не проверяет сертификат, при помощи которого происходит подпись. В противном случае необходимо изменить код, выполняющий эту проверку.

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

adb pm uninstall[package name]

Затем устанавливаем новый пакет:

adb install [.apk file]

Также можно удалить и установить пакет одной командой:

adb install -r [.apk file]

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab210595029.jpeg

Рисунок 12: Установка пересобранного пакета

Проверьте, чтобы переустановленное приложение корректно запускалось на устройстве. Если все работает, переходим обратно в Android Device Monitor, где должно появиться тестовое приложение.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab210a2d024.jpeg

Рисунок 13: Теперь пересобранное приложение можно отлаживать

Настройка среды разработки (IDE)

Теперь к пересобранному приложению можно подцепить отладчик, но вначале нужно создать проект в среде разработки (в статье используется IntelliJ IDEA). Создаем новый проект. В поле Application name указываем произвольное имя. В поле Package name указываем имя, в точности совпадающее с иерархией папок пересобранного пакета.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab210f9153d.jpeg

Рисунок 14: Создание нового проекта в IntelliJ IDEA

Обычно имя APK-файла совпадает со структурой папок, хотя, если вы не уверены, в APK Studio проверьте иерархию директорий до папки, где находятся файлы приложений. В моем случае имя и структура папок полностью совпадают (com.netspi.egruber.test).

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21133b456.jpeg

Рисунок 15: Иерархия директорий тестового приложения

Снимите флажок «Create Hello World Activity» и завершите создание проекта (все остальные параметры остаются по умолчанию). Новый проект должен выглядеть примерно так:

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21173f8b3.jpeg

Рисунок 16: Иерархия папок и файлов нового проекта

После создания проекта нужно добавить исходный код из APK-файла для того, чтобы отладчик «знал» имена символов, методов, переменных и т. д. Хорошая новость в том, что Android-приложения можно декомпилировать практически без потери качества (исходный код будет совпадать с оригиналом). После декомпиляции исходный текст импортируется в среду разработки (IDE).

Получение исходных текстов из пакета приложения

Для начала необходимо преобразовать APK в jar-файл. Затем мы при помощи java-декомпилятора получим исходный текст приложения. Преобразование в jar будем делать при помощи утилиты dex2jar. У dex2jar есть файл d2j-dex2jar.bat, используемый для конвертирования APK в jar. Синтаксис команды довольно прост:

d2j-dex2jar.bat [.apk file]

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab211c465e4.jpeg

Рисунок 17: Преобразование APK в jar

Затем открываем или перетаскиваем полученный файл в JD-GUI (это java-декомпилятор).

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab211fdc6b0.jpeg

Рисунок 18: Структура jar-файла

Jar-файл должен отобразиться в виде иерархической структуры, внутри которой находятся java-файлы с читабельным исходным кодом. Заходим в File > Save All Sources, чтобы упаковать все исходные тексты в zip-архив.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab2122f1cbe.jpeg

Рисунок 19: Сохранение исходных текстов декомпилированного файла

После сохранения исходных текстов распаковываем архив в отдельную директорию.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21261c3a2.jpeg

Рисунок 20: Распакованный архив

Теперь нужно импортировать обе директории в созданный ранее проект в IDE. В IntelliJ заходим в папку src и копируем туда содержимое распакованного архива (две директории).

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab212a14ab6.jpeg

Рисунок 21: Обе папки скопированы в директорию src

Возвращаясь в Intellij, видим обновленный проект.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21326c1b7.jpeg

Рисунок 22: В проекте появились исходные тексты

Если мы кликнем на какой-нибудь элемент из списка, то увидим исходный текст. Как видно на скриншоте ниже (исходный текст класса LoginActivity), исходный код обфусцирован при помощи ProGuard.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab214b5e308.jpeg

Рисунок 23: Обфусцированный исходный текст класса LoginActivity

Подключение отладчика

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

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21a0f27d5.jpeg

Рисунок 24: Поставлена точка останова на обфусцированный метод

Как только появилась точка останова, подключаем отладчик к процессу на устройстве, кликнув на иконку с экраном в правом верхнем углу (на вашей IDE иконка может отличаться).

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab215912595.jpeg

Рисунок 25: Подключаем отладчик к процессу

Далее вам будет предложено выбрать процесс, к которому нужно подключиться. Будут отображены только процессы с флагом android:debuggable="true".

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab215c736db.jpeg

Рисунок 26: Перечень процессов для подключения отладчика

После выбора процесса отладчик подсоединится к устройству.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21655a386.jpeg

Рисунок 27: Отладчик подключен к процессу, запущенному на устройстве

В текстовое поле я буду вводить число 42 (если помните, на соответствующем методе стоит точка останова).

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab24710eb8e-614x1024.png

Рисунок 28: В текстовое поле вводим число 42

После нажатия на кнопку «Enter Code» выполнение приложения прервется на точке останова, поскольку отладчик «осведомлен», какой метод вызывается на устройстве. Скомпилированное Android-приложение содержит отладочную информацию (например, имена переменных), доступную любому отладчику, совместимому с Java Debug Wire Protocol (JDWP). Если в приложении разрешена отладка, отладчик, совместимый с JDWP (в эту категорию попадает большинство отладчиков идущих в составе сред разработки для Java), сможет подсоединиться к виртуальной машине Android-приложения, а затем считывать и выполнять отладочные команды.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab216beec16.jpeg

Рисунок 29: Сработала точка останова

На скриншоте ниже видно число, которое ранее мы ввели в текстовом поле.

https://blog.netspi.com/wp-content/uploads/2015/01/img_54ab21711a588.jpeg

Рисунок 30: Перечень переменных текущего экземпляра класса

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

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

При размещении контента, по возможности, прикрепляйте инструкцию

Правила темы:
1. Разрешается выкладывать только проверенный софт (так же разрешено отписываться и давать пояснения по уже имеющимуся софту — на каком дивайсе и каким образом испытан).
2. К каждому инструменту должно быть описание (принадлежность, ОС, мануал).
3. Запрещается выкладывать и давать ссылки на нелегальный (пиратский) контент.
4. Запрещается обсуждение софта в теме.

Сообщение отредактировал Fashionon — 18.02.16, 11:12

    — инструмент для тонкой настройки серверов и не только.
    — комплект разработчика приложений на языке Java
    — инструментарий для разработки
    — набором утилит командной строки UNIX (Linux) систем
    — Преобразование юникода в человеко-читаемый язык и обратно.

    — на базе apktool 2.0.2
    — Многоцелевая кухня, для редактирования системных ресурсов
    — Утилита для разборки/сборки приложений под Linux от команды FMD
    Установка и использование apktool на OS Linux Ubuntu 14.04-64bit. Автоматическая установка
    — Готовый набор, включающий всё, что нужно для разборки файлов apk
    — Позволяет пакетно деодексировать, декомпилировать, изменять ресурсы и smali-код (переход в тему)
    — Готовый набор, включающий всё, что нужно для разборки файлов apk
    — Программа позволяет с удобством редактировать файл color.xml
    — Для UBUNTU.На Русском языке.
    — Приложение для определения запущенного активити приложения
    — Утилита для поиска и замены id из public.xml в .smali
    — Последнее время много инструкций не подходят друг кдругу из за версий smali решение данной проблемы не большим скриптом

    — Утилита для распаковки/упаковки boot.img или recovery.img под WINDOWS и Linux.
    — Перепаковка boot.img/recovery.img на уст-ве без ПК
    — работа с образом *.img на андроид
    — инструмент для перепаковки boot.img и recovery.img в LINUX
    — Распаковка boot.img
    — утилита под Линух с поддержкой dtb, корректно перепаковывающая msm boot.img recovery.img
    — Утилита для перепаковки ядер и рекавери под виндовс
    — набор утилит для перепаковки ядер
    — Настройка и подготовка к работе с исходниками, ядрами, приложениями и прошивками под ANDROID
    — Инструмент, для пакетного деодексирование приложений в андроид Lollipop
    — Инструмент для деодексации приложений Android 5.0 и выше
    — Пакет утилит для деодексирования системных apk.
    — деодекс прошивок
    — Полноавтоматический deodexed инструмент для Lollipop
    — Новая утилита для удобной обработки файлов прошивок
    — 100% рабочие прошивки под стоковый прошивальщик, ОС Убунту
    — UNIX-подобная среда и интерфейс командной строки для Microsoft Windows
    — подробная инструкция к UNIX-подобная среда и интерфейс командной строки для Microsoft Windows
    — Инструмент для создания кастомных прошивок на базе Linux.
    — ДЛЯ MAC OS X 10.8.x
    — Только для Linux
    [/url]
    — утилитка для работы с образами cramfs и yaffs2

    — Инструмент для работы с прошивками HTC в LINUX
    — Инструмент перепаковки прошивок и их отдельных частей в .tar.md5 для последующей прошивки через Odin под Windows
    — комплексный подход по работе с прошивками из под Windows
    — Комбайн для работы с прошивками на базе Android OS, a также с файлами apk
    — Позволяет сделать все что нужно для разработчика
    — перевод значений из float в HEX и обратно IEEE Floating Point Calculator

    — приложение для уменьшения веса картинок при сохранении качества
    утилита для работы с *.9.png изображениями.
    — С помощью этого приложения, вы, можете быстро посмотреть сочетание текста и фона.
    — Инструмент для пакетного преобразования индексированных .png картинок в неиндексированные
    — Это приложение помогает редактировать графические ресурсы Android-приложений и тем.
    — групповое изменение размеров графики

    — инструмент для преобразования цветовых кодов между HEX, SMALI и XML.

    — прошивальщик OS: Linux, OS X, Windows
    — инструмент на основе известного прошивальщика Heimdall — версия для прошивки в LINUX
    — инструмент для создания прошивок для некоторых девайсов Samsung

    — скрипт для портирования прошивок Android. ОС: Windows XP+
    — Небольшой инструмент для автоматизации упаковки в tar.md5 для UBUNTU
    — упрощенное использование ADB
    HUAWEI Multi-Tool -Позволяет выполнять последоваетьность команд fastboot, adb и adb shell, помогая Вам прозводить множество известных операций без лишних телодвижений.

Сообщение отредактировал Димар — 05.12.17, 11:46

Прикрепленное изображение

Java Development Kit (сокращенно JDK) — бесплатно распространяемый Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE). В состав JDK не входит интегрированная среда разработки на Java, поэтому разработчик, использующий только JDK, вынужден использовать внешний текстовый редактор и компилировать свои программы, используя утилиты командной строки.

Все современные интегрированные среды разработки на Java, такие, как NetBeans, Sun Java Studio Creator, IntelliJ IDEA, Borland JBuilder, Eclipse, опираются на сервисы, предоставляемые JDK. Большинство из них для компиляции Java-программ используют компилятор из комплекта JDK. Поэтому эти среды разработки либо включают в комплект поставки одну из версий JDK, либо требуют для своей работы предварительной инсталляции JDK на машине разработчика.

Доступны полные исходные тексты JDK, включая исходные тексты самого Java-компилятора.

Прикрепленное изображение

Материал из Википедии — свободной энциклопедии
Приложения для Android являются программами в нестандартном байт-коде для виртуальной машины Dalvik.

Google предлагает для свободного скачивания инструментарий для разработки (Software Development Kit), который предназначен для x86-машин под операционными системами Linux, Mac OS X (10.4.8 или выше), Windows XP и Windows Vista. Для разработки JDK 5 или более новый.

Разработку приложений для Android можно вести на языке Java (не ниже Java 1.5). Существует плагин для Eclipse — «Android Development Tools» (ADT), предназначенный для Eclipse версий 3.3-3.6. Для IntelliJ IDEA также существует плагин, облегчающий разработку Android-приложений. Сообщается, что для среды разработки NetBeans IDE разработан экспериментальный плагин. Кроме того существует Motodev Studio for Android, которая представляет собой комплексную среду разработки, основанную на базе Eclipse и позволяет работать непосредственно с Google SDK.

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Создание Phone.tar.md5:

Создание Phone.tar — tar -c modem.bin >> PHONE_JPY.tar
Создание MD5 hash — md5sum -t PHONE_JPY.tar >> PHONE_JPY.tar
Добавление MD5 hash информации to the tar file — mv PHONE_JPY.tar PHONE_JPY.tar.md5

Создание CSC.tar.md5

Создание CSC.tar — tar -c cache.rfs >> CSC_XENJS3.tar
Создание MD5 hash — md5sum -t CSC_XENJS3.tar >> CSC_XENJS3.tar
Добавление MD5 hash информации to the tar file — mv CSC_XENJS3.tar CSC_XENJS3.tar.md5

Все команды для упаковки и создания единого tar.md5 файла (3 команды) могут быть выполнены как единая команда как показано на примере:

Прикрепленное изображение

Прикрепленное изображение

Сообщение отредактировал Димар — 25.01.16, 20:15

Всем, привет! Решил внести и свою лепту по сборке прошивки на Samsung Galaxy S i9000 для одина:

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

После этого можно закрыть командную строку и отключить телефон от ББ.

Нужный вам файл — factoryfs.rfs вы найдёте в папке, которую создали ранее по пути sdcard/BackupRom.
Далее копируйте файл factoryfs.rfs на ББ в отдельно отведённую для дальнейшей сборки прошивки папку. Туда же копируйте остальные недостающие компоненты прошивки:

Прикрепленное изображение

Сообщение отредактировал Димар — 25.01.16, 20:16

Вот ещё на эту тему
Прикрепленное изображение
acc.rar ( 1.8 КБ )

*Для Win,
Unix-like изменить расширение на htm

Поле HEX поддерживает короткую запись цвета: 09f => FF0099FF
В поле SMALI автоматом добавляется 0x, если отсутствует: 3f3f40 => 0x3F3F40
█ — Вводится
█ — Получается

Совет: Если у вас в smali значение цвета задаётся как const/high16 (const/high16 v6, -0x1), чтобы узнать цвет — прибавьте к значению 4 нуля справа (-0x1 => -0x10000)

Обновлено: 9.11.2011 15:00
Причина: Неверный расчёт цвета при значениях HEX меньше 80000000

Сообщение отредактировал Димар — 25.01.16, 20:19

KERNEL Tools
ОС: Linux

Как перепаковать ядро с целью внесения в него изменений.
Начнем с того, что ядра делятся на два типа:
1) Ядро состоящее из образа boot.img состоящего из zImage и RAM Disk (диск в оперативной памяти для начальной инициализации).
2) Ядро состоящее из образа zImage в который интегрируется образ initramfs (новая концепция загрузочного диска — он представляет собой сжатый gzip'ом cpio-архив).

Итак перепаковка boot.img:
Инструкция
Инструмент
перепаковка zImage:
Инструкция
Инструмент
извлечение initramfs из zImage
Инструкция
Инструмент
инструмент под Windows

Сообщение отредактировал As i9000 — 29.11.11, 00:48

Прикрепленное изображение

Очень удобная Win утилитка для работы с образами cramfs и yaffs2. Работает с класическими образами (без извратов, типа подписи и т.д.)
Позволяет удалять/добавлять файлы и линки (понимает буфер обмена из win-проводника), назначать права и владельцев.
Первоначально создана McRip для спутниковых ресиверов (поэтому ругается на размер прошивки) на немецком языке.
Я перевел на русский (опустив то, что касается прошивки реса)

Сообщение отредактировал Димар — 25.01.16, 20:22

Прикрепленное изображение

Сообщение отредактировал Димар — 25.01.16, 20:24

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Прикрепленное изображение

Сообщение отредактировал Димар — 25.01.16, 20:32

Android Kitchen — by dsixda (xda-developers.com)
Инструмент для создания кастомных прошивок на базе Linux.

Скриптовая программа предназначен для использования в консоли.
Для работы программы требуется dev-java/sun-jdk либо открытая его реализация dev-java/icedtea (для своего дистрибутива ищите в менеджере пакетов)

HTC Aria / Liberty
HTC Desire
HTC Desire HD / Inspire 4G
HTC Desire S
HTC Desire Z / Vision / T-Mobile G2
HTC Dream / G1
HTC Droid Eris
HTC Evo 3D
HTC Evo 4G
HTC Evo View 4G (untested)
HTC Evo Shift 4G
HTC Flyer (untested)
HTC HD2
— Use NAND ROM method (Please follow this thread for details)
HTC Hero / G2 Touch
HTC Incredible
HTC Incredible 2
HTC Incredible S
HTC Legend
HTC Magic / myTouch 3G
HTC myTouch 3G Slide
HTC myTouch 4G / Glacier
HTC Nexus One
HTC Rezound
HTC Sensation
HTC Tattoo / Click
HTC Thunderbolt
HTC Wildfire / Buzz
HTC Wildfire S (untested)

Acer Liquid
Dell Streak 7
Huawei Ideos X6
— Please follow this thread for details
Huawei U8100/U8110/U8120/U8150/U8160/U8180/U8650
Huawei U8220 / T-Mobile Pulse
LG Ally
LG GT540 Optimus
LG Optimus 2X (P990)
LG Optimus Black (unconfirmed)
LG Optimus G2X (P999)
LG P500
— Please follow this thread for details
LG Shine Plus
LG Vortex
Micromax A60
Motorola Atrix (unconfirmed)
Motorola CLIQ / CLIQ XT
Motorola Droid
Motorola Droid Bionic
— Please follow this thread for details
Motorola Milestone (unconfirmed)
— You may need to remove the boot.img before building
Samsung Galaxy Nexus (untested, ‘maguro’ and ‘toro’ versions only)
Samsung Galaxy S (GT-I9000 and most variants)
— Please follow this thread for details
Samsung Galaxy S Plus (GT-I9001)
— Please follow this thread for details
Samsung Galaxy S2 (GT-I9100 and Exynos CPU variants)
— Please follow this thread for details
Samsung Galaxy S2 LTE (AT&T Skyrocket, T-Mobile SGH-T989 and equivalent)
— Please follow this thread for details
Samsung Galaxy W (GT-I8150, untested)
Samsung Nexus S / Nexus S 4G
Sony Xperia X10 / X10 Mini / X10 Mini Pro
— Build ROM without boot.img (please follow this thread for details)
ZTE Blade / Orange San Francisco

Заходим в папку

1. Set up working folder from ROM — Распаковывает прошивку из original_update
2. Add root permissions — Добавить root права
3. Add BusyBox — Добавить BusyBox
4. Disable boot screen sounds — Выключить звук загрузки
5. Add wireless tethering — Добавляет функцию WiFi-тетеринга (раздачи доступа к сети Интернет через WiFi)
6. Zipalign all *.apk files to optimize RAM usage — Уменьшаем размер apk в памяти
7. Change wipe status of ROM — Автоматически полный wipe
8. Change name of ROM — Изменяем имя прошивки
9. Check update-script for errors — Проверить update-script на ошибки
10. Show working folder information — Показать информацию распакованной прошивки

11 — Deodex files in your ROM — Деодексирование
12 — Add task killer tweak for speed (stock ROM only) — Твик Task killer
13 — Add /data/app functionality — Добавить программу в прошивку
14 — Add Nano text editor + sysro/sysrw — Добавить консольный текстовый редактор Nano
15 — Add Bash (command shell) — Добавить Bash shell оболочку
16 — Add Apps2SD — Перенос программ на SD
17 — Add /etc/init.d scripts support (busybox run-parts) — Поддержка запуска busybox
18 — Add custom boot animation functionality — Возможность добавлять кастомную заставку
19 — Porting tools (experimental)
20 — Tools for boot image (unpack/re-pack/etc.) — Работа с ядром
21 — Unpack data.img — Распаковать data.img
22 — Sign APK or ZIP file(s) Цифровая подпись apk
23 — Convert update-script or updater-script Конвертировать update-script
24 — Miscellaneous optins / Plugin scripts

99. Build ROM from working folder — Собрать прошивку в установочный zip
00. About/Update kitchen — Обновить кухню
0. Exit — Выход

В процессе работы есть детальное описание всех действий, просто переводите и у вас не будет ни каких трудностей.

Сообщение отредактировал Димар — 25.01.16, 20:51

Hariec,
Вот более расширенная и дополненая версия кухни, как тема сделано на 4pda !!!
Там есть альт-меню на русском))
Создание кастомных прошивок

Сообщение отредактировал alexyuh — 17.03.12, 12:11

Пакет под названием "android-tools", в который включены консольные утилиты "adb" и "fastboot", недавно был загружен в официальные репозитории Ubuntu 12.10 Quantal Quetzal. Команда WebUpd8 получила просьбу загрузить этот пакет в PPA-репозиторий для старых релизов Ubuntu, так что пакет был бэкпортирован на Ubuntu 12.04, 11.10 и 11.04.
"adb" (Android Debug Bridge) — консольная утилита, которую вы можете использовать, чтобы получать доступ к файловой системе на Android-устройстве; её можно использовать для отправки команд, передачи или получения файлов, установки и удаления приложения и многого другого.

"fastboot" — консольная утилита, которую вы можете использовать для открытия файловой системы на Android-устройствах через USB.
Эти утилиты также можно найти и в Android SDK; использование этого пакета всего лишь альтернативный и более простой путь их установки в Ubuntu. Также, пакеты в PPA доступны и для 32-bit, и для 64-bit, а Android SDK от Google доступен только для 32bit.

Установка пакета "android-tools" (adb и fastboot) в Ubuntu 12.04, 11.10 и 11.04

Внимание! Эта инструкция не позволит вам создать полнофункциональную прошивку сразу, но даст вам возможность начать работать над ней.Исходники занимают примерно 6Gb. Вам нужно около 25Gb свободного места чтобы скомпилировать 1 билд и до 80Gb (или больше) для полного комплекта сборки.Перед началом компиляции Jelly Bean на Ubuntu необходимо пройти несколько шагов по настройке компьютера, чтобы получить готовый инструмент.

Вам необходимо следующее:

JDK 6, если вы хотите скомпилировать Jelly bean. Вы можете скачать его с java.sun.com
или:

Python 2.4 — 2.7, который можно загрузить из python.org или:

Git 1.7 или новее. Вы можете найти его в git-scm.com или:

Установите необходимые пакеты. 64-bit (рекомендуется):

В новых версиях Ubuntu, таких как 11.10 возможно потребуется выполнить следующие действия:

В Ubuntu 12.04 в настоящее время есть только экспериментальная поддержка и не гарантируется работа по другим веткам отличным от master.

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

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