Разблокировка телефона Lenovo глубинными методами Хабрахабр

Разблокировка телефона Lenovo глубинными методами Хабрахабр

Разблокировка телефона Lenovo глубинными методами из песочницы

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

Утром кто-то позвонил из прекрасного далека, я трубку снять не успел, телефон сам себе набрал на экране неправильный узор пятнадцать раз (тот самый глючок!) и жалобно попросился в Гугл для разблокировки… Связанная с телефоном учетка Гугла при этом есть, но добраться я до нее не могу: передача данных, как мы помним, выключена — и сотовая, и Wi-Fi. Что делать? Сбрасывать смартфон в дефолт — жалко, есть несинхронизированные рабочие контакты в записной книге и заметки, да и неспортивно это. Решил бороться. Да! Отладка по USB тоже была выключена, конечно же. А в Lenovo почему-то не подумали, что спрашивать учетную запись при потушенных каналах связи с интернетом смысла не имеет…

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

Один из предложенных коллективным разумом способов разблокировки предполагал прямое управление базой данных телефона через ADB Shell с использованием инструкций SQL — я не мог им воспользоваться, ибо отладка по USB была выключена, а в режиме Recovery база данных недоступна. Я подумал — а отчего бы не поправить сами файлы с базой данных? В меню Recovery (смартфоны Lenovo вводятся в него держанием кнопок Volume+ и Volume- в процессе включения) есть четыре необходимых для этого действия:

1. Backup. Здесь делается копия телефона. Надо запастись терпением, на это потребуется время. После завершения процесса копия будет лежать на флеш-карте телефона в каталоге /backup в формате ZIP-архива.

2. Mount. Следует разрешить монтирование флеш-карты компьютеру и подключить телефон по USB. Компьютер увидит накопитель телефона, и можно будет скачать сформированный backup-архив, равно как и положить на место модифицированный.

3. Restore. Указать на архив с модифицированной базой данных, подождать, когда телефон восстановит себя из архива.

4. Reboot. Перезагрузить телефон с наконец-то включенным Wi-Fi, после чего ввести данные учетной записи Гугла и больше не делать таких глупостей.

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

В архиве мы видим каталог и файл:

/backup

backup_info.txt

В файле ничего интересного — полное оглавление архива и права доступа к файлам. Заходим в каталог /data/data/

Здесь мы видим подкаталоги с базами данных в формате XML и SQLite, которые хранят и используют в работе различные приложения и активности операционной системы. Нас интересует вполне определенный подкаталог: /data/data/com.android.providers.settings/databases/. где мы находим файл settings.db и в компании его журнала (файлы settings.db-* ) бережно извлекаем из архива. Слава всевышнему, тут Гугл не стал писать ничего собственного и использует стандартный формат! Я использовал программу SQLite Database Browser, ссылку на которую мне любезно предоставил находящийся под иностранным влиянием Яндекс: sqlitebrowser.org. Скачиваем подходящий дистрибутив и устанавливаем программу, затем открываем ею наш файл. В нем мы находим несколько таблиц, нас интересует таблица secure. где в поле [name] будут значения, связанные с WiFi:

Меняем для записей wifi_on и wifi_saved_state значения в поле [value] на единичку и сохраняем изменения. При этом, т.к. закрытие файла базы данных было корректным, SQLite Database Browser потрет файлы журналов и оставит только голый файл settings.db — этого не следует пугаться. Упаковываем этот файл в архив на старое место, не забыв при этом удалить из архива файлы журнала нашей базы данных, потертые SQLite Database Browser’ом! В архиве в каталоге /data/data/com.android.providers.settings/databases/ должен остаться один-единственный файл settings.db. Заливаем архив в телефон, в режиме Recovery требуем Restore, с нетерпением ждем окончания процесса и перезагружаем телефон.

О чудо — у нас включен Wi-Fi! Цепляемся к известной телефону сети, вводим данные учетной записи Гугла и получаем вожделенный доступ к устройству. Разумеется, данный способ будет работать с любым Android устройством, которое способно войти в режим Recovery, сформировать backup-архив и уметь из него восстановиться. Желающие предаться ностальгии вместо SQLite Database Browser могут использовать старый добрый HIEW. но тут надо не порушить файл базы данных и разбираться в его структуре.

Разблокировка телефона Lenovo глубинными методами Хабрахабр