Чем открыть system img. Как извлечь APK файлы с IMG (Разбираем прошивку Android)

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

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

Img, вопреки мнению многих пользователей, вовсе не является изображением или картинкой. Конечно, у многих img ассоциируется с image, но в данном случае слово переводится как «образ». То есть файл IMG является образом диска, неким аналогом ISO, только с несколько отличающимися алгоритмами чтения и соответственно, записи образа. Следует отметить, что нередко простое изменение расширения файла img на iso дает возможность открыть файлы в тех программах, где форматы img не поддерживаются.

Данный формат широко использовался для создания образа дисков в среде Macintosh, но также достаточно часто встречается в приложениях Windows.

В Mac OS X формат.img был заменён на расширение.dmg. И если в Mac OS данный формат может быть и образом и образом жёсткого диска, то в ОС Windows он применяется только для эмуляции CD/DVD-носителей. Как правило, в ОС Windows файлы такого формата создаются программой CloneCD. А полный образ будет дополнен файлами.ccd и.sub с аналогичными именами.

Но все-таки постараемся непосредственно ответить на вопрос, чем открыть img. Самыми популярными программами для работы с данным форматом являются NERO, Daemon Tools и UltraISO.

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

Программа для работы с образом диска UltraISO

Чтобы загрузить дистрибьютив данной программы на ваш компьютер, достаточно набрать ее название в любом поисковике и перейти по указанной ссылке. Данная программа устанавливается и работает достаточно просто. Устанавливаем программу UltraISO на ваш компьютер, следуя всем подсказкам, затем перезагружаем комп. Все готово к работе. Чтобы просто решить проблему, чем открыть img, вовсе не нужно открывать программу. Достаточно только найти образ диска данного формата в папке, кликнуть по нему правой клавишей и вызвать тем самым В меню необходимо выбрать строку «UltraIso», где в выпадающем меню выбрать соответственный тип действий. Вы можете сразу монтировать образ диска в виртуальный DVD-привод или записать образ на реальный диск.

Для записи образа на диск необходимо вставить пустой диск в привод и нажать на «записать». Только не забудьте уточнить, является ли ваш DVD-ROM или CD-ROM пишущим. Если устройство такой функцией не обладает, тогда, соответственно, у вас не получится записать образ на диск. Но не отчаивайтесь, так как запустить диск в виртуальном дисководе все равно получится. Программа UltraIso поможет вам не только открыть файл формата img, но также и записать его на реальный диск - легко и универсально!

Работу с программами NERO и Daemon Tools мы рассматривать не станем, поскольку данные программы потребуют от вас приобретения лицензии. А бесплатные версии не отличаются удобством.

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

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

Файлы такого формата разрабатывались компанией Apple , они были использованы ОС Mac OS 9 и более ранними версиями программного обеспечения. Сейчас файлы IMG практически не используются, они заменены модернизированным форматом .

Программы для открытия IMG

Чем открыть IMG зависит от типа его формата. Есть несколько разных представлений IMG:

  • геоинформационные данные
  • образы дисков
  • растровые изображения
  • файлы игр.

Геоинформационные данные состоят из нескольких зон, формирующих картинку. Такие файлы часто используются в качестве карты и содержат в себе статистические данные. Открыть их можно такими программами как ERDAS IMAGINE , ESRI ArcGIS Desktop , Sendmap и GPS Map Manager . Все указанные программы работают на операционной системе Windows. Для операционной системы Linux создана только одна программа: cGPSmapper .

Файлы образов дисков можно открыть при помощи программы MagicISO , H+H Software Virtual CD и Smart Projects IsoBuster . Для операционной системы Linux подойдет программа RawWrite . Чтобы открыть файл на Мас ОС следует использовать

Практически у каждого пользователя android смартфона появлялось желание создать или отредактировать прошивку под свои нужды и желания. В данной статье мы и рассмотрим принцип редактирования прошивки для CWM (в zip формате).

Подготовка:

В первую очередь необходимо определиться какую прошивку будем брать за основу. Лучше использовать офф. прошивку в зипе. Почти для каждого распространённого девайса существует чистая прошивка + root.
Когда прошивка выбрана её необходимо скачать в любое удобное вам место на ПК (распаковывать не стоит).
Также нам потребуется архиватор, советую использовать 7zip и лучший в своём роде текстовый редактор Notepad++ .

Структура прошивки:

Открывая архив с прошивкой вы видите следующее:
META-INF - в папке хранятся скрипты установки прошивки.
system - папка со всеми файлами прошивки (приложения, твики, скрипты и т.д.).
boot.img - ядро системы.

Практически все манипуляции проводятся в папке system , её структура:
app - системные приложения.
bin - ресурсы самой системы.
etc - Скрипты, твики, конфиги, профили и настройки системы.
fonts - Системные шрифты.
framework - здесь хранятся главные файлы системы (графика, настройки текста анимации и т.д).
lib - библиотеки системы.
media - файлы мультимедиа (мелодии уведомлений, анимация загрузки, обои и т.д).
usr - настройки не изменяемые в дальнейшем системой (работают в режиме "только чтение").
xbin - опять же системные конфиги и прочие твики.
build.prop - инфа о системе, настройки локали и производительности системы.

Приложения:

Перед тем как добавлять/удалять софт в систему, необходимо проверить деодексирована ли ваша прошивка (то есть проверить наличие файлов.odex в папке app. Если файлы есть, то необходимо от них избавиться вот по этой инструкции .
Добавляем софт в прошивку:
Прежде всего необходимо установить себе в смарт те программы которые вы хотите добавить в сборку. После установки достаём их из системы при помощи Root Exporer и его аналогов, находятся они по пути data/app , так же нам понадобятся их либы (если они конечно есть) они находятся по пути data/data . Находятся они в одноимённой приложению папке и имеют расширение .so . Затем изъятые .apk файлы кладем в архив по пути system/app и файлы с расширением .so (lib"ы) по пути system/lib .
Удаляем софт из прошивки:
Тут всё просто, заходим в папку app - определяемся что нам не нужно и удаляем весь ненужный софт (систему лучше не трогать).

Язык и версия прошивки:

Копируем файл build.prop на рабочий стол. Открываем его блокнотом и находим строчки:

ro.product.locale.language=en
ro.product.locale.region=US

для русского языка необходимо сделать так:

ro.product.locale.language=ru
ro.product.locale.region=RU

название своего мода вписываем в строку

в том же build.prop

Графика:

Вся графическая часть прошивки хранится в двух файлах framework-res.apk путь к файлу systemframework и SystemUI.apk по пути systemapp . А графическая часть приложения настройки хранится естественно в приложении Settings.apk .

Скрипты и твики (ускорение и оптимизация системы):

Большая часть настроек проводится в файле build.prop , по этому поводу можно прочитать . Так же если ваше ядро поддерживает init.d есть ряд скриптов для оптимизации системы, один из них описан в этой статье (оптимизация оперативной памяти) и в данной статье Скрипты-твики для init.d

Замена шрифтов системы:

Как выше излагалось все шрифты содержаться в папке fonts , основные шрифты это: DroidSans.ttf и DroidSans-Bold.ttf их можно заменить любыми шрифтами переименовав их аналогично вышеуказанным и переместить с заменой в архив с прошивкой в папку fonts .

Ядро:

Теоретически достаточно заменить boot.img своим, но в некоторых случаях Ядра сопровождаются дополнительными скриптами. По этому советую ничего не делать если есть какие либо сомнения.



Начнем с того, что тебе нужен Linux. В Windows ты сможешь только разобрать прошивку, но собрать обратно уже не получится по чисто техническим причинам. Теперь о прошивке. Обычно они распространяются в виде ZIP-архивов, прошиваемых через кастомные рекавери. Именно один из них нам и понадобится для опытов. Начинать путь ромодела я рекомендую с какой-нибудь максимально приближенной к AOSP кастомной прошивки, потому что в ней зачастую проще разобраться, чем в стоке.

  1. Распаковываем архив с прошивкой в любую папку.
  2. Качаем скрипт по ссылке и разархивируем в любую папку.
  3. Запускаем файл ext (если будет ругаться на отсутствие Java, просто пропусти, нажав y ; Java нужна только для запаковки).
  4. Теперь выбираем распаковку, нажав кнопку 1, а затем Enter.
  5. Новая папка с именем extract_* появится рядом с файлом ext и папкой tools . Копируем в нее файлы system.new.dat и system.transfer.list .
  6. После копирования файлов нажимаем Enter и ждем. Через некоторое время нужно будет опять нажать Enter, ввести пароль администратора и еще раз тапнуть Enter.
  7. Готово. Содержимое system в папке extract_*/output .

Ручной способ

Распаковываем архив с прошивкой в любую папку (например, в rom):

$ mkdir ~/rom $ unzip путь_до_архива -d ~/rom/

Скачиваем нужные нам инструменты в эту папку:

$ cd ~/rom $ wget https://github.com/xpirt/sdat2img/raw/master/sdat2img.py

Запускаем скрипт:

$ chmod +x sdat2img.py $ ./sdat2img.py system.transfer.list system.new.dat system.img

Он преобразует файл system.new.dat в raw-образ с именем system.img . Монтируем образ к подпапке mnt:

$ mkdir mnt $ sudo mount -t ext4 -o loop system.img ~/rom/mnt

Структура каталогов Android

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

  • app - предустановленные приложения со стандартными привилегиями;
  • priv-app - предустановленные приложения с повышенными привилегиями, в том числе некоторые компоненты системы;
  • bin - бинарные файлы формата ELF, аналог каталогов /bin и /usr/bin в Linux. Содержит различные системные компоненты, используемые более высокоуровневыми компонентами системы;
  • etc - файлы настроек. Полный аналог /etc в Linux, используемый, однако, только теми самыми системными компонентами. Приложения Android хранят индивидуальные настройки в каталогах /data/data/ ;
  • fonts - шрифты. По умолчанию содержит только фирменные шрифты Roboto;
  • framework - библиотеки Java-классов, используемых системой и приложениями. Тут же лежит файл framework-res.apk , содержащий полное описание интерфейса операционной системы, включая все графические файлы;
  • lib и lib64 - Linux-библиотеки, используемые низкоуровневыми компонентами системы. Аналог каталогов /lib и /usr/lib в Linux, включая такие стандартные библиотеки, как libc, libz, libssl. На устройствах с архитектурой ARMv7 и ниже каталог lib64 будет отсутствовать;
  • media - медиафайлы: рингтоны, звуки уведомлений, звуки интерфейса и анимация загрузки ОС;
  • tts - файлы, необходимые синтезатору речи;
  • usr - каталог, который обычно содержит файлы, необходимые для работы приложений из каталога bin. По сути, аналог /usr/share ;
  • vendor - файлы, поставляемые производителем устройства. Обычно содержит бинарный firmware для различных железных компонентов, например модуля Wi-Fi;
  • xbin - необязательный каталог; кастомные прошивки используют его для хранения таких вещей, как интерпретатор bash, SSH, PowerTOP, BusyBox, и других полезных инструментов;
  • build.prop - файл, содержащий информацию о сборке, а также различные низкоуровневые настройки;
  • addon.d - содержит скрипты, запускаемые после установки прошивки. Сюда же GApps прописывают свой скрипт, благодаря которому возрождаются после переустановки прошивки.

Ознакомившись с базовой структурой Android, начнем вносить изменения.

Удаляем и добавляем приложения

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

  • /system/app/;
  • /system/priv-app/.

Друг от друга они отличаются привилегиями доступа. Если программы из app имеют такие же полномочия, как сторонние программы (например, установленные из Play Store), то приложения из priv-app могут использовать привилегированные API (права privileged). Подробнее об этом можно узнать из .

Для предустановки приложения в прошивку просто кинь ее APK-файл в /system/app/ . Можно, конечно, создать отдельную папку, но в нашем случае в этом нет смысла, потому что папка служит для хранения библиотек и odex-файлов, которых у нас попросту нет. Для удаления просто удали папку с ним.

Можно пойти дальше и поменять стоковые приложения на аналоги. К примеру, для замены календаря удаляем папку Calendar и копируем в /system/app наш любимый com.rpagyc.simplecalendar.apk . А можно и не копировать. Тогда прошивка будет без календаря.

Главное, помни: стоковые программы могут быть связаны между собой. Поэтому удаление одной проги вполне может привести к полной неработоспособности другой (к примеру, CalendarProvider и Calendar: удалив первый, ты сделаешь неработоспособным не только стоковый, но и любой другой календарь). К счастью, в чистых AOSP-прошивках взаимосвязей не так много.

Меняем анимацию загрузки

Анимация хранится в виде PNG-картинок, упакованных в архив /system/media/bootanimation.zip без сжатия. Внутри архива находятся:

  • desc.txt - файл, описывающий анимацию;
  • part0 - папка с файлами анимаций, которые воспроизводятся первыми;
  • part1 - папка с файлами анимаций, которые воспроизводятся вторыми;
  • part? - крайняя папка, изображения с которой воспроизводятся в конце.

Файл desc.txt может содержать нечто вроде

1920 1080 60 p 1 0 part0 p 0 0 part1

Назначение этих строк интуитивно понятно: 1920 × 1080 - разрешение картинки, 60 - число кадров в секунду. Part0 и part1 указывают на папки, из которых будет воспроизводиться анимация, и последовательность воспроизведения. Вообще, может быть как одна часть, так и несколько (три и больше).

Изображения, находящиеся в папках part, пронумерованы пятью цифрами в порядке воспроизведения: 00000.png , 00001.png , 00002.png … Эти изображения можно поменять на свои, тем самым создав оригинальную анимацию. А можно просто удалить файл bootanimation.zip . Тогда девайс будет показывать анимацию из стандартного Android. Или воспользоваться уже готовой коллекцией анимаций на 4PDA .

Изменяем звуковое оформление

Фактически все звуки, которые воспроизводит система, хранятся в папке /system/media/audio . Внутри нее ты найдешь следующие папки:

  • alarms - мелодии будильника;
  • notifications - звуки уведомлений;
  • ringtones - мелодии звонка;
  • ui - системные звуки, например низкий заряд батареи, фокусировка камеры, выбор элементов интерфейса.

В alarms, notifications, ringtones можно накидать сколько угодно любых мелодий. Взять их можно, например, здесь:

  • стандартные мелодии из разных телефонов и смартфонов Nokia ;

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

Добавляем шрифты

Шрифты хранятся в fonts . Найти архивы с файлами шрифтов можно на 4PDA и XDA . Для установки достаточно скопировать с заменой ttf-файлы из архива в папку fonts .

Меняем системные настройки (build.prop)

В образе system есть интересный файлик build.prop , содержащий множество полезной информации о железе устройства и настройках, устанавливаемых по умолчанию, для различных стоковых приложений. Справедливости ради замечу, что это не всегда так. Например, в Gigaset ME и ME Pro build.prop разделен на две части. В одной части содержатся настройки для Gigaset ME, а для ME Pro некоторые строки продублированы, но ключи (название смартфона и так далее) в них другие. Это было сделано, чтобы обеспечить более-менее корректную работоспособность одной и той же прошивки на разных аппаратах.


Build.prop содержит (или может содержать) огромное количество настроек. Некоторые из них ничего не меняют, некоторые улучшают одно за счет ухудшения другого, но есть те, которые действительно полезны:

  • ro.product.model и ro.product.manufacturer - модель смартфона и имя производителя. С помощью замены этих строк можно заставить Play Store думать, будто у тебя другой смартфон, что откроет доступ к большему количеству софта. Для всяких малоизвестных китайских смартфонов эти строчки могут стать спасительными;
  • hw.qemu.mainkeys - принимает только два значения: 0 - показать наэкранные клавиши навигации, 1 - не показывать кнопки. Отсутствие строки соответствует 0;
  • debug.sf.nobootanimation - значение 1 отключает анимацию загрузки, что немного поднимает ее скорость. Установка 0 или удаление строки возвращает анимацию на место;
  • ro.telephony.default_network - говорит системе, в какой режим должна быть переключена мобильная сеть при загрузке;
  • ro.sf.lcd_density - DPI дисплея, наиболее точное значение для дисплея можно посчитать через удобный сайт . Но никто не запрещает поставить и большее или меньшее значение по своему вкусу: более высокие значения делают элементы интерфейса крупнее, низкие - меньше;
  • ro.config.vc_call_vol_steps - количество шагов громкости во время разговора (по умолчанию 8);
  • ro.config.media_vol_steps - количество шагов громкости мультимедиа (по умолчанию 15).

Внедряем в прошивку Google Apps

Почти всегда кастомные прошивки поставляются без сервисов Google и магазина приложений. Разработчики предлагают нам установить их отдельно с помощью пакета GApps. Однако его можно интегрировать прямо в прошивку.

Для начала необходимо скачать пакет GApps. Я рекомендую брать архивы Open GApps . Выбираешь версию Android, архитектуру процессора и вариант комплектации (Pico, Nano, Stock…), который определяет, сколько различных приложений Google содержит архив. Я рекомендую скачать версию Pico. Она содержит только Play Store и набор необходимых для его работы библиотек.

Интеграция GApps в прошивку выполняется так:

  1. Распаковываем ZIP-архив GApps с помощью любого архиватора.
  2. Переходим в папку Core.
  3. Видим множество архивов с расширением.tar.lz . Извлекаем с помощью lzip.
  4. После распаковки копируем файлы из папок в соответствующие папки в system. Что куда кидать, нетрудно догадаться по структуре каталогов в архиве. Например, configupdater (со скриншота) нужно кидать в папку priv-app .
  5. Переходим в папку GApps (находится рядом с Core) и проделываем пункты 3 и 4 для файлов в ней.
  6. Все, мы интегрировали GApps в нашу прошивку!

Свободное место

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

$ adb shell df /system

Второй вариант: поставить на устройство терминал и набрать команду

$ df /system

Размер раздела в байтах можно узнать, установив на смартфон BusyBox и выполнив в терминале команду

$ busybox df -B 1 /system

Или то же самое с помощью ADB:

$ adb shell busybox df -B 1 /system

Место, занимаемое прошивкой, будет приблизительно равно размеру system в распакованном виде. Вообще, при создании прошивки необходимо учитывать, что юзер также может прошить поверх нее различные модификации (SuperSU, Xposed) или перенести приложения в раздел system. Например, минимальный пакет приложений Google (Pico) требует минимум 150 Мбайт дополнительного пространства для установки.

При необходимости размер файла прошивки можно уменьшить, удалив не только ненужные программы из /system/app (/system/priv-app) и звуки вызова из system/media/audio и bootanimation.zip , но и:

  • /system/tts/lang_pico - языки примитивного голосового движка Pico TTS, голосовой движок Google это не затронет;
  • /system/usr/srec/config/ - офлайн-языки. Можно будет скачать потом онлайн, если понадобится.

Сборка

После внесения изменений нужно собрать все обратно. Сначала запакуем раздел system в system.new.dat . Скачиваем нужные нам инструменты:

$ wget https://github.com/xpirt/img2sdat/raw/master/img2sdat.py $ wget https://github.com/xpirt/img2sdat/raw/master/blockimgdiff.py $ wget https://github.com/xpirt/img2sdat/raw/master/common.py $ wget https://github.com/xpirt/img2sdat/raw/master/rangelib.py $ wget https://github.com/xpirt/img2sdat/raw/master/sparse_img.py $ sudo apt-get install android-tools-fsutils

Преобразовываем нашу папку обратно в RAW-образ. Назовем его system_new.img:

$ sudo make_ext4fs -T 0 -S file_contexts -l 1073741824 -a system system_new.img output/

1073741824 меняем на размер раздела system в байтах. Желательно даже сделать его чуть меньше. Делаем из RAW-образа sparse-образ:

$ img2simg system_new.img system_snew.img

Преобразуем наш образ в system.transfer.list и system.new.dat , которые и нужно кидать в архив с прошивкой, но сначала удалим старые файлы:

$ rm -rf system.transfer.list $ rm -rf system.new.dat $ rm -rf system.patch.dat $ chmod +x img2sdat.py $ ./img2sdat.py system_snew.img

Отделим файлы прошивки от лишней шелухи (файлов, которые мы загружали для работы. Для этого удобно пользоваться архивом с прошивкой). Удалили? Теперь нужно запаковать прошивку в ZIP-архив (любым архиватором).

Осталось подписать архив. Сделать это можно как на самом Android с помощью ZipSigner , так и на ПК (потребуется установленная Java):

$ wget https://github.com/appium/sign/raw/master/dist/sign.jar $ java -jar файл.zip

Подводные камни

Во время сборки system.new.dat ты можешь столкнуться с несколькими проблемами, вызванными постоянными изменениями в механизмах формирования прошивок Android. Описанный выше способ должен хорошо сработать в случае основанной на Android 5.1 прошивки, в более новых могут возникнуть сложности, так что потребуется использовать другие версии инструментов сборки. К сожалению, мы не можем описать все нюансы сборки, поэтому, возможно, придется погуглить.

Установка

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

TWRP

Выводы

Эта статья описывает лишь верхушку огромного айсберга под названием «модификация прошивок». «Серьезные» прошивки не только дополняют ядро и саму прошивку со стоковыми приложениями множеством функций (которые зачастую вырваны из других ядер и прошивок), организовывая или даже меняя принципы их взаимодействия, но и вполне могут кардинально менять принципы работы ОС. Правда, такая поделка - это уже не Android, а отдельная ОС, даже если Play-сервисы получится туда поставить (кстати, такие действия, мягко говоря, не поощряются Google). Ну и не забываем: все оболочки от производителей - TouchWiz, ZenUI, HTC Sense и так далее - всего лишь обычные кастомы, максимально привязанные к железу устройства и друг к другу.

Loading...Loading...