Эта статья написана по мотивам дипломной работы, выполненной в ВУЗе. Мне показалось, что она могла бы быть интересна и другим людям, поэтому выкладываю пересказ. В этой работе я кратко рассмотрю, как вообще работают исключения в С++, опишу, как я добавил их поддержку в простую ОС, написанную для преподавания АКОСа, какой способ передачи исключений из ядра в программы я написал. А в конце посмотрим, в каких ещё случаях ОС может бросать пользователям С++ исключения.
Пользователь
Встраиваем вирусный exe в файл *.reg
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/286/733/d9a/286733d9a4027bee19235cef733096ac.png)
Недавно я выпустил экспериментальный проект под названием «EmbedExeLnk» — этот инструмент генерировал файл .lnk, содержащий встроенную полезную нагрузку EXE. Я развил эту концепцию дальше и создал инструмент, который создаёт файл реестра Windows (.reg), содержащий полезную нагрузку EXE. Интересно? Подробности ниже.
ОС с нуля: Глава 2, Часть 1 — Да зачем нам этот Legacy
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/b18/97f/547/b1897f54764458a6326b7571e4755cbe.jpg)
Пару месяцев назад я решил начать серию статей про написание своей ОС с нуля. Описал написание Legacy MBR загрузчика и переход в защищенный режим (без прерываний) и ещё пару мелочей. Сегодня я решил, что попытаюсь "перезапустить" эту серию (сохранив нумерацию частей). Суть в том, что теперь будут использоваться актуальные на август 2022 года материалы, и разработанное ПО можно будет легко протестировать на своей (U)EFI-машине.
NORVI IIOT (не Kincony единым)
![](https://habrastorage.org/webt/pr/gs/6y/prgs6yv4bknwodqsc36vc6fgbku.jpeg)
У нас тут уже образовался клуб любителей контроллеров и их программирования, мы познакомились с устройством и назначением DIY контроллеров компании Kincony серии KC868 (A4, A6, A8, Uair, AG, A16, A32, Server) и значительно продвинулись в этой теме, но мир контроллеров не заканчивается на продукции Kincony, есть много не менее достойных и интересных производителей, и в моём распоряжении оказался целый набор устройств от компании Iconic Devices (Norvi): NORVI IIOT (AE01-T), NORVI ENET (AE06-T), NORVI Cema (M1), NORVI Agent 1 (AT01-BM1), NORVI Agent 2 (AP01-BC1).
Как вы догадываетесь, я не могу отказать себе в удовольствии разобрать по косточкам и препарировать всё это великолепие и не могу не поделиться с вами результатами своих изысканий. Эта первая статья цикла о девайсах Norvi будет посвящена модели NORVI IIOT — базовой для всего семейства контроллеров этой компании.
Итак, приступим…
Kincony KC868-A6: A4 на стероидах (по заявкам с Хабра)
![](https://habrastorage.org/webt/0b/_v/7n/0b_v7n8bo1m_mnfib5dfog8046m.jpeg)
Компания Kincony отличается завидной плодовитостью и «выпекает» новые контроллеры как горячие пирожки — каждый месяц у неё появляются всё новые и новые модели. И, судя по всему, останавливаться она не собирается, в её собственной интерпретации это называется:
“Continuously developing new products.”
То есть она и дальше собирается радовать нас своими новыми девайсами для автоматизации. Это отличная новость, но есть новость ещё лучше: Kincony реагирует на пожелания пользователей по улучшению своих изделий. А в наше время это очень редкое качество — увидеть в железе свои «хотелки» — что-то я вообще не припомню прецедентов, чтобы по моим пожеланиям выпускали серийные контроллеры.
Разработчики Kincony знакомы с моими статьями, а также с комментами Хабро-юзеров под ними, то есть у нас есть реальный шанс (механизм) влияния на начинку новых изделий Kincony. В частности, среди моих пожеланий были добавление в контроллер дисплея, возможность подключения беспроводных модулей LoRa и nRF24, вывод на плату отдельных Serial, I2C и SPI разъёмов, добавление часов реального времени (RTC) — и вот передо мной лежит KC868-A6, в котором все эти пожелания учтены. Вот так просто — заказывали? — получите!
Разумеется, не все наши пожелания учтены в KC868-A6, но сама тенденция радует, а что и как устроено внутри A6 мы с вами разберём дальше…
Изучаем, как собрать свой двигатель — на случай «Большого ПЭ» и не только
![](https://habrastorage.org/webt/or/cp/hl/orcphlbotmiyhj-e3og7_loshby.jpeg)
Энергия в современном мире — это всё, и чем дальше, тем больше: экзоскелеты, роботы, разнообразные электрические виды транспортных средств. Всё это базируется на необходимости доступа к соответствующим источникам питания и, в то же время, ограничивается их отсутствием. Однако всё может стать ещё хуже, если традиционные источники питания станут вдруг недоступны, по тем или иным причинам. Либо же, потребуется создать собственный источник питания (например, для электропитания далеко расположенного лесного домика и т.д.). Ещё одним интересным вариантом может быть изготовление альтернативного источника питания для уже существующих устройств, — например, для дронов. Да, в этой статье мы поговорим об устройстве и возможности изготовления собственных двигателей внутреннего сгорания различных типов. Кроме того, для этих целей можно даже применить технологии машинного обучения!
Энергетический расчёт и выбор на этой основе исполнительных двигателей
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/f14/8f2/cbd/f148f2cbd60d3e1b2a51108e9fb41bed.jpg)
Блог компании Специальный Технологический Центр , туториал
Разберём, как можно выбрать исполнительные двигатели для своего проекта, самоделки и иных целей. Будет использоваться подход к синтезу, который получил название синтеза цифровой системы по ее непрерывному аналогу. Начальным этапом процесса проектирования является выполнение энергетического расчёта и выбор на этой основе исполнительных двигателей, механических передач и силовых преобразователей (усилителей мощности), в совокупности обеспечивающих возможность реализации силового воздействия на объект управления.
CJDNS мертв, да здравствует Yggdrasil
![image](https://habrastorage.org/webt/kx/an/3z/kxan3zfvzqtnqslt-ryvcworf8o.png)
Что такое Yggdrasil?
Yggdrasil — это распределённая Mesh сеть, которая работет в Overlay режиме, позволяя сделать интернет поверх интернета.Последние новости о сети cjdns датируются 2017 годом, может показатся, что сеть умерла и разработка остановлена (на самом деле — да), однако появился самозванец — Yggdrasil, который практически полностью копирует cjdns однако делает это намного лучше.
Причем, сеть может одновременно работать в двух режимах — через интернет и без интернета, соединяясь напрямую с физически соседними пирами (через Ethernet, Wi-Fi или Bluetooth) работая на 3-ем уровне модели OSI.
На Apple устройствах использован протокол AWDL.
В посте рассмотрим:
- Что такое Yggdrasil
- Зачем это нужно
- Откуда он взялся
- Можно ли ему доверять
- В чем отличее от cjdns
- Почему его стоит установить прямо сейчас
- Поддержка iOS (Да!)
- Что в планах
- Как настроить
Коммуникации в store-and-forward режиме, UUCP
Как собрать зловредный компилятор
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/b09/697/d22/b09697d22e917b519eb16b9fc92d5ce9.jpg)
А вы знали, что бывает такая атака на компилятор через бэкдор, защититься от которой невозможно? В этом посте я покажу вам, как реализовать такую атаку менее чем в 100 строках кода. Кен Томпсон, создатель операционной системы Unix, рассказывал о такой атаке еще в 1984 году в своей лекции по поводу присуждения Премии Тьюринга. Такая атака по-настоящему опасна и сегодня, причем, не известно решений, которые обеспечивали бы полную неуязвимость от нее. Вирус XcodeGhost, открытый в 2015 году, проводит атаку через бэкдор по методу, предложенному именно Томпсоном. Я покажу здесь атаку Томпсона на языке C++, но этот пример легко адаптировать для любого другого языка. Дочитав эту статью, вы крепко задумаетесь, а осталось ли у вас вообще какое-то доверие компилятору.
Представляю, сколь скептически вы можете отнестись к моим заявлениям – и, возможно, у вас уже возникли вопросы. Ниже приведу примерный диалог, который мог бы состояться у нас с вами, снять некоторые ваши сомнения и помочь вам почувствовать суть атаки Томпсона.
Настроить программный модем — поможет minimodem
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/b96/a27/c53/b96a27c53a256d0423a886e72a50262b.jpg)
Можно сказать, что модемы перешли в разряд ретротехнологий. Но чтобы поработать с ними сегодня, необязательно приобретать физический девайс. Для установки соединения по аудиоканалу достаточно звуковой карты и open source утилиты minimodem.
Как написать калькулятор на HTML и CSS без JavaScript
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/14d/7ef/f70/14d7eff700fe620a95d2b3b110516cee.png)
Материалом о разработке калькулятора на CSS и HTML, без файла JS, тега script и обработчиков событий в HTML делимся к старту курса по Fullstack-разработке на Python. За подробностями приглашаем под кат.
Ссылки и ссылочные типы в C++
Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это пятая статья из серии, список предыдущих статей приведен в конце в разделе 6. Серия ориентирована на программистов, имеющих определенный опыт работы на C++. Эта статья посвящена ссылкам и ссылочным типам в C++.
Термин «ссылка» широко используется и в обыденной жизни, в компьютерных и других науках и поэтому его смысл сильно зависит от контекста использования. В языках программирования под ссылкой понимают небольшой объект, главная задача которого обеспечить доступ к другому объекту, расположенному в другом месте, имеющему другой размер и т.д. Объекты ссылки удобно использовать на стеке, они легко копируются, что позволяет получить доступ к объекту, на который эта ссылка ссылается, из разных точек кода. В той или иной форме ссылки поддерживаются во всех языках программирования. В ряде языков программирования, таких как C#, Java, Pyton и многих других, ссылки, по существу, являются концептуальным ядром.
В C роль ссылок играют указатели, но работать с ними не очень удобно и в C++ появилась отдельная сущность — ссылка (reference). В C++11 ссылки получили дальнейшее развитие, появились rvalue-ссылки, универсальные (передаваемые) ссылки, которые играют ключевую роль в реализации семантики перемещения — одном из самых значительных нововведений C++11.
Итак, попробуем рассказать о ссылках в C++ максимально подробно.
«Кастомные» клавиши для механической клавиатуры
![](https://habrastorage.org/r/w780/webt/jc/_b/kw/jc_bkwvworp-basebhhm4ltwxik.jpeg)
Здравствуйте, товарищи!
В новогодние каникулы дошли руки доделать кастомный набор клавиш для моей механической клавиатуры. Нанесение легенд на клавиши делалось по технологии сублимационной печати (анг. Dye-sublimation, dye-sub) и цель этой заметки - поделиться полученным опытом.
Chaos Constructions HackAround 2007
В рамках фестиваля проводятся семинары, конкурсы в реальном масштабе времени, показы видеозаписей (работ присланных на фестиваль, тематических подборок и лучших работ из архива фестиваля). Голосование производится путём обработки анкет заполненных посетителями. По результатам проведения конкурсов производится награждение.
Фестиваль тематически посвящён:
- Аспектам информационной безопасности;
- Операционным системам и ПО с открытым исходным кодом;
- Нетривиальным программно-аппаратным и сетевым решениям;
- Мнемотехнике и методологии решения задач (LifeHack).
Адрес проведения фестиваля: ЦВЗ «Манеж», Санкт-Петербург, Исаакиевская пл., 1. Метро «Садовая» или «Невский проспект»). Карта. От Московского вокзала (ст. м. Площадь Восстания / Маяковская) до ЦВЗ «Манеж» можно добраться на троллейбусе № 5, 22, автобусе № 3, 22, 27, маршрутном такси № 180, 190.
Время проведения: с 11 до 18 часов.
Стоимость посещения всех четырёх дней фестиваля: 200 рублей.
Информация
- В рейтинге
- Не участвует
- Откуда
- Санкт-Петербург и область, Россия
- Зарегистрирован
- Активность