- Восстановление данных из внутренней памяти на Android для чайников
- Подготовка Android-устройства
- Подготовка PC
- Режим модема по USB
- Какой блок памяти нам нужен?
- Копируем раздел памяти на ПК.
- Конвертируем и восстанавливаем
- Итоги
- Как снять дамп разделов system, kernel, data, zImage на Андроид
- Необходимо для снятия образа
- Подробно о Root Android:
- Инструкция как снять образ с Андроид
- Узнаем /dev/block разделов
- [Обновление]
- Снятие образа Android с выбранного раздела
- [Обновление]
- Восстановление раздела из созданного образа Android (дампа раздела)
- [Обновление]
Восстановление данных из внутренней памяти на Android для чайников
Сейчас всё больше смартфонов идут без слота для sd-card, и информацию приходится хранить на встроенной памяти с доступом к ней по MTP. Такой режим подключения не позволяет стандартными средствами восстановить данные телефона после wipe’а или случайного удаления.
Сегодня на примере связки Xiaomi Mi2s и Windows 8.1 я постараюсь рассказать, как можно восстановить утерянные данные, кому интересно, добро пожаловать под кат.
Следует заметить, что если вы по ошибке отформатировали внутреннюю память смартфона/планшета/смартпэда, то не стоит расстраиваться, а главное, ни в коем случае не нужно ничего записывать в память устройства, так у вас получится восстановить больше данных.
Протокол MTP не позволяет компьютеру распознать подключенный девайс как USB-накопитель и программы для восстановления не могут просканировать такое устройство и спасти данные, поэтому нам потребуется скопировать весь внутренний раздел памяти в виде образа системы.
Подготовка Android-устройства
Вам понадобится root и включенная отладка по USB.
Подготовка PC
Для того, чтобы скопировать раздел системы, нам понадобится:
- VHDtool;
- Драйвера для вашего устройства (в случае проблем habrahabr.ru/post/205572);
- ADB (adbdriver.com или developer.android.com);
- Сервер FileZilla.
Сперва устанавливаем USB-драйвера для вашего устройства и ADB. После этого советую перезагрузить ПК.
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
Скачать их можно на тут.
Или вытащить из дистрибутива Android SDK.
Копируем их в папку C:\cygwin64\bin
Проверка работы ADB
Запускаем консоль из папки C:\cygwin64\bin, для этого достаточно вписать cmd в адресную строку проводника
Список подключенных девайсов не должен быть пуст, если после строчки List of devices attached пусто, то вы не установили USB-драйвера или не включили отладку по USB.
Когда всё идет хорошо, консоль выглядит так:
20352f2c – мой Xiaomi Mi2s
Режим модема по 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 – копируемый блок памяти (у вас свой)
Открываем второе окно командной строки и вводим команды:
Не забудьте исправить mmcblk0p27 на номер своего блока!
Смотрим в окно FileZilla и видим, что скачивание mmcblk0p27.raw в папку C:\cygwin64\000 началось, теперь можно закрыть окна cygwin и сделать перерыв на чай.
Конвертируем и восстанавливаем
Вернулись? Файл скачался? Отлично. Отключаем телефон, подключаем интернет. Запускаем Cygwin.bat и вводим следующие команды.
Не забудьте исправить mmcblk0p27 на номер своего блока!
У меня конвертирование заняло пару секунд. На выходе у нас получается всё тот же файл mmcblk0p27.raw в папке C:\cygwin64\000, но уже немного другой. Этот сконвертированный файл можно смонтировать как виртуальный диск, или, например через R-studio, произвести восстановление данных непосредственно из нашего образа. Я так и поступил.
Hint: важные моменты пометил желтым.
Итоги
Моей целью было популярным языком объяснить способ копирования системного раздела с android-девайса на ПК, возможно, некоторые упрекнут меня в сложностях, связанных с USB-модемом и ftp, и скажут, что наверняка можно было проще вытащить образ. Отвечу так: я пробовал другими способами, описанными на 4pda и xda-developers, у меня не вышло, зато с ftp получилось со второй попытки, а входе написания статьи всё вообще прошло как по маслу.
У меня получилось восстановить все утерянные фото без потерь в качестве и даже то, что я и не думал восстановить. В ходе восстановления обнаружились фотографии, которые делал в августе прошлого года, когда только купил телефон и тестировал камеру.
В завершении хочется также упомянуть еще одну небольшую утилиту, которая восстанавливает данные — DiskDigger undelete. Она бесплатная, неплохой функционал, но к сожалению, после 40% она у меня вывалилась с ошибкой.
Источник
Как снять дамп разделов system, kernel, data, zImage на Андроид
вкл. 30 Март 2015 . Опубликовано в Android — Общее
Как снять дамп разделов system, kernel, data, zImage на Андроид. Многие начинающие ромоделы Android или гики не знают как снять образ с Android. В данной статье подробно рассказано как узнать нужные вам /dev/block , как снять дампы с них, разобрать их или в последствие восстановиться.
Для тех кто не много не понял о чем речь. В данной статье будет подробно рассказано как снять текущее состояние с разделов Android — system, data, efs, preload, cache или выдрать ядро (zImage / boot.img). С какой целью расписываться здесь не будет , так как это уже другая история.
Необходимо для снятия образа
1. Скачайте и установите на ПК фирменную программу сайта ADB RUN (если в курсе, что такое adb или установлено Android SDK, то устанавливать не нужно)
2. Android смартфон или планшет должен быть c Root правами
Подробно о Root Android:
4. Установить драйвера если вдруг не установлены
5. MicroUSB кабель
Инструкция как снять образ с Андроид
1. Подключите устройство Android к ПК
2. Запустите программу ADB RUN и перейдите в меню (7) Manual Command > (1) Adb
Узнаем /dev/block разделов
Что такое /dev/block/? /dev/block/ — это «диски» на которых находятся разделы system, data, cache
Вариант 1
Данный способ самый простой, но к сожалению узнать где находиться ядро не возможно.
Для того чтобы узнать /dev/block/ вводим команду
Получаем список где видим список с нашими разделами и к каким /dev/block/ они примонтированы
Вариант 2
Данный способ более сложный, но за то вы точно будете знать абсолютно все ваши разделы!
Вначале лучше воспользоваться файловым менеджером Android с Root доступом например как:
После того как установили перейдите по пути
Далее вам нужно найти папку by-name, она находиться в одной из под папок в platform
Например для некоторых устройств Samsung это выглядит так:
Для устройств на Tegra 3:
Для устройств на Omap:
Для некоторых Mediatek:
Для некоторых устройств Sony:
После того как выяснили где находиться папка by-name в программу ADB RUN набираем команду
где xxxxxxxx — точный путь до папки by-name
[Обновление]
В новых версиях программы ADB RUN (с версии 3.4x.xx) узнать все разделы стало гораздо проще! Все что вам необходимо это:
- запустить ADB RUN
- Перейти в раздел Memory and Partitions -> Partitions /dev/block/
- Попробовать один из методов узнать ваши блоки
Снятие образа Android с выбранного раздела
И так когда мы уже знаем где находятся какие разделы, можно приступать к снятию образа Android (дампа) с выбранного раздела. Перед тем как начать убедитесь что у вас достаточно много свободной памяти на карте памяти!
1. Для того чтобы снять образ необходимо в ADB RUN зайти в меню (7) Manual Command > (1) Adb
2. Залогиниться в терминале под Root -ом
3. Набрать команду для снятия дампа
где XXXXXXXXX — раздел с которого вы снимаете
где NAME_razdel.img — имя которое вы присвоите при снятие образа с выборного раздела (давать имена лучше также как они указаны, если data то data)
Процедура снятия может занять определенное время, от 1 минуты до 15, в это время лучше не дергать ваш Android!
[Обновление]
В новых версиях ADB RUN появилась возможность быстро снять образ каждый раз не набирая столь длинные команды. Все что вам нужно это знать имя блока.
Когда вы уже знаете необходимый блок перейдите в ADB RUN:
- С главного меню в раздел Backup -> Backup dev/block
- Выбираем Backup
- Указываем последние данные с блока (данные после block/)
- Ждем пока снимется образ (не трогать Android)
Восстановление раздела из созданного образа Android (дампа раздела)
Когда вам будет необходимо выполнить восстановление из ранее созданного образа, нужно сделать вот, что:
Убедитесь что образ все еще находиться в разделе /sdcard — так как бекап создавался именно в этот раздел, либо переместите его обратно.
Прописать следующую команду:
где XXXXXXXXX — раздел на которой вы заливаете образ
где NAME_razdel.img — имя образа выборного раздела (давать имена лучше также как они указаны, если data то data)
Процедура восстановления может занять определенное время, от 1 минуты до 15, в это время лучше не дергать ваш Android!
[Обновление]
Для устройств Sony, HTC, Xiaomi и других устройств на которых есть режим Fastboot
могут выполнить восстановление следующим образом после ранее обязательного снятия boot.img (zImage) и system.img (factoryfs.img) обязательно скопируйте данные файлы на ПК:
1. Переведите Android в режим fastboot (bootloader) и подключить к ПК
2. Файлы boot.img и system.img переместить в папку C:/adb/progbin
3. Запустить ADB RUN и перейти в пункт Manual -> ADB
4. Набрать следующие команды (подробно о Fastboot)
Система будет восстановлена в исходное состояние! Можете продолжать эксперименты!
Источник