Программатор ch341a + прошивка микросхем памяти

Универсальный способ сброса пароля BIOS на ноутбуке

Здесь уже не обойтись без полной разборки ноутбука и программатора. Себе приобрёл популярную среди радиолюбителей модель программатора CH341A Pro для микросхем 24-ой и 25-ой серии. Стоит он копейки, в районе 300 рублей на AliEхpress, но при наличии прямых рук позволяет творить чудеса. Ждать мне не хотелось, потому взял в ближайшем и единственном в нашем городе магазине радиодеталей, правда без прищепки.

За эти деньги на «алике» можно прикупить с прищепкой и тогда можно было бы не выпаивать микросхему биоса, а прошивать её прямо на плате ноутбука.

Программатор CH341A для микросхем BIOS 24-ой и 25-ой серии http://ali.pub/4wjsro

Перед прошивкой микросхемы BIOS на плате (или её снятием), обязательно отсоединяйте или отпаивайте положительный вывод батарейки питания биоса.

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

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

Полагаете, первый вариант с записью новой прошивки сильно проще? Я тоже так думал, пока не убедился в обратном…

Для начала нужно было получить бинарный файл для прошивки программатором. Скачанная с официального сайта Lenovo версия прошивки BIOS EFI InsydeH2O для моего Lenovo G570 не подходила для программатора.

Дело в том, что прошивать BIOS на ноутбуке предполагается из операционной системы Windows, потому файл прошивки поставляется в виде исполняемого .exe файла. Ну это не беда, распаковываем его архиватором 7zip и находим внутри файл PIWG2219.bin (вроде как вот она искомая прошивка).

Но радоваться рано, если данный файл прошивать как есть, ноутбук не запустится. Нужная нам прошивка начинается со смещения 00020000 (это становится понятно, если сравнить дамп выгрузки старой прошивки из микросхемы Winbond 25Q32FVSIQ и новой, загруженной с сайта производителя).

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

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

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

Если считаете статью полезной,не ленитесь ставить лайки и делиться с друзьями.

Выделение статических ip адресов клиентам OpenVPNА ведь система предупреждала… к чему приводит ошибка S.M.A.R.T. на диске и как её можно исправить?Процессоры M1 от Apple убивают батарею и SSD? Проверил свой новый MacBook Air и не поверил своим глазам…Странная проблема с остановкой времени на ноутбукеАвтоматическая перезагрузка роутера MikroTik при зависанииКак продлить время автономной работы iPhone на iOS 7

Как включить дампы

В Windows 7:

  1. Запускаем Мой компьютер и в свободном месте нажимаем правой кнопочкой мышки, выбираем пункт «Свойства».
  2. В открывшемся окошке о системе слева переходим в раздел «Дополнительные параметры системы».
  3. На следующем этапе переходим на вкладку «Дополнительно» и щелкаем по третьей кнопке «Параметры» в области «Загрузка и восстановление».
  4. Настраиваем параметры по вашему желанию. Обязательно должен быть выбран какой-либо тип.
  5. Нажимаем ОК.

В Windows 8 и 10:

Здесь процесс немного похож, в сведения о системе можно попасть точно также, как в Windows 7. В «Десятке» обязательно открываем «Этот компьютер», нажимаем по свободному месту правой кнопочкой мышки и выбираем «Свойства». По-другому туда можно попасть через Панель управления.

Второй вариант для Windows 10:

Следует заметить, что в новых версиях Windows 10 появились новые пункты, которых не было в «семерке»:

  • Малый дамп памяти 256 КБ – минимальные данные о сбое.
  • Активный дамп – появился в десятой версии системы и сохраняет только активную память компьютера, ядра системы и пользователя. Рекомендуется использовать на серверах.

Видеокарты

Поскольку доминирующими на рынке видеокарт являются GeForce и Radeon, перепрошивка БИОС будет рассматриваться на их примере.

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

Для карт GeForce используется программа NVFlash (из двух файлов), для Radeon – утилита ATIFlash (один файл). Далее, нужно создать загрузочный USB-носитель для DOS-режима, а после этого скопировать на него файлы программ и прошивок.

При старте с флешки следует убедиться, что карта является однопроцессорной, иначе предлагаемый способ не сработает. Для NVIDIA используется команда nvflash —list, для ATI – atiflash –i. Если будет выдана информация по двум картам, значит адаптер имеет два процессора, а предлагаемый способ прошивки использовать нельзя (лучше обратиться к сайту производителя и найти инструкцию там).

На следующем этапе перепрошивка БИОСа видеокарты GeForce предполагает отключение защиты. Делается это строкой nvflash –protectoff.

Далее, для старта процесса обновления БИОС для карт GeForce используется команда nvflash -4 -5 -6 newbios.rom (имя ROM-файла должно соответствовать названию загруженной прошивки), для карт Radeon – atiflash –p –f 0 newbios.rom. После этого ждем завершения процесса и перегружаем систему в нормальном режиме.

Создание таблицы импорта

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

Сам этот массив может быть размещен в любом месте программы, доступном на чтение. Разместим его по адресу 2040h (за массивами FirstThunk). Пропускаем первые Ch байт (в них идут первые три поля IMAGE_IMPORT_DESCRIPTOR, которые мы не будем заполнять). По адресу 204Ch пишем адрес строки «kernel32.dll» (находим ее в дампе или создаем самостоятельно). В следующие 4 байта записываем найденный адрес массива FirstThunk с функциями из библиотеки kernel32 (у нас 2000h). Теперь перезаполняем массив FirstThunk (напоминаю, что каждый элемент этого массива представляет собой двойное слово, содержащее адрес строки с именем функции, за вычетом двойки). В нашем примере первый элемент содержит адрес функции GetModuleHandleA, строка с ее именем размещена по адресу 5009h, вычитаем 2, получаем 5007h. Это значение и пишем в массив FirstThunk.

Именно по такому принципу мы и восстановим всю таблицу импорта. Самое главное при этом — не потереть важные для программы данные (строки, ресурсы, переменные). Поэтому располагать таблицу импорта лучше всего в области, состоящей из нулей. Вообще, для размещения массива IMAGE_IMPORT_DESCRIPTOR (массив FirstThunk и имя библиотеки у нас уже есть), описывающего N библиотек, нужно (N+1)*14h байт памяти.

Нам осталось только изменить адрес таблицы импорта в массиве DataDirectory и наслаждаться приложением с восстановленной таблицей.

Создаем дамп базы данных MySQL

Существует несколько способов создания дампов: через консольное окно или с помощью phpMyAdmin. Рассмотрим последовательно каждый из методов, а также попробуем восстановить БД из дампа.

Способ 1: Консольное окно MySQL

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

Для подключения вы можете воспользоваться такими программами, как PuTTY и WinSCP – они распространяются в бесплатном доступе. Остановимся на первой утилите и посмотрим, как с ее помощью можно сделать дамп базы данных MySQL.

Обратите внимание, что если на компьютере функционирует сервер с БД, то соединение через порт 3306 будет некорректно. В таких случаях рекомендуется использовать другие значения, например, 3307, 3308 и так далее

Теперь мы можем переходить к удаленному администрированию БД: создадим дамп базы данных MySQL. Для этого введем в консоль следующий запрос:

mysqldump -uDataBase -pPASSWRD  DataBase_NAME > FileName
  • -uDataBase — имя базы в формате типа -u
  • -pPasswrd — пароль от базы в формате типа -p
  • DataBase_NAME — имя БД
  • FileName — название файла

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

mysqldump -u -p DataBase_NAME > FileNameToSave

Для понимания можете взглянуть на пример с использованием пользователя и пароля:

mysqldump -uAdmin -p123456789 WordPressDB > WordPressDump.sql

Таким образом будет создан файл WordPressDump.sql, содержащий в себе все нужные данные для точного копирования. Посмотрим, как этот файл импортировать в проект через консоль:

mysql -uUSER -pPASSWRD -f DataBase_NAME < FileNameToEnter

Аналогично подставляем свои данные в команду и в итоге получаем:

mysql -uWordPressDB -p123456789 -f WordPressDB < WordPeressDump.sql

Также при импорте мы можем указать кодировку — для этого достаточно добавить ключ default-character-set. В итоге код преобразуется:

mysql -uAdmin -p123456789 -f --default-character-set=cp1251 WordPressDB < WordPeressDump.sql

Вот такими несложными действиями можно сделать копирование через консольное окно. Теперь давайте «покопаемся» в phpMyAdmin и выполним в нем копирование БД.

Способ 2: Инструмент phpMyAdmin

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

Подключаемся к phpMyAdmin и экспортируем БД:

  1. Открываем личный кабинет хостинга, на котором установлен веб-ресурс, и переходим в phpMyAdmin. На Timeweb это выполняется через раздел «База данных MySQL». Если вы используете локальный сервер на OpenServer, то достаточно в панели задач кликнуть правой кнопкой мыши по его иконке, перейти в меню «Дополнительно» и выбрать «PhpMyAdmin».
  2. Вводим логин и пароль, в результате чего попадаем в систему phpMyAdmin. В левой части выбираем БД для копирования и кликаем по ней левой кнопкой мыши.
  3. Переходим в раздел «Экспорт» и выбираем метод экспорта. Первый минимизирован – получится обычная БД без особых настроек, второй разрешает вносить важные уточнения. Например, мы можем удалять таблицы, изменять кодировку, добавлять особые параметры формата и многое другое. Перед сохранением файла указываем его формат и только потом нажимаем на кнопку «Вперед».

После этого нам будет предложен выбор места сохранения файла. В последующем мы сможем его использовать через вкладку «Импорт». Для этого достаточно загрузить файл и указать подходящую для него кодировку:

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

Общие правила для обновления всех прошивок

Перепрошивка БИОС практически для всех моделей материнских плат подразумевает использование одной и той же схемы:

  • загрузка файлов обновления;
  • создание загрузочного накопителя (только USB-устройства);
  • загрузка с носителя;
  • установка прошивки;
  • перезагрузка системы.

Для стандартных систем BIOS в большинстве случаев используется DOS-режим. Однако для некоторых версий BIOS, а также для более современных систем UEFI, может применяться специальная программа для перепрошивки БИОСа, созданная производителем материнской платы, которая способна запускаться даже в среде операционных систем Windows без обязательного создания загрузочного носителя.

Для чего нужен дамп памяти Windows

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

Вывод участка дампа 32-х битной ОС Windows с помощью программы Debug.exe

Тип записываемого дампа может задаваться в свойствах ОС, поддерживаются варианты:

  1. Малый дамп памяти. Включает немного сведений, в частности это код ошибки с параметрами, список установленных в Виндовс драйверов и т. д., но этой информации бывает достаточно для выявления источника проблемы. Элемент, как правило, будет записан в каталоге C:\Windows\Minidump.
  2. Дамп памяти ядра. Выполняется сохранение сведений оперативной памяти, связанных только с режимом ядра, исключая информацию, не указывающую на источник появления сбоя.
  3. Полный дамп системы. Содержимым является вся память операционки, что может создать проблемы при создании снимка, если объём ОЗУ составляет более 4Гб. Обычно пишется в файл C:\Windows\MEMORY.DMP.
  4. Автоматический дамп памяти (стал доступным с восьмой версии Виндовс). Содержит те же записи, что и memory dump ядра, при этом отличается способом управления системой размером файла подкачки.
  5. Активный дамп памяти (представлен в «Десятке»). Содержит только активную память хоста из режимов ядра и пользователя* (возможность была изначально реализована для серверов, чтобы при диагностике в дамп не попадали виртуальные машины).

*Дамп пользовательского режима представляет собой дамп определённого процесса. Так, содержимым может являться полная память процесса или фрагмент, список, стек, состояние потоков, списки библиотек, состояние потоков, дескрипторы объектов ядра.

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

ВАЖНО. При отказе диска или возникновении BSoD на первой стадии запуска системы аварийный дамп создан не будет.

Перепрошивка БИОСа материнской платы: обязательные условия

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

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

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

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

Анализ с помощью BlueScreenView

Запускаем и настраиваем. Нажмите «Настройки» (Options) – «Дополнительные параметры» (Advanced Options). Выберите первый пункт «Загружать МиниДампы из этой папки» и указываем каталог — C:\WINDOWS\Minidump. Хотя можно просто нажать кнопку «По умолчанию». Нажимаем ОК.

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

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

Теперь нажимаем «Файл» и выбираем, например, пункт «Найти в Google код ошибки + драйвер». Если нашли нужный драйвер, установите и перезагрузите компьютер. Возможно ошибка исчезнет.

Анализ аварийного дампа памяти в WinDbg

Перед анализом memory dump необходимо выполнить некоторые настройки. Для работ с софтом понадобится пакет символов отладки Debugging Symbols, загруженный с учётом версии и разрядности системы.

Можно настроить извлечение утилитой символов из интернета, что безопасно, поскольку используется официальный ресурс компании Майкрософт.

Ассоциирование файлов .dmp с WinDbg

Для того чтобы объекты при нажатии на них открывались посредством утилиты:

  1. В консоли командной строки, запущенной от имени администратора (например, через меню Пуск) выполняем команды (зависимо от разрядности ОС):
  2. Или (для 32-разрядной Виндовс):

Теперь файлы типов .DMP, .HDMP, .MDMP, .KDMP, .WEW будут ассоциироваться с приложением.

Настройка сервера отладочных символов

Отладочные символы, которые генерируются в процессе компиляции приложения вместе с исполняемым файлом, нужны при отладке. Настраиваем WinDbg на извлечение символов из сети:

  • в окне WinDbg жмём «File» и выбираем «Symbol Fie Path…» или жмём Ctrl+S;
  • указываем путь для загрузки, прописав строчку:

  • применяем корректировки нажатием «File» – «Save Workspace».

Анализ memory dump в WinDbg

Чтобы перейти к процедуре, открываем объект в утилите (File – Open Crash Dump) или, если предварительно настраивались ассоциации файлов, открываем элемент щелчком мыши. Утилита начнёт анализировать файл, затем выдаст результат.

В окне предполагается ввод команд. Запрос «!analyze –v» позволит получить более детальные сведения о сбое (STOP-код, имя ошибки, стек вызовов команд, приведших к проблеме и другие данные), а также рекомендации по исправлению. Для остановки отладчика в меню программы жмём «Debug» – «Stop Debugging».

Что такое дамп базы данных

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

Копирование базы данных может быть полезно, когда нужно выполнить: 

  • Перенос данных на другой хостинг. Не нужно повторно создавать БД и вносить в нее все данные руками. Достаточно создать дамп и импортировать его в новый проект.
  • Резервное копирование. Отличный способ для экспериментов с веб-сайтом или сервером: вносите корректировки в базу данных и не бойтесь, что произойдет сбой. В случае неисправности всегда можно будет все восстановить из дампа.

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

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Подписаться

Анализ дампа памяти

Для анализа аварийных дампов памяти существует множество программ, например, DumpChk, Kanalyze, WinDbg. Рассмотрим анализ аварийных дампов памяти с помощью программы WinDbg (входит в состав Debugging Tools for Windows).

Установка средств отладки

  • посетите веб-узел страницу Download the Debugging Tools for Windows корпорации Microsoft;
  • загрузите Windows SDK и выберите только Debugging Tools for Windows при установке (средства отладки также включены в пакет Windows WDK? yj он больше размером);
  • Если SDK уже установлен, то откройте Settings, перейдите в Apps & features, выберите Windows Software Development Kit, и затем выберите Modify чтобы изменить установку и добавить Debugging Tools for Windows.
  • для интерпретации файлов дампа памяти необходимо также загрузить пакет символов (Symbol Packages, так называемые символьные файлы, или файлы символов отладки) для своей версии Windows.
  • выберите свою версию Windows, скачайте и запустите установочный файл Symbol Packages;
  • в окне с лицензионным соглашением нажмите Yes;
  • в следующем окне выберите папку для установки (по умолчанию предлагается \WINDOWS\Symbols) –> OK –> Да;
  • в окне Microsoft Windows Symbols с сообщением «Installation is complete» нажмите OK.

Примечание: К сожалению, Microsoft прекратила публиковать символьные файлы из-за частоты обновления Windows 10. Теперь компания предлагает их скачивать онлайн через Symbol server или создавать символьные ссылки. Как подключиться к символьному серверу, описано здесь: https://docs.microsoft.com/ru-ru/windows-hardware/drivers/debugger/microsoft-public-symbols. Альтернативно, можно подключиться к символам на машине офлайн используя SymChk.

Использование программы WinDbg для анализа аварийных дампов памяти

  • запустите WinDbg (по умолчанию устанавливается в папку \Program Files\Debugging Tools for Windows);
  • выберите меню File –> Symbol File Path…;
  • в окне Symbol Search Path нажмите кнопку Browse…;
  • в окне Обзор папок укажите расположение папки Symbols (по умолчанию – \WINDOWS\Symbols) –> OK –> OK;
  • выберите меню File –> Open Crash Dump… (или нажмите Ctrl + D);
  • в окне Open Crash Dump укажите расположение Crash Dump File (*.dmp) –> Открыть;
  • в окне Workspace с вопросом «Save information for workspace?», установите флажок Don’t ask again –> No;
  • в окне WinDbg откроется окно Command Dump <путь_и_имя_файла_дампа> с анализом дампа;
  • просмотрите анализ дампа памяти;
  • в разделе «Bugcheck Analysis» будет указана возможная причина краха, например, «Probably caused by: smwdm.sys (smwdm+454d5)»;
  • для просмотра детальной информации нажмите ссылку «!analyze -v» в строке «Use !analyze -v to get detailed debugging information»;
  • закройте WinDbg;
  • используйте полученную информацию для устранения причины неисправности.

Например, на следующем скриншоте причина неисправности – файл nv4_disp.dll драйвера видеокарты:

Снять образ с Android (снять дамп разделов system, kernel, data, zImage)

Многие начинающие ромоделы Android или гики не знают как снять образ с Android. В данной статье подробно рассказано как узнать нужные вам /dev/block, как снять дампы с них, разобрать их или в последствие восстановиться.

Для тех кто ничего не понял о чем речь. В данной статье будет подробно рассказано как снять текущее состояние с разделов Android &#8212; system, data, efs, preload, cache или выдрать ядро (zImage / boot.img). С какой целью расписываться здесь не будет, так как это уже другая история.

Необходимо для снятия образа

  1. Скачайте и установите на ПК фирменную программу сайта ADB RUN (если в курсе, что такое adb или установлено Android SDK, то устанавливать не нужно);
  2. Android смартфон или планшет должен быть c Root правами Подробно о Root Android:
  3. Активировать Отладка по USB; если вдруг не установлены;
  4. USB кабель.

Узнаем /dev/block разделов

Что такое /dev/block/? /dev/block/ &#8212; это &#171;диски&#187; на которых находятся разделы system, data, cache.

Вариант 1

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

Для того чтобы узнать /dev/block/ вводим команду:

adb shell mount

Получаем список, где видим список с нашими разделами и к каким /dev/block/ они примонтированы

Вариант 2

Подключаем Android к компьютеру в adb вводим:

Получаем весь список блоков.

Снятие образа Android с выбранного раздела

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

  1. Для того чтобы снять образ необходимо в ADB RUN зайти в меню (7) Manual Command > (1) Adb
  2. Залогиниться в терминале под Root -ом:

3. Набрать linux команду для снятия дампа:

dd if=/dev/block/XXXXX of=/sdcard/NAME_razdel.img

  • где XXXXXXXXX&#8212; раздел с которого вы снимаете
  • где NAME_razdel.img &#8212; имя которое вы присвоите при снятии образа с выборного раздела (давать имена лучше также как они указаны, если data то data)

Процедура снятия может занять определенное время, от 1 минуты до 15, в это время лучше не дергать ваш Android!

В новых версиях ADB RUN появилась возможность быстро снять образ каждый раз не набирая столь длинные команды. Все что вам нужно это знать имя блока.

Когда вы уже знаете необходимый блок, перейдите в ADB RUN:

  • С главного меню в раздел Backup -> Backup dev/block
  • Выбираем Backup
  • Указываем последние данные с блока (данные после block/)
  • Ждем пока снимется образ (не трогать Android)

Восстановление раздела из созданного образа Android (дампа раздела)

Когда вам будет необходимо выполнить восстановление из ранее созданного образа, нужно сделать вот, что:

Убедитесь что образ все еще находиться в разделе /sdcard &#8212; так как бекап создавался именно в этот раздел, либо переместите его обратно.

Прописать следующую команду:

dd if=/sdcard/NAME_razdel.img of=/dev/block/XXXX

  • где XXXXXXXXX&#8212; раздел на которой вы заливаете образ
  • где NAME_razdel.img &#8212; имя образа выборного раздела (давать имена лучше также как они указаны, если data то data)

Процедура восстановления может занять определенное время, от 1 минуты до 30 в это время лучше не дергать ваш Android!

Особенно актуально для тех кто не удачно выполнил S-OFF (или планирует выполнить) или неудачно прошил кастомную прошивку, либо после не удачных экспериментов!

Для устройств Sony, HTC, Xiaomi и других устройств на которых есть режим Fastboot могут выполнить восстановление следующим образом после ранее обязательного снятия boot.img (zImage) и system.img (factoryfs.img) скопируйте данные образы на ПК:

  1. Переведите Android в режим fastboot (bootloader) и подключить к ПК;
  2. Файлы boot.img и system.img переместить в папку C:/adb_run/bin;
  3. Запустить ADB RUN и перейти в пункт (a) ADB;
  4. Набрать следующие команды (подробно о Fastboot):

fastboot flash boot boot.img

fastboot flash system system.img

Система будет восстановлена в исходное состояние! Можете продолжать эксперименты!

На этом все! Подписывайтесь и Оставайтесь с сайтом Android +1! Удачи!

Как создать дамп базы данных

В каждой СУБД свой алгоритм, но общий смысл создания дампа не меняется. Нужно или воспользоваться консолью, чтобы обратиться к серверу с базой напрямую, или открыть веб-интерфейс — такие интерфейсы обычно предоставляют хостинги для сайтов.

Через консоль. В случае с консолью алгоритм сводится к тому, чтобы открыть командную строку, подключиться к серверу через защищенный протокол SSH и отдать команду для создания и загрузки дампа. Для этого нужен доступ к серверу, а для подключения через SSH — специальное ПО, например PuTTY или WinSCP. SSH нужен, чтобы данные из базы передавались в зашифрованном виде и никто не мог их скомпрометировать.

Команды для создания дампа могут различаться в зависимости от СУБД. Например, в MySQL нужно отдать команду mysqldump с определенными параметрами: именем базы и местом, куда нужно сохранить дамп. Можно ввести логин и пароль от базы, но это небезопасно — данные могут перехватить.

Команда для MySQL будет выглядеть так:

mysqldump -u -p <имя базы данных> > <имя файла, куда сохранится база>

Для импортирования дампа понадобится обратная команда:

mysql -u <логин базы> -p <пароль от базы> -f <имя базы данных> < <имя файла, из которого система возьмет дамп>

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

Отдельно стоит сказать про интерфейс PhpMyAdmin — популярный инструмент для работы с базами данных, который обычно устанавливается в CMS (системы управления контентом). С его помощью можно работать с дампами по тому же принципу, что и через собственные веб-интерфейсы хостингов.

Реконструкция импорта

Прежде чем начать непосредственное восстановление таблицы импорта, нам нужно собрать всю необходимую информацию о составе и месторасположении массива FirstThunk

Обращаю внимание на то, что в сдампенном приложении можно обнаружить следы двух таблиц импорта: первая используется распаковщиком (и, как правило, именно на нее первоначально указывает массив DataDirectory), вторая используется самим упакованным приложением (она-то нас и интересует)

Как их различить? Во-первых, таблица импорта распаковщика не отличается большим разнообразием; она, как правило, значительно меньше импорта обычного приложения и не содержит в себе никаких функций работы с окнами и сообщениями, типа GetMessage, DispatchMessage, CreateWindow и т.д. (распаковщику они просто не нужны). Во-вторых, таблица импорта приложения размещена значительно ближе к самому приложению и дальше от кода распаковщика. Гораздо сложнее, когда программа упакована несколько раз. В этом случае перечень функций упакованной программы (которая представляет собой второй упаковщик) и распаковщика очень похож или вообще полностью идентичен.

В этом случае порядок действий такой: встаем отладчиком в начало распаковщика и смотрим, какая из двух таблиц присутствует в памяти (таблица импорта конечной программы еще не распакована, поэтому в памяти ее нет). В 99,9 % случаев список импортируемых функций виден, что называется, невооруженным глазом в любом HEX-редакторе. Если же функции импортируются по ординалам, то получить полный список импортируемых функций не так просто. Проблема усугубляется тем фактом, что имеющиеся ординалы оказываются затертыми адресами функций.

В этом случае единственным способом обнаружения функций является нахождение массива FirstThunk по записанным в нем адресам. Как ты знаешь, все PE-файлы имеют так называемый базовый адрес загрузки. Виртуальный адрес функции рассчитывается путем сложения этого базового адреса и относительного виртуального адреса функции. Так вот, на системах без ASLR этот базовый адрес постоянен, а при ASLR постоянен только его старший байт. Поскольку RVA адреса меньше 01000000h, то старший байт постоянен для данной библиотеки. Этим мы и воспользуемся для поиска импортируемых функций. Последовательность действий при этом такая:

  1. Определяем используемые библиотеки (их имена хранятся в дампе открытым текстом и видны невооруженным глазом).
  2. Находим для них старший байт базового адреса загрузки (например, для библиотеки user32 — 7Eh).
  3. Ищем в снятом дампе вхождения этого дампа; цепочка таких байтов с шагом 4h и будет основным признаком массива FirstThunk.

Резонно возникает вопрос: «А почему для поиска функций не воспользоваться API-монитором?». Дело в том, что при анализе дампов многократно упакованной программы мы можем «промахнуться». Поясню на примере: пусть у нас есть какая-то программа, ее упаковывают пакером A, затем пакером B, ну и на погоны — пакером C. Предположим, что мы снимаем пакер C, соответственно, нам нужны функции, используемые B. API-монитор не различает, кто вызывает функцию — упакованная программа или кто-то из распаковщиков. Поэтому мы вполне можем впасть в заблуждение и начать восстанавливать таблицу импорта основной программы, не сняв всех пакеров, что ни к чему хорошему нас не приведет.

Другой вариант поиска массива FirstThunk основан на так называемом «переходнике». Дело в том, что в большинстве программ API-функции вызываются не напрямую, а через так называемый «переходник», который представляет из себя простую команду jmp на вызываемую функцию (при этом направление, куда «прыгать», берется из массива FirstThunk).

Данный «переходник» выдает нам массив FirstThunk со всем его содержимым. Хуже, когда такого «переходника» нет, то есть библиотечные функции вызываются напрямую. В этом случае его приходится искать самим. Порядок примерно следующий:

  1. Находим место вызова любой библиотечной функции. Наиболее разумный для этого способ — установка точки останова на функцию и эксплуатация программы до тех пор, пока отладчик не всплывет на ней;.
  2. Определяем, откуда берется адрес вызываемой функции. Если речь идет не о неявном вызове API-функций через ручной расчет их адресов (что встречается крайне редко), то браться он будет из массива FirstThunk. Выглядеть он будет примерно так, как показано на рисунке. При этом здесь перед нами будут адреса всех импортируемых функций из разных библиотек. То есть перед нами не один, а несколько массивов FirstThunk (каждый из них соответствует своей библиотеке), разделенных между собой нулевым двойным словом.
  3. Осталось лишь сопоставить адреса, записанные в этот массив, с соответствующими им функциям. Сделать это можно прямо в отладчике.

Строение таблицы импорта

Таблицу импорта описывает первый (считая от нуля) элемент массива DataDirectory. Ее адрес (здесь и далее под словом «адрес» мы будем подразумевать RVA-адрес) хранится по смещению 80h от начала PE-заголовка файла. Сама таблица представляет собой массив структур IMAGE_IMPORT_DESCRIPTOR, вот ее прототип:

Сам массив заканчивается структурой IMAGE_IMPORT_DESCRIPTOR, все поля которой равны нулю. Из всех полей этой структуры нас интересует интересуют только два:

  • Name — указывает на строку с именем библиотеки;
  • FirstThunk — указывает на массив структур IMAGE_THUNK_DATA32.

Остальные поля могут быть пустыми. Структура IMAGE_THUNK_DATA32 имеет следующий прототип:

Единственное поле этой структуры указывает на строку с именем импортируемой функции за вычетом двух байт (в них хранится ординал функции). Заканчивается массив нулевым элементом.

Когда происходит загрузка PE-файла, загрузчик разбирает массив структур IMAGE_IMPORT_DESCRIPTOR, загружает в память процесса соответствующие библиотеки (находит их по полю Name) и перезаполняет массив FirstThunk (по этой причине он должен располагаться в области памяти, доступной как на чтение, так и на запись). В этом массиве вместо имен функций (или их ординалов, в случае импортирования по ординалу) оказываются записанными адреса соответствующих функций. Именно через массив FirstThunk и происходит вызов API-функций.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Мастер Иван Глазунов
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: