Как достать файлы из прошивки

Обновлено: 08.07.2024

Сейчас всё больше смартфонов идут без слота для sd-card, и информацию приходится хранить на встроенной памяти с доступом к ней по MTP. Такой режим подключения не позволяет стандартными средствами восстановить данные телефона после wipe’а или случайного удаления.

Сегодня на примере связки Xiaomi Mi2s и Windows 8.1 я постараюсь рассказать, как можно восстановить утерянные данные, кому интересно, добро пожаловать под кат.

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

Протокол MTP не позволяет компьютеру распознать подключенный девайс как USB-накопитель и программы для восстановления не могут просканировать такое устройство и спасти данные, поэтому нам потребуется скопировать весь внутренний раздел памяти в виде образа системы.

Подготовка Android-устройства

Вам понадобится root и включенная отладка по USB.

Подготовка PC

Для того, чтобы скопировать раздел системы, нам понадобится:

VHDtool

Создаём папку с адресом C:\cygwin64\000 (имя не имеет значения, не стоит только использовать буквы отличные от латиницы), здесь будет лежать наш образ. Копируем в папку VHDtool.exe.

FileZilla

В ходе инсталяции соглашаемся на все стандартные установки.
После установки FileZilla запустится автоматом, но из программы необходимо выйти и запустить её от имени Администратора.
При запуске FileZilla спросит имя сервера, оставляем всё как есть.


Далее заходим Edit — Settings и делаем следующие настройки:

listen on those ports 40
timeout settings — по умолчанию стоит 120, 60, 60, а мы ставим везде 0 и нажимаем ОК.
Заходим в edit — users. В окошке users создаем нового юзера. В моем случае это юзер qwer.
Нажимаем Add — пишем имя — пароль pass — нажимаем ОК.

Далее в том же меню Users, слева выбираем закладку Shared folders. Заходим туда и добавляем папку в которую будет заливаться наш блок. Нажимаем Add и добавляем папку C:\cygwin64\000. В окошке появится путь к этой папке. Если слева от надписи C:\cygwin64\000 не будет буквы H, то нужно нажать Set as home dir. Затем выделив строчку C:\cygwin64\000 нужно отметить права Read и Write галочками. Затем нажать ОК.



  • adb.exe
  • AdbWinApi.dll
  • adb-windows.exe
  • AdbWinUsbApi.dll
  • fastboot.exe

Копируем их в папку C:\cygwin64\bin

Проверка работы ADB


Запускаем консоль из папки C:\cygwin64\bin, для этого достаточно вписать cmd в адресную строку проводника

Список подключенных девайсов не должен быть пуст, если после строчки List of devices attached пусто, то вы не установили USB-драйвера или не включили отладку по USB.

Когда всё идет хорошо, консоль выглядит так:


20352f2c – мой Xiaomi Mi2s

Режим модема по USB


Нам понадобится подключить аппарат по USB к вашему ПК и включить режим модема по USB. Я использую CyanogenMod 11 и у меня этот режим находится по пути: Настройки > Беспроводные сети > Ещё… > Режим модема > USB-модем


Теперь нам необходимо узнать, какой IPv4 адрес получил ваш компьютер.
Используем команду ipconfig в командной строке
или
Идем по пути: Панель управления\Сеть и Интернет\Центр управления сетями и общим доступом


Кликаем по надписи ’Подключение по локальной сети’ далее Сведения и копируем адрес IPv4.


В моём случае это 192.168.42.79

Важно! При каждом переподключении USB кабеля и вкл/выкл режима модема IPv4 будет меняться.

Какой блок памяти нам нужен?

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

Теперь нам необходимо посмотреть список блоков памяти, для этого вводим построчно следующие команды:


Hint: если вам лень вручную переписывать команды или вы боитесь допустить ошибку, то можно воспользоваться копированием, но вставить привычным способом строчку в консоль не выйдет, поэтому необходимо кликнуть правой кнопкой мыши по окну консоли, далее выбрать изменить > вставить.


После чего во внутренней памяти появится файл list_of_partitions.txt, который нам необходимо скопировать на ПК и изучить.
Скопировать его можно в нашу папку 000 с помощью простой команды (выполнять её следует в отдельном окне командной строки):

Внутренней памяти в моём аппарате 32 GB. Поэтому я ищу самый большой раздел, в моём случае это mmcblk0p27 размером 25,6 GB, у вас он скорее всего будет иметь другое имя, или вообще не будет иметь приписки p**. Безусловно, никто не гарантирует что именно самый большой раздел окажется тем самым на котором еще совсем недавно лежали ваши фото, видео, документы и тд., но в 90% случаев это оказывается именно тот раздел памяти который нам нужен. В противном случае вам придется по порядку копировать все образы и проверять каждый из них.

Копируем раздел памяти на ПК.

Если вы уже закрыли окно cmd, то запускаем его снова.

Вводим команды построчно:


Не забудьте внести соответствующие корректировки в код!

qwer – имя учетной записи в FileZilla (у вас свой если меняли)
pass – пароль от учетной записи в FileZilla (у вас свой если меняли)
40 – порт сервера FileZilla
192.168.42.79 – адрес сервера FileZilla (у вас свой)
mmcblk0p27.raw – копируемый блок памяти (у вас свой)


Открываем второе окно командной строки и вводим команды:

Смотрим в окно FileZilla и видим, что скачивание mmcblk0p27.raw в папку C:\cygwin64\000 началось, теперь можно закрыть окна cygwin и сделать перерыв на чай.


Конвертируем и восстанавливаем

Вернулись? Файл скачался? Отлично. Отключаем телефон, подключаем интернет. Запускаем Cygwin.bat и вводим следующие команды.

У меня конвертирование заняло пару секунд. На выходе у нас получается всё тот же файл mmcblk0p27.raw в папке C:\cygwin64\000, но уже немного другой. Этот сконвертированный файл можно смонтировать как виртуальный диск, или, например через R-studio, произвести восстановление данных непосредственно из нашего образа. Я так и поступил.



Hint: важные моменты пометил желтым.

Итоги

Моей целью было популярным языком объяснить способ копирования системного раздела с android-девайса на ПК, возможно, некоторые упрекнут меня в сложностях, связанных с USB-модемом и ftp, и скажут, что наверняка можно было проще вытащить образ. Отвечу так: я пробовал другими способами, описанными на 4pda и xda-developers, у меня не вышло, зато с ftp получилось со второй попытки, а входе написания статьи всё вообще прошло как по маслу.

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

В завершении хочется также упомянуть еще одну небольшую утилиту, которая восстанавливает данные — DiskDigger undelete. Она бесплатная, неплохой функционал, но к сожалению, после 40% она у меня вывалилась с ошибкой.


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

Что такое прошивка Android-устройства, зачем нужно ее восстанавливать

Бэкап прошивки на Android-устройствах

Прошивка – это основное программное обеспечение многофункционального устройства. От актуальности версии прошивки напрямую зависит продуктивность, экономичность и практичность гаджета.

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

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

Понятие бэкапа прошивки

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

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

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

Зачем может понадобиться бэкап прошивки

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

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

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

Бэкап личных данных, контактов, фото посредством инструментов ОС Android

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

Впоследствии, если вы купили новый гаджет или провели перепрошивку девайса, вам достаточно войти в свой аккаунт. Как только вы это сделаете, все данные снова станут доступны на устройстве.

Полная копия прошивки на устройстве

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

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

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

Нужны ли права суперпользователя для бэкапа

Нужны ли права суперпользователя для бэкапа

Права суперпользователя – это открытый доступ ко всей файловой системе. Посредством данных прав вы можете корректировать работу утилит, предустановленных на девайсе, и всецело следить за работой системы, осуществляя ее наладку в соответствии с теми или иными требованиями.

При этом для бэкапа получение рут-прав далеко не всегда является обязательным условием. Лишь некоторые программы требуют столь высокого доступа от пользователя. Большинство методов дублирования системы осуществляется с правами обычного юзера.

Бэкап через TWRP Recovery

Первым способом создания копии системы является бэкап посредством кастомного TWRP Recovery.

Стандартное рекавери не способно создать копии данных, тогда как TWRP отлично справляется с поставленной задачей.

Чтобы воспользоваться данным методом, вам необходимо перейти в меню рекавери на своем устройстве. Далее с помощью активных клавиш зайти в раздел BACKUP и отметить необходимые данные для создания копии.

Решив сделать backup прошивки Android через recovery, вы можете самостоятельно выбрать рациональный набор сохраняемой информации. Лучше отмечать все данные, а именно: Boot, System, Data, Cache, Recovery, Android_secure, Efs и Modem.

Создание копии посредством ClockworkMod и ROM Manager

Отличной альтернативой для создания бэкапа прошивки является установка ClockworkMod Recovery.

ClockworkMod

Данная утилита имеет полностью интуитивный интерфейс, без особого труда инсталлируется на широкий перечень устройств. Чтобы установить инструмент, достаточно скачать программу ROM Manager. Создание копии данных устройства предполагает два действия.

  1. Необходимо запустить инструмент ClockworkMod recovery через ROM Manager, выбрав пункт «Загрузить режим Recovery».
  2. Перейти в раздел «Backup and restore», выбрать пункт «Backup. Останется только подождать, пока утилита создаст копию системы.

Дублирование с помощью TitaniumBackup

Быстро создать копию личных данных поможет TitaniumBackup.

TitaniumBackup

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

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

Программа дублирует данные на карту памяти или в собственную память девайса. Следовательно, вам необходимо обеспечить софт соответствующим количеством свободного пространства. Также для прошивки программой потребуются рут-права.

Бэкап данных MyPhoneExplorer или с помощью ПК

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

MyPhoneExplorer

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

Для создания копии вам следует подсоединить планшет или смартфон к ПК, запустить утилиту, в каталоге «Разное» выбрать пункт «Создать резервную копию». Затем утилита предложит вам сохранить копию в любой директории на диске ПК.

Копирование в безопасном режиме ADB Run

Достаточно простой способ создания резервной копии демонстрирует программа ADB Run.

ADB Run

Практичный инструмент устанавливается на компьютер и для дублирования требует только исправного USB-кабеля и актуальной версии драйверов устройства. Для создания копии достаточно запустить программу, перейти в раздел «Backup», выбрать пункт «ADB Backup».

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

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

Дублирование через SP Flash Tool

Являясь пользователем устройств с процессорами MTK, вы можете создавать копии системы посредством утилиты SP Flash Tool.

SP Flash Tool

Решив сделать полный бэкап прошивки Android на MTK через Flash Tool, будьте готовы потратить время. Для подготовки системы к бэкапу требуется включение отладки по USB и различные манипуляции с ADB.

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

Восстановление прошивки

Проводя различные манипуляции и эксперименты с операционной системой своего гаджета, вы «закирпичили» устройство или оно систематически начало давать сбои? Пора задуматься об откате настроек к заводским или о бэкапе данных. Оба этих процесса позволят вам быстро вернуть нормальные работоспособные параметры файловой системы девайса без перепрошивки и прочих затратных по времени процессов.

Suvorik1969

Заранее подготовить папки в корне диска ( раздела ) на ПК.

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

В данном случае, как пример, взят смартфон Lenovo S1L ( Mediatek MT6753 ).

По аналогии ниже описанных действий Вам нужно брать данные со скаттер-файла своего смартфона ( прошивки ) и так же на своём гаджете использовать Terminal Emulator for Android для вычисления размера полного дампа.

Для исполнения данной команды в этом эмуляторе терминала рут-права не требуются.

Размер полного дампа на устройстве с процессором МТК вычисляется так ( открыть спойлер ).

Запустить приложение Terminal Emulator for Android на Вашем гаджете.

Ввести команду cat /proc/partitions

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

Приложение отобразит все разделы с памяти устройства количеством блоков в разделе ( один блок = 1024 Байта ).

В строчке mmcblk0 отображена вся память целиком.

Значение со строчки mmcblk0 умножаем на 1024 и получаем размер полного дампа в Байтах.

Переводим полученное значение размера из Dec в Hex и получаем нужное значение для ввода в поле "Length" окна Flash Tool.

На смартфоне Lenovo S1L значение строчки mmcblk0 показало равным 15267840.

15267840 х 1024 = 15634268160 (Dec) = 0x3A3E00000 (Hex).

Для вычислений и перевода из Dec в Hex вполне подойдёт калькулятор с Windows на ПК.

В открытом калькуляторе на вкладке "Вид" выбрать "Программист" - калькулятор переключится в программный вид и автоматом будет выбран режим Dec ( десятичные ).

В этом режиме производим умножение.

Далее при полученном результате выбираем Hex ( шестнадцатиричные ).

Калькулятор переведёт значение из Dec в Hex.

Вот это значение (Hex) и есть нужный Вам тот размер полного дампа с Вашего гаджета, который Вы будете указывать в дальнейшем в окне Flash Tool.

18.jpg
2016-11-08_085030.jpg

2016-11-08_085447.jpg
2016-11-08_085507.jpg

На ПК запустить SP Flash Tool ( SP_Flash_Tool_exe_Windows_v5.1548.00.000 или более поздняя версия ).

1. В папке с программой Flash Tool правым кликом по значку flash tool вызвать контекстное меню.

2. Запустить Flash Tool левым кликом по "Запуск от имени администратора". Если Вы на ПК под учётной записью администратора, то можно и просто двойным кликом по значку flash tool запустить программу.

3. При запуске Flash Tool в первый раз вам выдаст оповещение об отсутствии агента и скаттер-файла в программе. Просто нажмите на "ОК" и откроется стартовое окно программы Flash Tool.

1.jpg
2.jpg

4. Нажать на кнопку "Download Agent".

5. Выбрать папку с программой Flash Tool.

6. В папке выбрать файл "DA_SWSEC.bin".

7. Нажать на кнопку "Открыть".

3.jpg

8. Нажать кнопку "Scatter-loading".

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

10. В папке выбрать сам scatter-файл ( выглядит как "MT6753_Android_scatter" с номером Вашего процессора МТК ). Можно выбрать либо из папки с заводской прошивкой для своего аппарата под SP Flash Tool, либо как отдельно сохранённый скаттер-файл. В моём примере скаттер-файл отдельно сохранён в заранее подготовленной папке без всех остальных файлов для установки прошивки с ПК.

11. Нажать на кнопку "Открыть".

4.jpg

12. В окне Flash Tool появится список разделов ( с полными путями к файлам или нет - не имеет значения ). Перейти на вкладку "Readback".

5.jpg

13. На вкладке Readback нажать кнопку Add.В списке ниже появится новая строчка.

14. Сделать двойной клик мыши по строчке. Программа предложит выбрать путь и ввести имя файла для сохранения.

15. Указать на компьютере папку где резервная копия полного дампа будет хранится до момента потребности в ней.

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

17. Нажать на кнопку "Сохранить".

7.jpg

18. Следом появится окно Readback block start address. Убедиться, что стоит пункт "Hex".

19. В пункте Region выбрать: EMMC_USER (MT6592 и выше).

В строке Start Address ввести нулевое значение 0x0.

В строке Length ввести Вами ранее вычисленное значение размера полного дампа и преведённого в Hex ( в моём примере это значение 0x3A3E00000 ).

20. Нажать на кнопку "ОК".

8.jpg

21. Проверить и удостовериться, что введены правильные значения во всех столбцах.

22. Нажать на кнопку "Read Back".

Далее после нажатия на "Read Back" аккуратно, одним разом без перетыканий подсоединяем выключенный гаджет к ПК по USB и тут же оставляем гаджет без перекладываний, переворачиваний и тому подобных физических воздействий как на него, так и на ПК.

Процесс сливания дампа начнётся сразу же после подсоединения гаджета по USB.

И лучше на время процесса сливания дампа с гаджета отлучитесь от ПК ( попейте чайку минут 20 - 25 ).

На гаджетах с не съёмными аккумуляторами может присутствовать кнопка "reset", как например на смартфоне Lenovo P780.

Такая кнопка служит аналогом вытаскивания-вставки аккумулятора.

В этом случае нажмите эту кнопку на пару секунд и отпустите её перед подсоединением к ПК.

9.jpg

Дальнейшие действия с 23-го по 29-е будут производиться без Вашего участия :

23. Сразу после подсоединения выключенного гаджета по USB к ПК и успешного срабатывания драйверов в Диспетчере устройств на ПК должен определиться подсоединённый выключенный гаджет, как MediaTek Preloader USB VCOM (Android) (COMx) ( в моём случае как COM4 ) и так же отразиться в нижнем ряду окна Flash Tool.

24. Пробежит красная полоса "Download DA 100%".

10.jpg

25. В окне Flash Tool слева внизу под картинкой отобразится информация по чипу с Вашего гаджета.

26. В нижнем ряду окна Flash Tool (слева направо) начнётся отсчёт размера слитого дампа в Мб и далее после 1000 Мб в Гб, скорость сливания в Мб/сек, текущее время, объём уже слитого дампа в процентах и постепенное заполнение шкалы синим цветом.

11.jpg

27. По окончании сливания дампа шкала будет заполнена синим цветом полностью, там же на шкале надпись достигнет "Read back 100%".

28. Появится небольшое окошко "Read back Ok".

29. Flash Tool автоматически программно отключит подсоединённый гаджет, в Диспетчере устройств на ПК исчезнет строчка "MediaTek Preloader USB VCOM (Android) (COMx)".

16.jpg

30. Теперь можно закрыть программу Flash Tool и отсоединить гаджет от ПК. Дабы посмотреть что у Вас получилось - откройте папку со слитым дампом, правый клик на файле, вкладка "Свойства". Там в скобках отображён реальный размер слитого дампа.

17.jpg

Советую сразу же создать проверочный файл хеш-сумм MD5 для того, чтобы в будущем Вы смогли убедиться в целостности слитого дампа, заново создав файл хеш-сумм MD5 и сравнив его с прежним. Для создания файла хеш-сумм MD5 я использую на ПК утилиту FileMenu Tools - посмотреть инструкцию по созданию файла хеш-сумм и скачать утилиту можно по ссылке здесь (спойлер 2 и 4 )

Внимание ! На новых процессорах МТК от MT67xx и позже ( а смартфон S1L как раз на процессоре MT6753 ) для последующего успешного восстановления со слитого полного дампа необходимо отдельно переписывать разделы tee1 и tee2 на устройство либо отдельно слитым дампом с этих разделов, либо в программе Flash Tool в режиме "Download Only" ( при наличии пакета прошивки для установки с ПК ).

После записи одного только слитого полного дампа на устройство на процессорах МТ67хх, оно у Вас не включится.

Мы рассмотрим здесь вариант, когда допустим, что нет у нас пакета прошивки для установки с ПК на наше устройство.

Следовательно нам необходимо слить кусок дампа с разделов tee1 и tee2.

А для этого нам нужны Start Address и Length.

Следовать нижеописанному ( открыть спойлер ).

И так же по аналогии всех действий сливания полного дампа, следом, отсоединив выключенный смартфон от ПК после сливания полного дампа, приступаем к сливанию куска дампа с разделов tee1 и tee2 суммарно, начиная вводить полученные значения Start Addres и Length на шаге 16 и далее ( выше по скриншотам ).

Запустить тот же Terminal Emulator for Android на Вашем гаджете.

Ввести команду cat /proc/emmc

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

Дамп tee1 и tee2.jpg

Приложение отобразит все разделы с памяти устройства в секторах, как стартовый адрес каждого раздела ( Start Addres ), так и размер занятого пространства в каждом разделе ( nr_sects ).
Чтобы узнать реальные значения в (Hex) необходимо выведенные на экран значения умножать на 200 в том же (Hex).
Итак, нам нужны данные старт адреса и длины обоих разделов tee1 и tee2 в одном куске дампа.
Старт адрес - понятно, тут мы берём данные с экрана со столбика Start Address и строки tee1 - это 00030000 = 0x30000.
Умножаем ( в Hex) 0x30000 на 200 и получаем значение 0x6000000.
Sart Address : 0x6000000
Далее, чтобы наш кусок дампа включал в себя полностью два раздела tee1 и tee2, мы должны взять за окончание дампа стартовый адрес с последующего за разделом tee2 раздела fpr, то есть 00035000 = 0x35000.
Так же (в Hex) умножаем 0x35000 на 200 и получаем значение 0x6A00000.
Теперь вычитаем разницу между началом и концом куска дампа :
0x6A00000 - 0x6000000 = 0xA00000
Вот эта разница и есть длина дампа разделов tee1 и tee2.
Length : 0xA00000
Итого.
Sart Address : 0x6000000
Length : 0xA00000

Для просмотра скаттер-файла рекомендуется Notepad++ . В качестве зеркала версия: Notepad++ 6.6.9

Ну, и в заключение, здесь под спойлером видеоролик всего, что описано выше ( сливание полного дампа и куска дампа tee1+tee2, а так же создание и сохранение контрольных файлов хеш-сумм слитых дампов ).

Для нормальной видимости всего шрифта в видеоролике выберите в просмотре качество 720р.

Ниже видеоролик записи слитого дампа обратно на смартфон ( восстановление с состояния полного окирпичивания )

Вытащить прошивку устройства

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

У старых ламповых при­емни­ков не было вообще никаких про­шивок, а единс­твен­ная защита, которая у них была — это анод­ное нап­ряжение. В наше время все иначе: мне попада­ются гаджеты, которые пытаются противодействовать уже на эта­пе вскрытия кор­пуса. Нач­нем наше увлекательное путешествие.

Осмотр платы устройства

Ес­ли вскры­тие не показа­ло, что паци­ент умер от вскры­тия, я сна­чала осматри­ваю пла­ту в поис­ках пинов отла­доч­ных интерфей­сов — обыч­но это JTAG или UART. Глав­ная проб­лема не в том, что нуж­ные кон­такты могут быть в очень неожи­дан­ных мес­тах, а в том, что обыч­но они отклю­чены. Конеч­но, даже в 2021 году все еще хва­тает уни­кумов, которые отправ­ляют в прод устрой­ства с вклю­чен­ным UART, но количес­тво таковых стре­митель­но пада­ет.

Осмотр платы устройства

Ес­ли тебе не повез­ло — вари­антов нем­ного: или пла­кать в подуш­ку, или искать чип памяти на бор­ту и читать его непос­редс­твен­но.

И вот с этим тебя ожи­дает уйма инте­рес­ного! Думал, нуж­но прос­то вытащить вось­миногую мик­руху в DIP-кор­пусе, похожую на ста­рый чип с BIOS? Как бы не так! Сей­час есть минимум четыре отно­ситель­но широко при­меня­емых вида памяти, и некото­рые из них могут быть похожи друг на дру­га так, что не раз­личишь.

Память

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

Как вытащить прошивку из устройства

По опы­ту про­цес­сор (на скрин­шоте выше по цен­тру) обыч­но квад­ратной фор­мы и исполня­ется в BGA, а память пря­моуголь­ная и дела­ется в SOP-кор­пусах.

Час­то в уль­тра­пор­татив­ных вычис­литель­но мощ­ных устрой­ствах (смар­тфо­нах, нап­ример) исполь­зует­ся бутер­брод из про­цес­сора и памяти — так мень­ше раз­меры и задер­жки при работе. Форм‑фак­тор, конеч­но, BGA — прос­то потому, что ничего дру­гого в кро­хот­ный кор­пус запих­нуть нель­зя.

Снять прошивку микросхемы

ROM — пос­тоян­ную память — отли­чить доволь­но лег­ко. Пред­положим, чип с ней ты уже нашел. Теперь давай раз­берем­ся, какая она быва­ет.

Нас инте­ресу­ет EEPROM (Electrically Erasable Programmable Read-Only Memory), FRAM (сег­нето­элек­три­чес­кая память) и NOR/NAND flash — они тебе уже и так зна­комы. Из них ты мог не слы­шать толь­ко о FRAM — ее начали при­менять око­ло пяти лет назад, так что она еще не осо­бо популяр­на.

EEPROM

Сре­ди осо­бен­ностей этой памяти — побай­товые чте­ние и запись. Такая память самая дол­говеч­ная: по рас­четам, она может сох­ранять информа­цию в течение при­мер­но двух­сот лет! Но за надеж­ность при­ходит­ся пла­тить — глав­ным обра­зом объ­емом, с котором у это­го вида памяти все пло­хо: типич­ный объ­ем такого чипа изме­ряет­ся в килобай­тах. Из‑за низ­кого объ­ема для хра­нения про­шивок этот тип памяти поч­ти не при­меня­ется. Ну а раз загово­рили о минусах — сто­ит и о низ­кой ско­рос­ти ска­зать.

Устройство ячейки памяти EEPROM

Устройство ячейки памяти EEPROM

Ре­сурс ячей­ки — око­ло мил­лиона цик­лов переза­писи. По срав­нению с сов­ремен­ными ячей­ками NAND, у которых этот показа­тель находит­ся в пре­делах нес­коль­ких десят­ков тысяч цик­лов, EEPROM-память прос­то нере­аль­но надеж­ная.

FRAM — это сов­сем новый тип энер­гонеза­виси­мой памяти. Про­мыш­ленно его при­менять ста­ли все­го нес­коль­ко лет назад, так что шанс встре­тить имен­но FRAM в каком‑нибудь умном холодиль­нике неболь­шой, но ско­ро все может поменять­ся. Пока что основная проб­лема в цене, которая нес­коль­ко выше, чем у дру­гих типов памяти.

Ус­трой­ство FRAM-ячей­ки. Похоже на DRAM, прав­да?

Ус­трой­ство FRAM-ячей­ки. Похоже на DRAM, прав­да?

От EEPROM отли­чает­ся фун­дамен­таль­но дру­гим прин­ципом запоми­нания информа­ции: хра­нит­ся не заряд на зат­воре, а знак поляри­зации сег­нето­элек­три­ка. При при­ложе­нии нап­ряжения она меня­ется на про­тиво­полож­ную, что поз­воля­ет читать такую память и писать в нее.

Из‑за нового прин­ципа работы такая память зна­читель­но быс­трее, чем EEPROM, но ее дол­говеч­ность оста­лась прак­тичес­ки неиз­менной.

NOR/NAND Flash

NOR/NAND-флеш‑память — это прос­то EEPROM, соб­ранный в мас­сив. NOR от NAND отли­чает­ся толь­ко спо­собом упа­ков­ки в мас­сив, но это неболь­шое раз­личие ведет к дос­таточ­но силь­ным отли­чиям в такой памяти.

NOR NAND-флеш‑память

NOR быс­трее и надеж­нее, чем NAND, но сто­ит дороже из‑за мень­шей плот­ности ком­понов­ки. NAND же, нап­ротив, дешевый как мусор, но име­ет проб­лемы с надеж­ностью.

NOR- и NAND-память исполь­зует­ся в SSD и вся­ких флеш­ках. Из‑за низ­кой надеж­ности NAND-памяти такие накопи­тели в обя­затель­ном поряд­ке име­ют боль­шой пул запас­ных яче­ек, недос­тупных для обыч­ного исполь­зования, и умный кон­трол­лер, который всем этим хозяй­ством рулит. Дер­жать такой овер­хед в шир­потреб­ных умных муль­тивар­ках неп­рости­тель­но дорого, так что при­меня­ется обыч­но NOR, а NAND оста­ется для поль­зователь­ских накопи­телей, где проб­лемы надеж­ности мож­но перело­жить на поль­зовате­ля, который не дела­ет бэкапы. Хотя нет — даже в дешевых роуте­рах он все чаще при­меня­ется бла­года­ря прог­рам­мным механиз­мам защиты целос­тнос­ти.

Сводная таблица NOR NAND FRAM EEPROM

Сводная таблица NOR NAND FRAM EEPROM

NOR был бы иде­ален, если бы не его цена, так что рыночек порешал — и теперь у нас всех исполь­зует­ся NAND поч­ти вез­де. Даже во встра­иваемой тех­нике уже поч­ти научи­лись с ним безопас­но работать — кон­троль­ные сум­мы, ECC-коды и резер­вные бло­ки. Кра­сота!

Корпуса микросхем

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

Корпуса микросхем

Корпуса микросхем

Маркировка

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

Маркировка микросхем

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

Так как еди­ного стан­дарта нет и не пред­видит­ся, про­изво­дите­ли воль­ны писать на сво­их чипах, что счи­тают нуж­ным. Это порой при­водит к кол­лизи­ям, вро­де того, что пред­став­лено на той же кар­тинке: два чипа раз­ных про­изво­дите­лей, оба 29-й серии, но один NOR, а дру­гой — NAND. Короче, не уга­даешь, и такие чипы при­ходит­ся про­бивать в поис­ковиках, что­бы выяс­нить хоть что‑то.

Типовой дизайн

Ус­трой­ства одно­го сег­мента про­екти­руют­ся очень похожи­ми — это впол­не оче­вид­но. Нап­ример, все бытовые роуте­ры изнутри выг­лядят поч­ти оди­нако­во. Та же ситу­ация на рын­ке устрой­ств SCADA, у которых свои каноны, но они прос­лежива­ются вез­де без осо­бых изме­нений.

Я рас­ска­жу о пяти катего­риях устрой­ств, с которы­ми тебе, воз­можно, при­дет­ся иметь дело:

  • ПК;
  • се­тевое обо­рудо­вание бытово­го сег­мента (роуте­ры, свит­чи, точ­ки дос­тупа);
  • обо­рудо­вание для ответс­твен­ных при­мене­ний (на заводах);
  • IoT — интернет вещей;
  • смар­тфо­ны.

Са­мо собой, мир кру­тит­ся не толь­ко вок­руг смар­тфо­нов да компь­юте­ров, но с ними у тебя шанс встре­тить­ся куда боль­ше, чем с каким‑нибудь кон­трол­лером для управле­ния ракет­ными дви­гате­лями. Поэто­му давай рас­смот­рим типовое устрой­ство толь­ко этих пяти катего­рий девай­сов.

Ус­трой­ство обыч­ных ПК под­разуме­вает модуль­ность, то есть поч­ти все детали мож­но лег­ко вынуть. Из‑за это­го на мат­пла­те из эле­мен­тов памяти есть толь­ко флеш­ка с BIOS/UEFI. При этом BIOS обыч­но сидит на мик­росхе­мах 24-й серии — I2C EEPROM, а в новых моделях сто­ит 25-я серия SPI NOR flash с UEFI.

Вытащить прошивку компьютера

Ес­ли же уста­нов­лен взрос­лый инте­лов­ский про­цес­сор с под­дер­жкой ME — на пла­те мож­но най­ти вто­рую такую же флеш­ку, но с про­шив­кой для ME. Это дела­ется в целях безопас­ности: находя­щуюся на физичес­ки отдель­ной мик­росхе­ме про­шив­ку заразить или под­менить слож­нее.

Intel ME

Intel Management Engine — это осо­бая сис­тема для UEFI-сов­мести­мых ПК на базе про­цес­соров Intel. Она име­ет свою выделен­ную мик­росхе­му памяти и собс­твен­ный про­цес­сор, а так­же собс­твен­ные каналы дос­тупа к сетевым адап­терам и основной опе­ратив­ной памяти. Может без огра­ниче­ний вза­имо­дей­ство­вать поч­ти с чем угод­но в сос­таве компь­юте­ра, что очень силь­но повыша­ет тре­бова­ния к ее защите.

Бытовые роутеры

С роуте­рами пот­ребитель­ско­го клас­са все доволь­но прос­то: тут ста­вят память SPI NOR 25-й серии, если тре­бует­ся не боль­ше 8 Мбайт, или NAND-память объ­емом поболь­ше. Изредка мож­но най­ти eMMC, но мне такое пока не попада­лось.

Вытащить прошивку роутера

Устройства для ответственного применения

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

Дамп прошивки

Ло­ги обыч­но пишут­ся в EEPROM или FRAM 24-й серии, заг­рузчик лежит на NOR 25-й серии, а все встро­енное ПО кла­дут на NOR 26-й, 29-й серии. NAND исполь­зуют ред­ко, а если исполь­зуют — сра­зу боль­шими мас­сивами с резер­вирова­нием.

Сей­час понятие IoT слиш­ком рас­тяжимое: по сути, туда мож­но записать вооб­ще все умное домаш­нее и даже не очень домаш­нее. Из‑за это­го память там может быть любая: хоть EEPROM, хоть eMMC — это ког­да NAND с хост‑кон­трол­лером упа­кова­ны в один чип.

Дамп прошивки устройства умного дома

Смартфоны

В смар­тфо­нах обыч­но все самое передо­вое: тут тебе и eMMC, и eUFS, и даже NVMe SSD, как у Apple. При этом, как ни кру­ти, все эти чипы выг­лядят плюс‑минус оди­нако­во, так что ты их ни с чем не спу­таешь.

Вытащить прошивку телефона

Расшифровка имени

Те­перь, ког­да наш­ли нуж­ный чип и про­чита­ли мар­киров­ку, ее нуж­но декоди­ровать. Кста­ти, мар­киров­ка далеко не всег­да чита­ется целиком: часть может быть слу­чай­но или намерен­но скры­та, а то и вов­се под­делана, как любят устра­ивать китай­цы со сво­ими деталя­ми на Али.

Осо­бо круп­ные про­изво­дите­ли могут пре­дос­тавлять на сво­их сай­тах декоде­ры име­ни мик­росхе­мы, но поч­ти ник­то так не дела­ет.

Пох­валь­ный при­мер — про­изво­дитель Micron, который дал на сай­те внят­ную инс­трук­цию и фор­му для получе­ния даташи­та на свои мик­росхе­мы.

Расшифровка имени чипа

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

Расшифровка имени чипа

Поиск документации

Гуг­лить, думаю, ты и сам уме­ешь, но для поис­ка докумен­тации ко вся­ким экзо­тичес­ким чипам это может быть бес­полез­но. Во‑пер­вых, более эффекти­вен поиск по пер­вым N сим­волам наз­вания мик­росхе­мы. Во‑вто­рых, час­то про­ще най­ти по коду на Aliexpress или дру­гих круп­ных тор­говых пло­щад­ках.

Ес­ли уж любишь Google, поп­робуй поиск по кар­тинкам — там порой мож­но най­ти то, что тек­стом не ищет­ся.

Еще огромные базы чипов есть в ПО для прог­рамма­торов — я исполь­зую ПО ком­пании Elnec. Зачас­тую там даже есть даташи­ты, но слиш­ком на это наде­ять­ся не сто­ит.

И еще одно хорошее мес­то для поис­ков — GitHub. С боль­шим шан­сом там най­дет­ся что‑нибудь по зап­росу в духе «X microcircuit read poc». Даль­ше мож­но выд­рать ссыл­ку на даташит или что‑то еще полез­ное. Мне попада­лись даже скры­тые сер­висные коман­ды для бло­киров­ки/раз­бло­киров­ки чипа, что, конеч­но, очень при­ятно при изу­чении.

Оборудование

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

Под­робнее хочет­ся рас­ска­зать о дешевом флю­се. Как при­мер — ТТ, так­же извес­тный как розовый гель. Он хорош, но он не отмы­вает­ся и про­водит ток на высоких час­тотах. Это не проб­лема в совет­ском радио или даже сов­ремен­ном бло­ке питания, но вот на пла­тах компь­юте­ров с гигагер­цами час­тоты он катего­ричес­ки про­тиво­пока­зан.

Сня­тие ком­паун­да — это воп­рос тем­перату­ры. Я обыч­но грею феном на

250 гра­дусов, но есть одна проб­лемка. И сос­тоит она в том, что под ком­паун­дом ком­понен­ты могут быть при­паяны низ­котем­ператур­ным при­поем, вро­де спла­вов Розе или Вуда. Да, ком­паунд ты сни­мешь, но вмес­те с ним сой­дет полови­на пла­ты. А хит­рая флеш­ка может не завес­тись без кучи рас­сыпухи, которую обратно уже не соб­рать.

При сня­тии ком­паун­да не забывай о вытяж­ке — твое здо­ровье важ­нее любой мик­росхе­мы!

Что делать, если пла­та пок­рыта лаком? Мож­но поп­робовать свес­ти его аце­тоном, но он может пов­редить тек­сто­лит. Делай так, толь­ко если тебе терять нечего. Для осталь­ных слу­чаев — прос­то сни­мать скаль­пелем в нуж­ных мес­тах, а осталь­ное не тро­гать.

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

микросхема снять прошивку

К завод­ско­му при­пою час­то име­ет смысл при­мешать менее тугоп­лавкий сплав Розе или ПОС63, ну или сплав Вуда, если все сов­сем пло­хо. Это зна­читель­но понизит тем­перату­ру пай­ки и уве­личит шан­сы не сжечь мик­руху.

Подготовка к чтению прошивки

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

Подготовка к чтению прошивки

С BGA нуж­но убрать ста­рый при­пой и нанес­ти новые шарики. Ког­да чип очи­щен и под­готов­лен к чте­нию, не взду­май пихать его в прог­рамма­тор с при­жимом пря­мо в чип — велик шанс прос­то раз­давить его!

Чтение прошивки

Пом­ни, что память NOR flash идет с завода без битых яче­ек, а у NAND есть допус­тимый про­цент бра­ка, так что, если в NAND вид­ны битые ячей­ки, не спе­ши расс­тра­ивать­ся.

Чтение прошивки

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

Раз­работ­чики чипа нас­тоятель­но рекомен­дуют раз­работ­чикам устрой­ства исполь­зовать свои чипы в соот­ветс­твии с некото­рыми пра­вила­ми. Но вто­рые воль­ны не под­чинять­ся пер­вым, так что сис­темные стра­ницы порой ока­зыва­ются хра­нили­щем клю­чей шиф­рования или каких‑то дру­гих дан­ных. В общем, читай все — лиш­ним точ­но не будет.

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

Статья написа­на по мотивам док­лада Демида Узень­кова — спе­циалис­та ком­пании ИНФО­РИОН. Выс­тупле­ние сос­тоялось на кон­ферен­ции RuCTFE 2020. За помощь в под­готов­ке пуб­ликации редак­ция бла­года­рит коман­ду «Ха­кер­дом».

Читайте также: