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

Assembler *

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

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

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

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

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

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

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

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

Новости

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Истории

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

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

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

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

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

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

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

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

Предыстория

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

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

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

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

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

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

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

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

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

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

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

На рисунке приведена структурная схема современного, одного из самых навороченных (я подозреваю) 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

Мягкое знакомство с дополнительным кодом

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

Недавно, общаясь по видеосвязи с другом, я рассказывал ему о своих идеях по реализации нового продукта. В разговоре я упомянул добавление больших знаковых чисел в ассемблере с использованием дополнительного кода, на что получил от собеседника вопрос: «Что такое дополнительный код?» Меня немного удивила его неосведомлённость. Он уже больше 30 лет программирует на Java. Java и Python программисты (а также другие, работающие с языками *с придыханием* вроде Commodore / MicroSoft BASIC) не сталкиваются с нативным типом беззнакового целого числа. В этих языках подобные тонкости реализуются за них.

Всё это круто, но компьютер, за которым вы сидите, внутренне обрабатывает такие числа довольно простым способом, и хорошо бы знать, как именно это происходит.

Плюс это всё же наука. Так что давайте разбираться.
Читать дальше →
Всего голосов 62: ↑60 и ↓2 +58
Комментарии 18

Ускоряем программу для 50-летнего процессора на 180000%

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

В прошлом году я написал программу, вычисляющую 255 цифр числа π на самом первом микропроцессоре от Intel - 4004. В той статье я упоминал рекорд ENIAC'a - 2035 цифр [^1], но побить его не смог. Настало время закрыть гештальт. В этот раз возьмём одного из преемников от Intel - 4040.

Читать далее
Всего голосов 289: ↑287 и ↓2 +285
Комментарии 41

На пути из Web к Native, часть 1

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

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

Оставь надежду, всяк сюда входящий. Или.. нет..?

Имея небольшой опыт в веб-программировании, мне казалось, что все не так плохо. И так по началу и было. За вопрос я взялся основательно: без задачи — нет учебы.

Я решил поставить перед собой большую цель: давным-давно...

Читать далее
Всего голосов 19: ↑17 и ↓2 +15
Комментарии 17

Пишем printf на языке ассемблера FASM

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

Иногда, и чаще всего спонтанно, у меня появляется дикое желание реализовывать что-либо на языке ассемблера, а потом прикручивать это "что-либо" на уровни выше. И примерно на такой же реактивной тяге желания у меня появилась идея реализовать с нуля функцию printf, которую можно было бы далее подключать к языку Си и пользоваться ею на здоровье без стандартных библиотек.

Читать далее
Всего голосов 55: ↑54 и ↓1 +53
Комментарии 5

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

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Просмотр монохромных артов ZXART на ATARI XL/XE

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

В данной статье мы познакомимся с таким явлением как арты для платформы ZX Spectrum и его клонов, немного ковырнём формат файлов SCR (рассматриваем только стандартные 6144 и 6912), узнаем как можно такое запихнуть в ATARI и немножко покодим на C# и ассемблере для 6502.

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

Проклятые Земли. Изменяем движок игры! Подробности + ПРИМЕР реверсинга движка

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

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

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

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

Я мыслю MOV EAX, 1

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

Чем больше усилий ты прикладываешь, тем лучше это у тебя получается. Программирование не исключение, и чтобы с уверенностью сказать: "Я могу написать это" нужно много работать. Эта статья о том с какого языка начать путь в программировании и о том как понять принципы работы компьютера на низком уровне.

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

Как я писал свою первую игру для Dendy

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

Что такое Dendy? Что так любит детвора? Это электронная игра! Ооо, дендиии...

В этой статье я вам расскажу о своем первом опыте разработки игры для NES/Famicom консоли. Постараюсь рассказать о инструментах, которые использовал и о интересных особенностях разработки игр для Dendy с которыми столкнулся во время создания игры.

Погрузиться в мир Dendy
Всего голосов 70: ↑70 и ↓0 +70
Комментарии 22

Перевод книги Windows APT Warfare

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

Всем привет. Решил поделиться новостью, может кому-то будет интересно. Я закончил перевод книги Windows APT Warfare. В своем роде очень интересное чтиво, для тех кто занимается ассемблером, малварью и информационной безопасностью. Первую часть оставлю здесь. Всю остальную книгу можно забрать на дамаге, ныне — xss.is. Может кто-то сможет сверстать в PDF, буду очень благодарен. Всем спасибо.
Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 6

Оскар Толедо: потомственный волшебник

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

Семья Толедо (пригород Мехико) и разнообразная техника их кустарного производства, в том числе компьютер, 1980 год

Оскар Толедо — пятикратный победитель программистского конкурса IOCCC, (Международный конкурс обфусцированного кода на С). Он интересен не только сам по себе, но ещё в контексте своей семьи. Это уникальные люди, которые скромно живут в пригороде Мехико и вообще не стремятся к известности. 25 лет назад они написали свою ОС, браузер и кучу софта для него.

Оскар Толедо — просто продолжатель семейного дела, которое началось примерно в 70-е годы прошлого века.
Читать дальше →
Всего голосов 66: ↑64 и ↓2 +62
Комментарии 8

Выделение регионов памяти в C++: советы и приёмы

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

Эта статья обсуждалась на Hacker News.

В течение минувшего года я шлифовал мой подход к выделению регионов. Практика показывает, что это эффективный, простой и быстрый подход; обычно его используют в качестве средства для сборки мусора без издержек. В зависимости от того, что нам требуется, в аллокаторе может быть всего 7–25 строк кода — идеально для случаев, когда мы работаем без среды исполнения. Теперь, когда я окончательно сформулировал ключевые аспекты моего подхода, самое время их задокументировать и рассказать вам о том, что мне удалось выучить. Определённо, это не единственный возможный подход к выделению регионов. Я просто расскажу вам о приёмах, которые сам выработал для упрощения программ и искоренения ошибок.

Регион (арена) — это буфер памяти и смещение до этого буфера. Изначально это смещение равно нулю. Чтобы выделить объект, нужно взять указатель на него с заданным смещением, увеличить смещение на размер объекта, а затем вернуть указатель. Этим дело не ограничивается — например, нужно обеспечить выравнивание и доступность. До этого мы ещё дойдём. Объекты не высвобождаются каждый по отдельности. Напротив, сразу высвобождаются целые группы ранее выделенных объектов, и смещение откатывается к более раннему значению. Когда не предусмотрены собственные времена жизни для отдельных объектов, деструкторы писать также не требуется, а вашим программам не приходится прямо во время выполнения обходить структуры данных и убирать ненужные. Кроме того, больше можно не беспокоиться об утечках памяти.

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

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