Как стать автором
Обновить
88.65

Assembler *

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

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

Одноплатник на 155-й серии

Время на прочтение5 мин
Количество просмотров4.3K

Эта история началась с ухода в отпуск зимой. Вы только представьте! Полярная ночь, темно хоть глаз выколи и дикий мороз. И вот сижу я такой страдалец, не зная, чем себя занять горемычного. А тут выскакивает статья, что японцы собрали однобитный компьютер на четырех микросхемах. (Naoto64). И вот то ли от безделья, то ли от тоски, или азарт меня одолел, но решил я попробовать собрать «одноплатник» с минимальным количеством микросхем. Под словом «минимальным» я подразумеваю компромисс между функционалом и лишним корпусом микросхемы. В итоге получилось при минимальной комплектации 26 микросхем. Это конечно гораздо больше, чем у Naoto64, но за то это уже 4-х битный «одноплатник».

Читать далее
Всего голосов 75: ↑85.5 и ↓-10.5+96
Комментарии21

Новости

Взлом вашей первой программы

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров5K

Наша задача - сделать так, чтобы программа выводила "Good" в независимости от того, что пользователь ввёл в поле пароля. Если вы захотели декомпилировать данную программу, закинув EXE-файл в программу по типу dotPeek или ILSpy, то у вас ничего не выйдет. Ведь данная программа написана не на C#, исходный код которого можно легко посмотреть, а на C++, декомпилировать который нельзя.

Читать дальше →
Всего голосов 17: ↑18.5 и ↓-1.5+20
Комментарии14

Кто реально угрожает C++ (нет, Rust, не ты)

Время на прочтение14 мин
Количество просмотров70K

Привет! Меня зовут Александр Каленюк, и я крепко подсел на C++. Пишу на C++ 18 лет кряду, и все эти годы отчаянно пытаюсь избавиться от этой разрушительной зависимости.

Всё началось в конце 2005 года, когда мне довелось писать движок для симуляции 3D-пространства. В этом движке было буквально всё, чем язык C++ мог похвастаться в 2005 году. Трёхзвёздочные указатели, восьмиуровневые зависимости, C-подобные макросы повсюду. Кое-где – вкрапления ассемблера. Итераторы в стиле Степанова и мета-код в стиле Александреску. В общем, всё. Кроме ответа на самый важный вопрос: зачем?

Читать далее
Всего голосов 213: ↑224.5 и ↓-11.5+236
Комментарии361

Рисуем рабочий процессор в Paint и запускаем на нём ОС | Ритуал по призыву демона Тьюринга

Уровень сложностиПростой
Время на прочтение28 мин
Количество просмотров14K


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

Термос этот он нашёл на улице и хотел перепрошить его маленький и беззащитный Cortex-M0+.
Человек бредил. Раз в пару минут его глаза загорались и он издавал душераздирающий крик: «Если что-то существует, то на этом можно запустить Doom!».

Но действительно ли это так? И что вообще значит «запустить»?

Почему нельзя просто вывести изображение логотипа или распиновать VGA для вывода изображения на дисплей абсолютно любого устройства?
Ведь все так и делают)


Сегодня мы узнаем, как может выглядеть самый примитивный девайс, обладающий свойствами компьютера и способный полноценно запустить любой алгоритм.

С этой целью мы обратимся к немного странным, но всё же незаслуженно забытым языкам программирования. Когнитивная сложность дальнейшего текста обещает быть минимальной, даже непосредственно ассемблерного программирования в статье не будет.

Ну а если вы всё ещё здесь — добро пожаловать под кат.
Читать дальше →
Всего голосов 76: ↑88.5 и ↓-12.5+101
Комментарии16

Истории

Анатомия Hello World на языке C

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров22K

Эта статья посвящена программе Hello World, написанной на C. Это максимальный уровень, на который можно добраться с языком высокого уровня, не беспокоясь при этом о том, что конкретно язык делает в интерпретаторе/компиляторе/JIT перед выполнением программы.

Изначально я хотел написать статью так, чтобы она была понятна любому, умеющему кодить, но теперь думаю, что читателю полезно иметь хотя бы некоторые знания по C или ассемблеру.
Читать дальше →
Всего голосов 108: ↑124 и ↓-16+140
Комментарии47

Разбираем на винтики учебный процессор TOY

Время на прочтение11 мин
Количество просмотров2.6K

А давайте возьмём простейший процессор и напишем его эмулятор на Python. Будем кормить его бинарниками и дебажить.

Статья для тех, кто всегда хотел разобраться в машинном коде, но боялся начать.

Читать далее
Всего голосов 10: ↑12 и ↓-2+14
Комментарии6

16-битная операционная система на коленках

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров17K

В мире компьютерных наук мало что может сравниться с созданием собственной операционной системы. В этой статье мы погрузимся в увлекательный мир разработки операционных систем, создав 16-битную ОС с помощью языка ассемблера NASM под архитектуру процессоров Intel x86-64. Мы рассмотрим каждый этап разработки, начиная с основ и заканчивая реализацией ключевых компонентов.

Заменит Windows?
Всего голосов 40: ↑46 и ↓-6+52
Комментарии34

Шифр Цезаря на Ассемблере

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4.8K

Друзья, коллеги, всех приветствую! В этой статье мы напишем шифратор на грязном "макро-чистом" Ассемблере и в качестве элементарного шифра будем использовать Шифр Цезаря (Шифр сдвига с ключом k = n). Статья написана для новичков, которые могут погрузиться в мир "первой" криптографии. З.Ы. Код можно доработать, как вы захотите (например, реализовать другой шифр), и использовать, например, в курсовой (в ВУЗе). Благо, в профильных ВУЗах еще уделяют какое-то время языку Ассемблера :)

Читать далее
Всего голосов 12: ↑11.5 и ↓0.5+11
Комментарии7

KatWalk C2: ч.5: Учимся разбирать ARM в Ghidra (aka оверклокинг и багфиксинг)

Уровень сложностиСредний
Время на прочтение23 мин
Количество просмотров1.2K

"Что б они ни делали -- не идут дела. Видимо в прошивке багов дофига". Как я напомнил в прошлой статье (где я подготовил утилиты для перепрошивки сенсоров) -- я рассказываю про платформу для VR игр, как с ней интегрироваться и как добраться до ее сенсоров напрямую.

Её исходный ресивер обновляет сенсоры с частотой в 86Гц, тогда как технически возможно разогнать до 133 Гц, получив ощутимо ниже задержки, но связь была нестабильной.

Давайте начнём погружение в сенсоры -- посмотрим, что за игра ghidra_11.0_PUBLIC установлена у меня в C:\Games, заглянем одним глазком в саму прошивку и поковыряемся там грязными патчиками, да исправим race condition плюс выкинем немного отладочных глюков. В общем, готовимся к погружению. В этот раз -- всё серьёзно.

Ныряем
Всего голосов 8: ↑8.5 и ↓-0.5+9
Комментарии2

Ассемблер: x86/x86_64/Arm32/Arm64

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров8.1K

Я достаточно давно решил ознакомится с ассемблером архитектуры Arm. По большей части для ознакомления и понимания внутренних процессов архитектуры. Чем больше я изучал литературу и различные источники, тем больше я понимал, что нужна практика. Я решил вспомнить ассемблер для x86-х машин и заодно потренироваться на архитектуре Arm.

Но как всегда для практики надо быть подготовленным, а как оказалось, я был не подготовлен...

Читать далее
Всего голосов 15: ↑14 и ↓1+13
Комментарии34

И вновь KolibriOS! И вновь ассемблер!.

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров4.8K

В прошлой статье, я решил потестировать ассемблер на данной ОС. Но я ни когда не ищу лёгких путей и потому решил окунуться в мир KolibriOS и программировать используя только данную ОС. Всё что я смог выяснить, это то что давно когда-то что-то делали и на данный момент, увы, многое забросили...

Но далеко не всё так плохо как кажется! В KolibriOS есть готовый редактор кода с подсветкой CEdit, и он поддерживает подсветку для нескольких языков программирования. Но я не уверен что он умеет компилировать под все эти языки. Но как минимум текст набрать можно. Fasm поддерживается полностью и собирать/запускать/отлаживать приложения можно "используя" данный редактор (не совсем, редактор запускает отдельно компилятор и так же запускает отдельно отладчик), что и позволяет полноценно разрабатывать программы.

Я бы хотел сразу предупредить, практически ни какого обучения в статье не будет. Всё рассчитано на то, что вы уже хотя бы немного знаете ассемблер x86 и уже создавали простые программы под данную архитектуру (под Windows, Dos, Linux, а так может и MacOS).

Читать далее
Всего голосов 24: ↑24 и ↓0+24
Комментарии7

Фаззинг библиотек

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров2.9K

Ещё недавно, как я начал изучать веб хакинг, я счёл интересным занятие исследовать Linux и Windows на предмет бинарных уязвимостей. Хотя легально заработать в одиночку хакером у нас в России я думаю можно только веб хакингом, я всё равно хочу изучать все интересующие аспекты атакующей и защищающей стороны. Кто знает, вдруг я когда-нибудь буду в red team. Ну а пока я просто грызу гранит науки.

Слегка поразмыслив над решением задачи, я определил что нужно для осуществления моей проблемы. Я не знаю как другие проводят фаззинг библиотек, у которых нет исходных текстов, но додумался до одного варианта. Далее будут два примера для Linux и Windows.

Читать далее
Всего голосов 7: ↑6 и ↓1+5
Комментарии31

MenuetOS, которая умещается на дискете, снова обновилась: что «выросло» в новой версии

Время на прочтение4 мин
Количество просмотров8.7K

Некоторые читатели Хабра, вероятно, дискет и в руках не держали, поскольку те вышли из обращения много лет назад. Но ряд современных программ и «железа» всё ещё с ними связан. Например, проект MenuetOS представляет собой операционную систему, которая умещается как раз на дискете. Дело в том, что написана она на ассемблере, а команда разработчиков заботится о приемлемом соотношении объём/функциональность. Насколько можно судить, получается у них всё это весьма неплохо. Подробности о новинке — под катом.

Читать далее
Всего голосов 29: ↑28 и ↓1+27
Комментарии26

Ближайшие события

One day offer от ВСК
Дата16 – 17 мая
Время09:00 – 18:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн
Антиконференция X5 Future Night
Дата30 мая
Время11:00 – 23:00
Место
Онлайн
Конференция «IT IS CONF 2024»
Дата20 июня
Время09:00 – 19:00
Место
Екатеринбург
Summer Merge
Дата28 – 30 июня
Время11:00
Место
Ульяновская область

KolibriOS: пробуем ассемблер

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров9.3K

Решил потренироваться на ассемблере под x86 и выбор мой пал на KolibryOS. Ведь как-никак это ОС была написана на ассемблере и для использования ассемблера. И я хотел именно из самой KolibriOS писать код. Но... Наверное, зря я это всё затеял.

Как оказалось, примеров кода не мало и не много. А так как я привык к Dos, Windows или Linux, то и ожидал что-нибудь в этом роде. Код, код и ещё раз код. Макросы не так часто встречаются. Ну и уж точно не весь код из одних макросов (утрирую).

Пример кода из «официального источника» вносит больше сумятицы, чем понимания, что происходит в данном коде. И... там нет никакого объяснения этим «буквенным значениям». Есть только то, что ссылаются на файл «macros.inc». Если просматривать источники интернета, то где‑то более понятно написано и даже рассказывают, что взять «macros.inc» (и многие другие файлы можно на SVN KolibriOS и, как оказалось, ещё можно на GitHub (дублируется?).

Покопавшись в файле «macros.inc», а так же на просторах интернета и найдя пример (смотрите код Fasm), я понял, что всё становится на свои места и более‑менее проясняется.

Читать далее
Всего голосов 31: ↑30 и ↓1+29
Комментарии37

Взлом аппаратного ключа методом veni, vidi, vici

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров16K

К одному очень дорогому оборудованию для работы управляющей программы нужен аппаратный ключ с зашитой датой, указывающей, когда право использования оборудования кончается. За ключи исправно платили заграничному вендору, но после санкций это стало невозможным и оборудование стало простаивать. Важно, что интернет не использовался для активации ключа. Значит всё необходимое в ключ зашито. Если корпус ключа открыть, то видна одна микросхема FT232R с небольшой обвязкой.

Задача: Сделать так, чтобы можно было пользоваться оборудованием. Дистрибутив софта, требующего ключ, есть. Работает он под Windows. Просроченный ключ есть. Оборудованию около 10 лет.

Ниже описан путь решения со всеми ошибками.

Прочитать историю
Всего голосов 188: ↑185 и ↓3+182
Комментарии26

Взлом аппаратного ключа методом veni, vidi, vici

Уровень сложностиСредний
Время на прочтение19 мин
Количество просмотров16K

К одному очень дорогому оборудованию для работы управляющей программы нужен аппаратный ключ с зашитой датой, указывающей, когда право использования оборудования кончается. За ключи исправно платили заграничному вендору, но после санкций это стало невозможным и оборудование стало простаивать. Важно, что интернет не использовался для активации ключа. Значит всё необходимое в ключ зашито. Если корпус ключа открыть, то видна одна микросхема FT232R с небольшой обвязкой.

Задача: Сделать так, чтобы можно было пользоваться оборудованием. Дистрибутив софта, требующего ключ, есть. Работает он под Windows. Просроченный ключ есть. Оборудованию около 10 лет.

Ниже описан путь решения со всеми ошибками.

Прочитать историю
Всего голосов 188: ↑185 и ↓3+182
Комментарии26

«Отучаем» WinFXNet от жадности (часть 1)

Уровень сложностиПростой
Время на прочтение18 мин
Количество просмотров9.8K

Предыстория

В сфере АСУ ТП инженерам по работе приходится не только писать ПО, но и использовать готовое ПО от производителей оборудования. В связи с санкциями, многие поставщики покинули РФ, а оборудование и ПО необходимо продолжать эксплуатировать дальше.

В данной статье будет расмотрена WinFXNet - программа производителя Schneider Electric (ESMI) для конфигурирования станций пожарной сигнализации серии Esmi FX. К сожалению, из-за санкций, ключ USB Esmi FX FFS00393016 приобрести нельзя, а он, в свою очередь, имеет встроенный таймер, который настроен на 4-летний период. У многих данный ключ по времени уже закончился, плюс скоро закончится и лицензия на само ПО (файл формата lic). Поэтому достаем дизассемблеры и посмотрим, можно ли обойти данную защиту.

Disclaimer: Данная заметка написана в ознакомительных целях и не является руководством к действиям. Хотя, понимая всю безвыходность данной ситуации, как временное решение имеет право на жизнь, но решать только вам. Статья написана как туториал, поэтому постараюсь детально описать все шаги поиска нужных мест в программе.

Приступить к анализу
Всего голосов 101: ↑96 и ↓5+91
Комментарии28

«Пиратский» Google Chrome в Microsoft Windows 7 год спустя. И примкнувший к ним MS EDGE, Opera, Brave. Полная версия

Уровень сложностиСредний
Время на прочтение22 мин
Количество просмотров38K

Пиратство растёт, милорд!

Google Chrome для Windows 7 - детальный технический отчёт, каким образом актуальная версия популярнейшего браузера всё равно работает в «семёрке» даже спустя год после официального прекращения её поддержки корпорацией. Реакция Google LLC или почему пиратство только набирает обороты?

Читать далее
Всего голосов 133: ↑119 и ↓14+105
Комментарии159

Какие бывают Cortex-M7 ARM-ы, периферия, шины, память, … DMA

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров6.1K

На рисунке приведена структурная схема современного, одного из самых навороченных (я подозреваю) 32-битного ARM процессора или микроконтроллера-microcontroller, в документации используются оба термина: high-performance Flash microcontroller (MCU) based on the 32-bit ARM Cortex-M7 RISC (х.хх CoreMark/MHz) processor.

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

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

Читать далее
Всего голосов 16: ↑15 и ↓1+14
Комментарии5

Мой вам подарок к Новому году или как наконец запустил то, что надо было давно запустить…

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров38K

КДПВ


Немножко истории


Начну с истории вопроса.


Очень давно я написал Fresh IDE – навороченнoe IDE для программирования на ассемблере, а точнее на FlatAssembler.


Fresh IDE долгие годы меня полностью устраивал, поэтому я с перерывами выпустил 2 главные версии и начал просто его использовать, время от времени внося какие-то исправления и изредка новые функции.


Когда перешел полностью на Linux, оказалось, что Fresh IDE прекрасно работает под WINE, и я продолжил им пользоваться без угрызений совести. В процессе даже удалось исправить несколько багов WINE (вот, вот и вот).


Как бы то ни было, но я начал писать библиотеку для переносимости ассемблерных программ между Linux и Windows (и KolibriOS). Одновременно с этим задумался и над тем, чтобы сделать Fresh IDE переносимым. Из-за архитектуры библиотеки, огромная часть кода уже и так была переносимой. А точнее все, что не касалось GUI. К сожалению, GUI был полностью написан на Win32 API и его нельзя просто так перенести на другие платформы.


Поэтому и пришлось начинать все сначала. И третья версия Fresh IDE писалась почти с нуля.

Читать дальше →
Всего голосов 267: ↑267 и ↓0+267
Комментарии95
1
23 ...