"Сначала было слово"
www.rom.by/forum/Shell_Cbrom
Эта ветка форума посвящена
процессу создания программы
BIOStrip.
Назначение программы:
- прочитать файл с прошивкой
- выбрать плагин для препарирования файла прошивки
- записать отредактированную прошивку в файл
- копировать все упакованные модули в виде отдельных файлов
- копировать текущий (упакованный или распакованный) модуль в файл
- добавить новый модуль в прошивку
- удалить модуль из прошивки
- переставить соседние модули в прошивке
- др.
Другими словами, функционально BIOStrip - это универсальный
cbrom с графическим интерфейсом.
Универсальность реализуется через расширяемый набор плагинов.
PS
"Наши цели ясны, задачи определены. За работу, товарищи!" (Все встают.)
В последующих версиях оболочка будет поддерживать многоязычный интерфейс.
Это реализовано посредством переноса всех ресурсов программы (меню, диалоги, строки) в отдельную динамическую библиотеку BIOStripRes.dll, которая загружается оболочкой при старте. Эта dll должна находиться в одной папке с оболочкой BIOStrip.exe
Теперь для смены языка достаточно сменить только BIOStripRes.dll на новую.
Пока существует только один экземпляр - английский.
PS
Всё вышесказанное не относится к плагинам. Но ничто не мешает эту же технологию использовать и для них.
В процессе всенародного обсуждения проявились следующие типы плагинов:
1-й тип - плагины, которые не работают с прошивкой (например, BsPciProbe)
2-й тип - плагины, не учитывающие модульную структуру прошивки (BsCrc, BsIntelGlue)
3-й тип - плагины, учитывающие модульную структуру прошивки (BsAward)
В связи с этим интерфейс IPlugin упростился, но появились два новых интерфейса - IBiosImage и IBiosModules. Теперь плагины 1-го типа должны реализовывать только интерфейс IPlugin, 2-го типа - IPlugin и IBiosImage, 3-го типа - IPlugin, IBiosImage и IBiosModules.
Для MS Visual Studio v.6.0 планируется изменить визард WizBs.awx таким образом, чтобы он умел создавать заготовки проектов для плагинов трех типов.
Программисты могут ознакомиться с интерфейсами (см. файл plugin.h). Сейчас идет доработка оболочки и визарда.
Предлагается для ознакомления очередная альфа-версия оболочки BIOStrip.exe (v.1.1).
Теперь она умеет работать с плагинами всех трех типов.
Выкладываю исходные тексты для двух простых плагинов:
BsCalendar - плагин (тип 1), с прошивкой не работает. Создан в тестовых целях.
BsCrc - плагин (тип 2), считает CRC-8 для заданного пользователем диапазона адресов прошивки.
Плагин BsAwardTest переделан в тип 3, его исходные тексты выкладывать пока рано.
Заготовки этих проектов были созданы с помощью новой версии визарда WizBs.awx (старую версию нужно смело удалить).
Итак, архитектурные изыскания для программы практически завершены.
Оболочка стабилизируется, сейчас она вполне рабочая.
Процесс создания плагинов максимально автоматизирован с помощью визарда. Желающие могут попробовать.
Формальное замечание
CRC - cyclic redundancy check
Checksum - контрольная сумма
Может поправить название плагина, чтобы дальше не путаться.
Согласен.
Плагин BsCrc будет переименован в BsHash.
При желании набор реализованных алгоритмов контрольного суммирования можно будет расширять. Надо будет прикрутить к нему какую-нибудь готовую крипто-библиотеку.
И чтобы два раза не вставать.
1. Плагин BsIntelGlue - относится к 1-му типу, а не ко 2-му. Он не использует образ BIOS, который был прочитан оболочкой из файла. Он самостоятельно создает такой файл. А вот уже после того, как файл создан, его содержимое можно будет "скормить" другим плагинам (3-го типа).
2. Кнопка Parse исчезла. Теперь парсинг прошивки выполняется автоматически, если плагин относится к 3-му типу.
santa и maco - респект
Сегодня у оболочки появился новый дополнительный интерфейс - IMemport.
Теперь у плагинов есть доступ к любому участку физической памяти, а также ко всем портам ввода-вывода.
Этот интерфейс будет полезен, например, при создании плагина BsReadFlash (чтение прошивки BIOS Вашего компьютера), а также для любых других плагинов, которым требуется доступ к железу.
Родился ещё один новый дополнительный интерфейс оболочки - IPci.
Он появился на свет для обслуживания плагина BsPciProbe.
Интерфейс состоит из функций, обеспечивающих доступ к конфигурационным регистрам Pci-устройств. Идет тестирование.
Реализованный в оболочке интерфейс IMemport позволил легко создать плагин BsCmos для чтения регистров CMOS.
Интерфейс IMemport используется в плагине BsReadFlash, который предназначен для чтения прошивки BIOS.
Этот плагин требует записи в конфигурационные регистры устройств чипсета (через интерфейс IPci), чтобы полностью отобразить адресное пространство в конце 4гб, занятое флэшкой. Настройка чипсета для чтения всей флэшки пока не реализована, сейчас правильно читается только последние 64кб.
Можно читать и видео BIOS.
Strelets,
А как под ХР прочитать CMOS, через 70/71 он же не позволяет?
Отправить комментарий