Приветствую!
В конце первой части статьи по исследованию саундбара Yamaha я упомянул о плачевном состоянии его безопасности. Но вот то, насколько оно плачевное, я тогда представлял не до конца.
Типизированный язык программирования
Приветствую!
В конце первой части статьи по исследованию саундбара Yamaha я упомянул о плачевном состоянии его безопасности. Но вот то, насколько оно плачевное, я тогда представлял не до конца.
Статья для первокурсников технических ВУЗов, которым повезло изучать Си в качестве первого языка программирования. В рамках данной работы расскажу и покажу, как избегать типовых ошибок при разработке, а если уж вы эту ошибку допустили - как быстро и безболезненно её найти.
Эта статья вторая в цикле по созданию crackme под linux amd64. В этой части мы создадим исполняемый файл, в котором каждая функция будет зашифрована собственным ключом, и будет расшифровываться только на время исполнения. Процесс создания будет полностью автоматизирован, то есть при добавлении нового кода или изменении старого никаких дополнительных действий делать будет не нужно. Код всего проекта находится в репозитории на github.
В программировании программы часто строятся иерархично. Один программный компонент вызывает функции из другого программного компонента. Как бы представить эту взаимосвязь в законченной программе?
Эту задачу можно решить прибегнув к языку Graphviz и утилитам cpp, dot, make, chrome.
Эта статья первая из цикла, в котором мы будем создавать crackme для linux amd64. В crackme будут реализованы шифрование каждой функции отдельным ключём и наномиты для противодействия отладке. В данной статье мы рассмотрим алгоритм встраивания ключа шифрования в код для усложнения расшифровки функций пользователем. Если стало интересно, прошу под кат.
Что такое Dendy? Что так любит детвора? Это электронная игра! Ооо, дендиии...
В этой статье я вам расскажу о своем первом опыте разработки игры для NES/Famicom консоли. Постараюсь рассказать о инструментах, которые использовал и о интересных особенностях разработки игр для Dendy с которыми столкнулся во время создания игры.
Продолжаем создавать модуль ядра в Линукс на примере виртуальной файловой системы.
Часть 1: Описание задачи, Модуль ядра
Часть 2: Модуль ядра, Регистрация файловой системы
Часть 3: Inode, Lookup
Что в результате получилось можно увидеть по ссылкам: демо-видео, код.
В связи с выпуском curl 8.4.0 мы публикуем рекомендации по безопасности и все подробности о CVE-2023-38545. Эта проблема является самой серьезной проблемой безопасности, обнаруженной в curl за долгое время. Для неё установили ВЫСОКИЙ приоритет.
Хотя рекомендации содержат все необходимые подробности. Я всё же решил сказать пару дополнительных слов и более подробно объяснить для всех, кто хочет понять, как эта уязвимость работает, и как это произошло.
Несколько лет назад я полностью перешел на Linux, и все меня устраивало за исключением отсутствия некоторых просто необходимых программ.
Несмотря на большое количество доступных инструментов поиска утечек памяти, в том числе от таких гигантов ИТ как FaceBook, существуют ряд ограничений применимости этих инструментов. В данном статье приводится сравнение существующих инструментов и их границы применимости.
По работе попалась несложная, но достаточно интересная задачка из области обработки данных. Так как она была связана с вычислениями над массивами, то я по-быстрому запрограммировал её на Фортране. Но мне стало интересно, насколько эффективным или неэффективным будет её решение на C или C++. Поэтому, если кто любит решать задачки среднего уровня сложности с литкода, тот может поучаствовать в предлагаемом конкурсе, где я упростил эту задачу, оставив только самое интересное.
Как известно электроника это наука о контактах. При этом в реальной разработке контакты часто отсутствуют или не там, где нужно.
Вот пришла электронная плата с производства. Как убедиться, что на этой конкретной плате всё корректно с контактами?
Для этого нужна какая-то технология. Назовем её Cross-Detect.
В первой части мы подготовили среду для легковесной разработки под STM32. Пора приступить к экспериментам.
Жил себе спокойно, писал кодик в Keil и не парился. Писал изначально на СИ, но кода становилось все больше, а я все ленивее, перешел на С++ и ARM Compiler V6,19. Но пришел к тому что простых прерываний в таймере стало не достаточно, даже можно сказать не правильный подход. Задался желанием подключить какую-нибудь ОС. Выбор пал на FreeRTOS. Довольный, скачиваю операционку, подтягиваю файлы к проекту на плюсах, и получаю кучу ошибок. Попытка их устранить не увенчалась успехом. Вспомнил что есть CubeMX и там можно сгенерировать проект с уже подключенным freertoos. Проверил, 5-ым компилятором и языком СИ, проект отлично собирается, но как только переименовываем main.c в .cpp и выбираем компилятор 6,19, получаем кучу ошибок на ядро ОС, на определение inline и т.п. Так я и не смог подружить подружить ОС и C++ в Keil. Пришлось заменить среду разработки, изначально выбор пал на CubeIDE, все отлично дружится и собирается, но в душе оставались сомнения. В итоге финальным выбором стал vscode, далее опишу как создать проект именно в нем.
Здесь на сайте уже есть статьи по сборке проекта, ими и руководствовался, но пошел немного другим путем.
В этом посте я расскажу о том, как выполнил частичный реверс-инжиниринг файлов данных Little Computer People, чтобы включить опции конфигурации, недоступные в оригинальной игре. Я написал и выпустил инструмент, работающий с LCP для Amiga, который можно скачать в конце поста.
Little Computer что?
В 1985 году на самых популярных 8-битных домашних компьютерных системах (и Atari ST) была выпущена «игра» под названием «Little Computer People», а через два года появилась версия и для Amiga. Сюжет игры заключается в том, что внутри вашего компьютера живёт маленький человечек, и это ПО позволяет вам следить за его действиями и взаимодействовать с ним. Если вы незнакомы с LCP, в Википедии есть хорошая статья о ней, которую стоит прочитать.
Уилл Райт (дизайнер The Sims) сказал, что игра в LCP и общение с одним из создателей LCP (Ричем Голдом) помогли ему в разработке концепций The Sims, и одно это делает LCP важной вехой в истории ПО.
Для многих людей LCP была скучной игрой. Считалось, что никто не захочет следить за жизнями персонажей на экране. Думаю, наблюдая за успехом франшизы The Sims и бесконечных реалити-шоу, можно с полным правом сказать, что это мнение было совершенно ошибочным. Возможно, LCP просто опередила своё время?
В электронных устройствах часто бывают тактовые кнопки. Например в Bluetooth колонке пять кнопок: увеличение/уменьшения громкости, перехода в режим загрузчика, остановки звука и прочего.
Обычно кнопок мало, а функционала на кнопки разработчикам хочется добавить много. Поэтому у кнопок иногда бывает два режима: короткое нажатие, долгое нажатие. На каждый режим нажатия прошивка назначает отдельный программный код обработчика.
Очевидно, что firmware должно как‑то однозначно распознавать тип нажатия на кнопку; короткое долгое.
Можно очень красиво и элегантно решить эту задачу прибегнув к конечно автоматной методологии разработки программного обеспечения.
Компилятор C на 500 строк Python? Почему бы и нет? Это сложно, даже если отказаться от многих функций. Но, в то же время, это ужасно интересно, а результат оказался на удивление функциональным и несложным для понимания!
Ваш аккаунт