Как стать автором
Обновить
84.5
Рейтинг

Assembler *

Язык программирования низкого уровня

Сначала показывать
Порог рейтинга

Прячем функцию от глаз исследователей

Информационная безопасность *Assembler *Реверс-инжиниринг *
Tutorial

На днях у меня спросили, как можно спрятать строку в исполняемом файле, что-бы "обратный инженер" не смог ее найти? Вопрос дилетантский, но так совпало, что в тот день я решал очередной челлендж на Hack The Box. Задание называется Bombs Landed и основная его изюминка в функции, которая динамически подгружалась в память. Из-за этого Ghidra не может найти и декомпилировать код.

Читать далее
Всего голосов 23: ↑16 и ↓7 +9
Просмотры 5.1K
Комментарии 16

Новости

Rust должен умереть, МГУ сделал замеры

Ненормальное программирование *Assembler *C *Rust *

В предыдущих сериях:



Медленно, но верно Раст проникает не только в умы сотрудников больших корпораций, но и в умы школьников и студентов. В этот раз мы поговорим о статье от студента МГУ: https://rustmustdie.com/.


Её репостнул Андрей Викторович Столяров, доцент кафедры алгоритмических языков факультета ВМК МГУ им. М. В. Ломоносова и по совместительству научрук студента-автора статьи.


Я бы сказал, что тут дело даже не в том, что он "неинтуитивный". Дело скорее в том, что компилятор раста сам решает, когда владение "должно" (с его, компилятора, точки зрения) перейти от одного игрока к другому. А решать это вообще-то должен программист, а не компилятор. Ну и начинается пляска вида "как заставить тупой компайлер сделать то, чего я хочу".
Бред это всё.

— А. В. Столяров
Кощунство!
Всего голосов 350: ↑331 и ↓19 +312
Просмотры 75K
Комментарии 226

Simics: Забиваем гвозди сваебоем

Блог компании Auriga Assembler *Системное программирование *Виртуализация *Отладка *
Tutorial

Любите ли вы отзывчивые программы так, как люблю их я? Любовь эта привела меня к Колибри ОС - невероятно шустрой операционной системе, которая запускает программу до того, как вы осознаете, что кликнули по ней. И недавно у неё нашли уязвимость: ping of death.

Так получилось, что моя первая работа была связана с симуляцией компьютерных систем – от серверов до мобильных устройств. И там мы использовали симулятор Simics. Этой системой пользуются крупные производители железа для опережающей разработки драйверов.

Если бы только можно было использовать Simics для отладки любительской ОС...

Читать далее
Всего голосов 25: ↑25 и ↓0 +25
Просмотры 2.2K
Комментарии 2

Проклятые Земли. Освежаем геймплей

Assembler *Разработка игр *Реверс-инжиниринг *Дизайн игр *
Из песочницы

Статья о том, как реверс-инжиниринг может дать новое дыхание старой игре и освежить её геймплей. Обзор уникальных фишек игры Проклятые Земли, изменение механик и добавление новых фишек.

Наверняка многие играли в Проклятые Земли и аддоны к ним лет 15, а то и все 22 года назад. При всех достоинствах этой игры, ей, как мне кажется, не хватало динамики, что мы и попробуем исправить, взяв в руки отладчик.

Читать далее
Всего голосов 75: ↑75 и ↓0 +75
Просмотры 11K
Комментарии 42

Написание ОС с нуля: Глава 2, Часть 3 — Терминал

Ненормальное программирование *Open source *Assembler *UEFI *

В предыдущей статье мы написали простейший загрузчик, печатающий на экран "Hello, World!" и завершающийся по нажанию клавиши. Сегодня напишем терминал, у которого будет несколько комманд, обновим библиотеку и сделаем ещё пару вещей.

Читать
Всего голосов 16: ↑16 и ↓0 +16
Просмотры 3.9K
Комментарии 10

ОС с нуля: Глава 2, Часть 1 — Да зачем нам этот Legacy

Ненормальное программирование *Open source *Assembler *UEFI *

Пару месяцев назад я решил начать серию статей про написание своей ОС с нуля. Описал написание Legacy MBR загрузчика и переход в защищенный режим (без прерываний) и ещё пару мелочей. Сегодня я решил, что попытаюсь "перезапустить" эту серию (сохранив нумерацию частей). Суть в том, что теперь будут использоваться актуальные на август 2022 года материалы, и разработанное ПО можно будет легко протестировать на своей (U)EFI-машине.

Читать
Всего голосов 32: ↑30 и ↓2 +28
Просмотры 11K
Комментарии 23

Все должны пойти на демосцену

Assembler *C *Конференции Дизайн Демосцена

Да, именно так должен называться анонс фестиваля компьютерного искусства и самодельной электроники, проходящего в этом году, 20-21 августа, неподалеку от Санкт-Петербурга. Название для анонса мне посоветовал человек с никнеймом @Superogue - основатель и ведущий онлайн-фестиваля демосцены Lovebyte. Он, в свою очередь, приводит в пример анонс фестиваля Outline 2022, который имел похожий заголовок: Everyone Should Go To A Demo Party.

Потому что демосцена - это круто.

Читать далее
Всего голосов 36: ↑33 и ↓3 +30
Просмотры 5K
Комментарии 15

Вторая жизнь китайского чудо-шнурка J2534

Assembler *C *Реверс-инжиниринг *Автомобильные гаджеты

Давным-давно, когда деревья были большими и вариации комплектаций одной модели автомобиля можно было перечислить пальцами одной руки, был куплен диагностический адаптер, о котором сегодня пойдет речь. Творение неизвестного китайца получило название Mini-VCI J2534. Откуда он взялся доподлинно неизвестно, но позиционируется как интерфейс для работы с различными Тойотами, а так же как J2534 совместимый адаптер (спойлер - нет). В момент покупки его было достаточно для диагностики и ковыряния в мозгах автомобилей тех лет, но прогресс не стоит на месте и в нынешних реалиях он если так можно выразиться - "не вывозит". О том, можно ли с этим что-то сделать и пойдет речь ниже.

Итак, знакомьтесь - наш пациент снаружи и внутри.

Читать далее
Всего голосов 61: ↑60 и ↓1 +59
Просмотры 14K
Комментарии 19

Как создать проект на ассемблере в STM32CubeIDE

Assembler *
Из песочницы

Доброго времени суток, сегодня я хотел бы поделиться своим опытом создания шаблона проекта в CubeIDE для программирование на Ассемблере.

Так как CubeIDE использует средства GNU то и синтаксис ассемблера у нас будет советующий. Для начала откроем CubeIDE и создадим новый проект. В качестве испытуемого микроконтроллера возьму STM32G030F6P6 уж очень мне они нравятся. А так данный способ работает и с другими сериями микроконтроллера STM32.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 3.7K
Комментарии 6

Сужение данных. Продолжение борьбы с переполнением

Программирование *Совершенный код *Assembler *Компиляторы *

Все началось с глупой ошибки. В тексте программы вместо оператора x=20; где x – целая переменная со знаком и размером в байт, случайно написали x=200;

И компилятор, что называется не моргнув глазом, сформировал команду записи в переменную x константы 0C8H, что вообще-то соответствовало оператору x=-56; Выяснилось, что за долгие годы эксплуатации этого компилятора ни одна собака ни один пользователь (включая и нас самих) никогда не писал подобных ляпов и поэтому ошибка в компиляторе оставалась незамеченной. А виноваты оказались команды сужения данных.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 1.7K
Комментарии 1

Соглашения о вызовах

Программирование *Assembler *C *Реверс-инжиниринг *Разработка под Windows *

Это стандартизированные методы реализации и вызова функций.

Соглашение о вызовах опредяют как функция вызывается, как функция управляет стеком и стековым кадром, как аргументы передаются в функцию, как функция возвращает значения.

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Просмотры 3.6K
Комментарии 11

Устройство Стека для Intel386

Assembler *Системное программирование **nix *
Из песочницы

Стек (от англ. Stack) - специально отведённое место в памяти для хранения временных данных. Он подчиняется следующим правилам

Читать далее
Всего голосов 11: ↑9 и ↓2 +7
Просмотры 5.8K
Комментарии 14

C++ разведка кросс-компиляции Linux->Windows

C++ *Assembler *Реверс-инжиниринг *

Эта история началась когда удобный для меня инструмент VSCode из за одного плагина на борту стал не совсем удобен. А именно, «natizyskunk.sftp» плагин, который позволяет подключится по протоколу (S)FTP к серверу, и вносить изменения на сервер, просто сохранив файл. Всё нечего, если бы настройки подключения к серверам не хранились в корне отдельно взятого проекта. Когда у тебя с десяток проектов, ещё можно потерпеть, но более 70 проектов и они все на разных серверах, то перенос и добавление в каждый из проектов актуальной настройки, например пароль, который периодически меняется, заставляет как минимум раздражённо искать подходящую настройку и с комбинацией клавиш Ctrl+C, Ctrl+V, менять устаревшие настройки или добавлять новые. В дальнейшем оказалось, что коллеги пользуются другими идентичными плагинами с названиями «liximomo.sftp», «doujinya.sftp-revived».

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Просмотры 3.4K
Комментарии 10

Как защищать границы массива без команды BOUND

Программирование *Совершенный код *Assembler *Компиляторы *

Я уже плакался по поводу исключения в x86-64 команд двоично-десятичной арифметики DAA/DAS и плакался по поводу отмены команды проверки целочисленного переполнения INTO. Теперь настала очередь плакаться по поводу выброшенной команды BOUND. Как говорится, леди и джентльмены, подставляйте свои жилетки и декольте. Начинаю плач.

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Просмотры 1.5K
Комментарии 1

Работа с внешней параллельной шиной на отечественном DSP процессоре 1967ВН028 фирмы Миландр

Assembler *Программирование микроконтроллеров *
Tutorial

Отечественный процессор 1967ВН028 от фирмы Milandr предназначен в первую очередь для решения вычислительных задач и поэтому на его борту есть всего два способа обмена данными с внешним миром. Один из них - работа с LVDS LINK портами (разобран в прошлых статьях) и второй это внешняя параллельная шина.

Читать далее
Всего голосов 24: ↑24 и ↓0 +24
Просмотры 4K
Комментарии 6

Простое руководство по атомарности в C++

Блог компании Издательский дом «Питер» Программирование *C++ *Assembler *Параллельное программирование *
Перевод

Часто возникает путаница с тем, что же понимается в компьютерных науках под «атомарностью». Как правило, атомарность – это свойство процесса, означающее, что он совершается за один шаг или операцию. Но в языке C++  атомарность определяется гораздо более специфичным образом. На самом деле, при использовании std::atomic  с классами и типами еще не гарантируется, что весь код будет подлинно атомарным. Хотя, атомарные типы и входят в состав языка C++, сами атомарные операции должны поддерживаться на уровне того аппаратного обеспечения, на котором работает программа. Эта статья – простое руководство, помогающее понять, что же представляет собой атомарность в C++.

Читать далее
Всего голосов 10: ↑8 и ↓2 +6
Просмотры 6.1K
Комментарии 10

ОС с нуля: Глава 1, Часть 2 — 32 лучше 16-ти

Assembler *
Tutorial

Хай Хабр! Это серия статей по написанию моей ОС с нуля. Я лютый фанат ретропрограммирования, поэтому я мгновенно забуду про существование EDК. Просьба не писать комменты по типу "BIOS давно устарела где UEFI?". Пишу это просто чтобы было, что почитать вечером и порелаксить. Спасибо.

Читать
Всего голосов 14: ↑12 и ↓2 +10
Просмотры 6.5K
Комментарии 11

Создание демки специально для HABR — Часть 3

Блог компании RUVDS.com Ненормальное программирование *Assembler *Демосцена Старое железо
Tutorial
Наконец-то мы подобрались к финальной части большой саги о создании демки для ПЭВМ «Микроша». В предыдущих первой и второй части я реализовал заходник, само видео вращения, и понял, как сделать звук. Теперь осталось всё свести воедино, исправить некоторые недочёты и добавить нормальную музыку. Но, как обычно, дьявол кроется в мелочах.
Читать дальше →
Всего голосов 68: ↑67 и ↓1 +66
Просмотры 3.2K
Комментарии 23

ОС с нуля: Глава 1, Часть 1 — Загрузчик

Assembler *
Tutorial

Хай Хабр! Это серия статей по написанию моей ОС с нуля. Я лютый фанат ретропрограммирования, поэтому я мгновенно забуду про существование EDК. Просьба не писать комменты по типу "BIOS давно устарела где UEFI?". Пишу это просто чтобы было, что почитать вечером и порелаксить. Спасибо.

Читать
Всего голосов 28: ↑27 и ↓1 +26
Просмотры 11K
Комментарии 58

Создание демки специально для HABR — Часть 2

Блог компании RUVDS.com Ненормальное программирование *Assembler *Демосцена Старое железо
Tutorial

В предыдущей части мы только начали входить во вкус создания демки, как статья неожиданно закончилась на самом интересном месте. Не буду сильно томить и продолжу описывать свой квест по созданию этой интересной программы. Борьба за размеры памяти, задержки, звук, всё в этой серии.
Читать дальше →
Всего голосов 76: ↑75 и ↓1 +74
Просмотры 4.3K
Комментарии 33

Вклад авторов