Рубрика «загрузчик» - 2

Данная статья в большей степени является не руководством и не мануалом, а просто моими заметками. Идея этой статьи собрать множество особенностей и знаний в одно целое, надеюсь, она кому-то пригодится =)

Что происходит с ОЗУ при загрузке компьютера

Когда вы нажимаете кнопку старта на компьютере(или замыкаете контакты на материнке) BIOS проверяет оборудование и загружает первый сектор жесткого диска(512 байт), который помечен как загрузочный, по адресу 7C00h (h - hex) и начинает выполнять программу которая лежит в этих 512 байтах. От сюда следует, что у нас в распоряжеии есть только 512 байт.

Читать полностью »

Взламываем ТВ-приставку, чтобы получить плацдарм для хакерских атак - 1

Привет! Меня зовут Роман, я занимаюсь безопасностью IOT-устройств.

Мы в Бастион регулярно отрабатываем те или иные сценарии атак и устраиваем эксперименты. Об одном из них я расскажу прямо сейчас.

Читать полностью »

Пишем загрузчик на Ассемблере и С. Часть 2 - 1

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

Здесь я ограничусь написанием программы на ассемблере и ее копированием в загрузочный сектор образа дискеты 3.5”, после чего мы, как и в прошлой статье, протестируем записанный загрузочный код при помощи эмулятора bochs. Для реализации этих задач я задействую службы BIOS, что позволит нам лучше понять их функционирование и более уверенно работать в реальном режиме (Real Mode). Читать полностью »

Пишем загрузчик на Ассемблере и C. Часть 1 - 1

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

Всем привет! Сегодня мы напишем загрузчик, который будет выводить «Hello World» и запустим его на VirtualBox. Писать будем на ассемблере FASM. Скачать его можно отсюда. Также нам понадобится собственно VirtualBox и UltraISO. Перед тем как писать код, разберемся как загружаются операционные системы.

Итак, когда мы нажимаем большую кнопку включения на нашем компьютере запускается система, которая есть на любом компьютере — BIOS (Basic Input/Output System или базовая система ввода/вывода). Задача BIOS это:

Читать полностью »

Пишем OTA-загрузчик для ATmega128RFA1 (в составе устройства Smart Response XE) - 1

Всё началось с приобретения автором на вторичном рынке интересного устройства — Smart Response XE (краткое описание). Предназначено оно для школ: каждый ученик в классе получает по девайсу, похожему на электронную записную книжку или переводчик девяностых, учитель задаёт вопрос, и ученики набирают на клавиатурах устройств ответы, поступающие по радиоканалу (802.15.4) в приёмник, подключённый к учительскому ПК.

Поддержка этих устройств прекращена несколько лет назад, и то, что школы закупали по 100-200 долларов за штуку, теперь всплывает на eBay по 10 и меньше. «Железо» там ну очень подходит для гиковских опытов:

— клавиатура на 60 клавиш
— дисплей с разрешением в 384x136, 2 бита на пиксель — аналогично БК, CGA, но 4 не цвета, а градации яркости
— микроконтроллер ATmega128RFA1 (128 кБ флеш-памяти, 4 кБ ПЗУ, 16 кБ ОЗУ, приёмопередатчик стандарта 802.15.4)
— внешняя (по отношению к микроконтроллеру, а не всему устройству) флеш-память на 1 мегабит (128 килобайт) с интерфейсом SPI
— отсек для 4 элементов ААА

По названию микроконтроллера понятно, что он относится к семейству AVR, а значит, сделать устройство Arduino-совместимым — задача более чем тривиальная...Читать полностью »

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

В процессе работы ставились следующие задачи:

  • Обеспечить обновление прошивки пользователем устройства с SD-карты.
  • Обеспечить контроль целостности прошивки и исключить запись некорректной прошивки в память контроллера.
  • Обеспечить шифрование прошивки для исключения клонирования устройства.

Код писался в Keil uVision с использованием библиотек stdperiph, fatFS и tinyAES. Подопытным микроконтроллером был STM32F103VET6, но код может быть легко адаптирован под другой контроллер STM. Контроль целостности обеспечивается алгоритмом CRC32, контрольная сумма расположена в последних 4 байтах файла с прошивкой.

В статье не описано создание проекта, подключение библиотек, инициализация периферии и прочие тривиальные этапы.
Читать полностью »

Загрузка конфигурации в ПЛИС через USB или разбираем FTDI MPSSE
Пишем загрузчик ПЛИС в LabVIEW. Часть 1

Пишем загрузчик ПЛИС в LabVIEW. Часть 2 - 1

В первой статье мы обкатали алгоритм загрузки на старом добром Си, во второй статье разобрались, как в LabVIEW можно организовать программу и реализовать простой интерфейс пользователя. В этот раз мы познакомимся с новыми приемами работы в LabVIEW, разберем особенности обработки ошибок и завершим проект: реализуем протокол загрузки файла конфигурации в ПЛИС.Читать полностью »

Пишем загрузчик ПЛИС в LabVIEW - 1

У большинства "нормальных" программистов, мягко говоря, неоднозначное отношение к технологии LabVIEW. Тут спорить можно долго и безрезультатно. Ситуацию усугубляет то, что в сети масса примеров программ на LabVIEW, но все они ориентированы на новичка и сводятся к "ой, смотрите как все просто, соединил крутилку с индикатором, кручу ручку, меняется циферка", или в лучшем случае на график в цикле выводится случайное число или синус, все это сопровождается зубодробительным интерфейсом в виде гигантских тумблеров, крутилок и стрелочных индикаторов. Лично меня такой подход сознательного упрощения раздражает. В небольшом цикле статей я постараюсь познакомить читателя с процессом разработки прикладного ПО на LabVIEW. Для того, чтобы не уделять много времени предметной области, воспользуемся подробно описанным алгоритмом загрузки файла конфигурации в ПЛИС через FTDI в режиме MPSSE (Загрузка конфигурации в ПЛИС через USB или разбираем FTDI MPSSE). В этой статье я покажу как реализовать такой же загрузчик ПЛИС, но на языке LabVIEW.

Читать полностью »

Модернизация IDA Pro. Учимся писать загрузчики на Python - 1

Привет всем,

цикл статей по написанию разных полезных штук для IDA Pro продолжается. В прошлый раз мы исправляли процессорный модуль, а сегодня речь пойдёт о написании модуля-загрузчика (лоадера) для одной винтажной операционной системы, а именно — для AmigaOS. Писать будем на Python. Также я постараюсь раскрыть некоторые тонкости при работе с релоками (они же relocations), которые встречаются во многих исполняемых файлах (PE, ELF, MS-DOS и т.п.).Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js