Короткий ответ: нет. Тем не менее, раз про это вновь и вновь спрашивают на Reddit, Stack Overflow и других сайтах, пришло время подробно разобрать эту тему. Оказывается, есть много интересного, о чём можно порассуждать.
C *
Типизированный язык программирования
Xv6: учебная Unix-подобная ОС. Инструменты для сборки и запуска xv6 под QEMU
Эта инструкция - приложение к книге об учебной ОС xv6.
Xv6 работает на RISC-V. Для сборки кода xv6 и запуска под QEMU понадобятся RISC-V версии инструментов: QEMU 5.1+, GDB 8.3+, GCC, и Binutils.
PAM backdoor by artrone ЧАСТЬ 2/2
Добро пожаловать во вторую часть статьи "PAM backdoor". В предыдущей части мы обсудили, что такое PAM (Pluggable Authentication Modules) и как можно создать собственный модуль для PAM. В этой второй части мы пойдём немного по другому пути и изменим уже существующий модуль, а также настроим логирование для сбора паролей.
Кто не читал первую часть, вам сюда.
PAM backdoor by artrone ЧАСТЬ 2/2
Добро пожаловать во вторую часть статьи "PAM backdoor". В предыдущей части мы обсудили, что такое PAM (Pluggable Authentication Modules) и как можно создать собственный модуль для PAM. В этой второй части мы пойдём немного по другому пути и изменим уже существующий модуль, а также настроим логирование для сбора паролей.
Кто не читал первую часть, вам сюда.
Истории
PAM backdoor by artrone ЧАСТЬ 1/2
Внимание! Статья несёт исключительно информативный характер. Подобные действия преследуются по закону!
Привет! В двух статьях мы сфокусируемся на том, как злоумышленники могут использовать модуль PAM для создания backdoor'ов, погрузимся в мир аутентификации, раскроем работу PAM под капотом, научимся скрывать свои следы и, самое главное, реализуем это всё на практике.
Замешиваем файлы в тэги. Часть 4
Продолжаем создавать модуль ядра в Линукс на примере виртуальной файловой системы.
Часть 1: Описание задачи, Модуль ядра
...
Часть 4: Inode-операции: symlink, unlink
Что нового в IMSProg?
Пару месяцев назад я писал историю создания программатора микросхем CH341a для Linux систем. Благодаря вашим отзывам и комментариям программа изменилась, надеюсь в лучшую сторону.
Xv6: учебная Unix-подобная ОС. Глава 2. Устройство операционной системы
Операционная система выполняет несколько процессов одновременно. ОС распределяет время работы с ресурсами компьютера между процессами. ОС даст каждому процессу шанс на выполнение, даже если число процессов больше числа процессоров.
ОС изолирует процессы друг от друга так, что ошибка в одном процессе не нарушит работу других.
ОС позволяет процессам взаимодействовать - обмениваться данными и работать совместно.
Глава 2 рассказывает, как xv6 выполняет эти требования, о процессах xv6 и как xv6 запускает первый процесс.
Зачем Программисту Микроконтроллеров Численные Методы?
В программировании микроконтроллеров иногда прямо в коде приходится решать уравнения. Порой решение не получается выразить аналитически.
В математике бывают такие случаи, когда есть функция, которая просто выражается элементарными функциями. А вот обратную функцию выразить аналитически либо очень трудно, либо вообще невозможно.
В тексте показано как применять бинарный поиск для вычисления значений сложной тригонометрической обратной функций.
Bootloader. Part 1. Нюансы Cortex-M, устройство памяти stm32 и преднастройка
Решил начать цикл статей на тему бутлоадера для STM32. Возможно это послужит руководством для начинающих разработчиков, а может поможет самым настоящим демиургам в сфере embedded разработки.
Xv6: учебная Unix-подобная ОС. Глава 1. Интерфейсы операционной системы
Эта книга рассказывает о принципах работы операционных систем на примере xv6. Операционная система xv6 реализует базовый интерфейс, который Кен Томпсон и Деннис Ритчи предложили в операционной системе Unix, и подражает внутреннему устройству Unix. Комбинации простейших механизмов Unix дают удивительную свободу действий. Современные операционные системы признали успех Unix и реализуют похожие интерфейсы - BSD, Linux, macOS, Solaris, и даже Microsoft Windows. Изучение xv6 поможет понять работу и других операционных систем.
Делаю игрулю на Playdate на чистом C. Глава 1
Не так давно (год назад на самом деле) я приобрёл необычную игровую консоль Playdate.
Она такая маленькая, жёлтая и имеет крутилку (крэнк или иногда в дословном переводе с испанского кривошип). Ах да, у неё еще экран монохромный. Не чёрно-белый - чёрно-белый экран умеет показывать оттенки серого
Передавать пустые срезы между Rust и C/C++ на удивление сложно
Моя основная работа связана с браузерами и криптографией, а не компиляторами. Но я нередко сталкиваюсь с ситуацией, когда мне приходится проводить больше рабочего времени за изучением семантики языков программирования, чем за фактическим их использованием. Так что эта статья будет посвящена обсуждению острой межязыковой проблемы, касающейся С, С++ и Rust.
В общих чертах она выглядит так:
- В правила работы с указателями и
memcpy
в С не заложены грамотные способы представления пустого среза памяти. - В С++ с правилами указателей проблем нет, но поведение
memcpy
здесь аналогично её поведению в С. - Интерфейс внешних функций (Foreign Function Interface, FFI) в Rust не лишён накладных издержек. Rust использует несовместимое с C/C++ представление срезов, требуя их преобразования при передаче в обоих направлениях. При этом о преобразовании очень легко забыть.
- Срезы в Rust также несовместимы с арифметикой указателей, что создаёт проблемы в работе итератора срезов стандартной библиотеки. (Обновление от 2024-01-16: похоже, над этой проблемой работают).
Поскольку проблемы FFI касаются нескольких языков, я писал статью в качестве общей справки, описывающей их несогласованность.
Ближайшие события
Umka обрастает мясом: улучшения в языке, менеджер пакетов, применение в играх
Только что вышла новая версия 1.3 моего встраиваемого скриптового языка Umka со статической типизацией. С момента выпуска версии 1.0 язык пополнился замыканиями, инструкцией выбора switch
по фактическому типу интерфейса, тернарным условным оператором, более удобным API для взаимодействия с кодом на C, другими мелкими радостями.
Маленькое, но упрямое сообщество пользователей Umka всерьёз озаботилось библиотеками, появился менеджер пакетов UmBox, загружающий и устанавливающий библиотеки и отслеживающий их зависимости.
Umka живёт в ядре фреймворка Tophat для создания 2D игр. На основе этого фреймворка развивается платформер-головоломка SaveScum. Коллекция пробных уровней для игры была выпущена в декабре в виде адвент-календаря, принеся с собой дух простого геймерского счастья в наш проект.
Как ускорить бекап данных из OracleDB в 5 раз? Или в 10. Можно и больше…
Несколько лет назад перед нами встала встала проблема скорости бекапов с наших серверов баз данных. Проблема была нетиповая, поэтому и с решением возникли сложности. Тем не менее спустя пару лет после внедрения можно сказать, что свою проблему мы успешно решили. Может быть, это поможет кому-то еще.
Высокоскоростной SPI to Ethernet конвертер, при чем здесь DMA?
Чисто техническое, но не очень глубокое описание реализованной задачи с самыми простыми расчетами. Надеюсь, будет полезно соответствующим техническим специалистам или для тех, кто хочет понимать что-то про объем знаний необходимых для использования DMA над некоторым устройством периферии, например SPI.
Относительно использования Ethernet, дальше нескольких упоминаний речь не идет. Как-то, к слову, не пришлось, еще пока. Не обессудьте.
Про́клятый огонь, или магия препроцессора C
Задавались ли вы когда-нибудь вопросом, можно ли полноценно программировать при помощи директивы #define
в языке C? Полнота по Тьюрингу шаблонов C++ известна весьма широко, например, люди пишут трассировщики лучей, делающие все вычисления во время компиляции (вместо времени исполнения). А как обстоят дела с препроцессором C? Вопрос оказался сильно нетривиальнее, и эта история является, на мой вкус, отличным анекдотом для курса лекций по теории компиляторов, что я готовлю в данный момент. В частности, для лучшего понимания происходящего здесь, рекомендую ознакомиться со второй статьёй, которую я опубликовал параллельно этой: лексер и парсер.
Чтобы не было обманутых впечатлений, предупрежу сразу, что рейтрейсера не будет, но про́клятый код будет очень даже! Итак, поехали. Для начала, почему я вообще задался этим вопросом? Если обычный код компьютерной графики вам скучен, следующий раздел можно пропустить, перематывайте до последней картинки.
Когда Random совсем не случаен
Этот пост — рассказ об истории, случившейся больше десятка лет назад; её код был мной утерян. Поэтому прошу простить меня, если я не вспомню точно все подробности. Кроме того, некоторые подробности упрощены, чтобы от этой статьи могли получить все, кому нравится компьютерная безопасность, а не только любители World of Warcraft (хотя, полагаю, диаграмма Венна этих двух групп сильно пересекается).
Когда мне было примерно 14 лет, я узнал об игре World of Warcraft компании Blizzard Games, и она сразу же меня увлекла. Вскоре после этого я нашёл аддоны, позволявшие модифицировать внешний вид и функциональность интерфейса игры. Однако не все скачанные мной аддоны делали именно то, что мне было нужно. Мне хотелось большего, поэтому я начал разбираться, как они сделаны.
Забавно, что в моём серьёзном увлечении программированием можно обвинить World of Warcraft. Оказалось, что код был написан на языке Lua. Аддоны — это просто парочка файлов исходного кода на .lua
в папке, напрямую загружаемых в игру. Барьер входа был невероятно низок: достаточно отредактировать файл, сохранить его и перезапустить интерфейс. То, что игра загружала твой исходный код и ты мог видеть его работу, было настоящим волшебством!
Мне это невероятно нравилось, и вскоре я уже практически не играл в игру, а занимался только написанием аддонов. За следующие два года я опубликовал приличное их количество; в большинстве случаев я просто копировал чужой код и рефакторил/комбинировал/настраивал его под свои нужды.
Зимняя школа по RISC-V — актуальные знания по перспективной открытой архитектуре от экспертов
С 2 по 8 февраля пройдет Зимняя школа «Программирование для RISC-V» — недельный интенсив от YADRO и ННГУ им. Н.И. Лобачевского. Программа состоит из двух частей: онлайн-лектория и очной проектной работы.
На бесплатных онлайн-лекциях все желающие познакомятся с основами разработки на основе открытой архитектуры RISC-V — перспективной технологии, предназначенной для создания процессоров, микроконтроллеров и разработки ПО. Лекции позволят вам выстроить полноценное представление об архитектуре и ее особенностях: вы начнете с азов, а закончите изучением векторных расширений RISC-V и ее возможностей для высокопроизводительных вычислений. Информация подойдет и новичкам в теме, и тем, кто знает теорию и хочет делать первые практические шаги в разработке под новую архитектуру.
А студенты очной формы обучения смогут решить реальную задачу, связанную с RISC-V, под руководством преподавателей Университета Лобачевского и разработчиков YADRO на базе вуза в Нижнем Новгороде.
Подробнее о лекциях и проектах, а также о том, как стать участником школы, читайте под катом.
Создание deb-пакета для самых маленьких. Из простого проекта с разделяемыми библиотеками
Краткая инструкция с некоторыми опущениями о том, как собрать deb-пакет из собственного проекта быстро, без регистрации и смс
Вклад авторов
Andrey2008 3660.9SvyatoslavMC 1738.0alizar 714.0Firemoon 576.8zzeng 535.0humbug 523.0m1rko 449.6anastasiak2512 422.0qrdl 411.0tyomitch 405.2