Изменение кода bios / мигание bios

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

поэтому я решил создать свою собственную стандартную утилиту паролей, следуя схеме проверки подлинности перед загрузкой. Поскольку я хочу, чтобы программное обеспечение было хотя бы немного портативным, я хочу, чтобы оно использовало как можно меньше внешней поддержки. Я понял что мне было бы лучше, если бы мне каким-то образом удалось "подключиться" к bios где-то между самоконтролем и загрузкой int 19 из работающей ОС реального режима.

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

кто-нибудь знает, как я могу читать/писать код BIOS? Или кто-то может предоставить ссылки на страницы, которые описывают это?

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

3 ответов


Pinczakko это статьи в BIOS reverse engineering-отличное место, чтобы начать смотреть на это. Было также книги опубликовано тем же автором, но теперь он вышел из печати.

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


Я не совсем уверен, что вы пытаетесь достичь, но:

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

Если вы хотите modifty / написать свой БИОС, то его будет полностью специфично для этого оборудования. Лучше всего начать с чего - то вроде Bochs в качестве открытого исходного кода-поскольку вы можете взглянуть на исходный код BIOS (и легко протестировать / отладить его), у вас есть разумный шанс понять код BIOS и изменить его в то, что работает, однако я подозреваю, что это не то, что вы пытаетесь сделать.

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


Если бы вы думали о работе с "legacy" PC BIOS, я бы отговорил вас от попыток по многим причинам, упомянутым Джастином: 1) legacy BIOS зависит от поставщика ПК; 2) он является закрытым исходным кодом и собственностью; 3) нет отраслевых стандартов, определяющих устаревшие интерфейсы BIOS для расширения системы, как вы пытаетесь сделать.

с другой стороны, если у вас есть доступ к UEFI-based BIOS PC, вы можете написать свой собственный драйвер (ы) PEI/DXE для реализации такая особенность. Это, по крайней мере, укажет вам в правильном направлении:

http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Welcome

Intel нажмите книгу на тему:за пределами BIOS

Что касается практичности чтения / записи BIOS, вам нужно будет определить часть SPI, содержащую BIOS, и получить горелка ROM. Часть SPI может быть или не быть закреплена; если она не закреплена, вам понадобится паяльник и возможность создания гнезда / заголовка для детали. Вы, очевидно, не хотите приступать к этому проекту с основной компьютерной системой. Возможно, вы могли бы найти более старую систему или ссылку доске.