В этой статье мы ищем (и, что характерно, находим!) критический баг в CoreGraphics в iOS. Сразу скажу, что на полноценную уязвимость этот баг конечно не тянет — его эксплуатация не приводит, например, к arbitrary code execution. Однако этот баг позволяет аварийно завершать приложения которые используют WebKit: Mobile Safari, Google Chrome для iOS, всяческие почтовые клиенты и т.п., что тоже может быть полезно для хакера в некоторых ситуациях. Итак, приступим к поискам.Читать полностью »
Рубрика «ассемблер» - 13
Критический баг в CoreGraphics в iOS
2014-02-27 в 13:23, admin, рубрики: ассемблер, баг, информационная безопасность, отладка, метки: ассемблер, баг, информационная безопасность, отладкаПрограммирование дисплея на контроллере ST7920
2014-02-21 в 15:47, admin, рубрики: attiny2313, ассемблер, дисплей, Электроника для начинающих, метки: attiny2313, ассемблер, дисплейХочу рассказать о программировании дисплея на контроллере ST7920 с использованием ATtiny2313 контроллера.
Как понять ассемблер
2013-11-09 в 23:07, admin, рубрики: ассемблер, ассемблер для начинающих, микроконтроллер, микроконтроллеры, микросхема, микроэлектроника, Программинг микроконтроллеров, Электроника для начинающих, метки: ассемблер, ассемблер для начинающих, микроконтроллер, микроконтроллеры, микросхема, микроэлектроника Всем добрый вечер! Веду свою трансляцию из уютного мира, который называется «ассемблер». Сразу поясню что тема касается микроконтроллеров AVR — и я пока ещё не знаю, пригодится ли этот пост тем, кто хочет использовать ассемблер для любой другой задачи. Дело в том, что я буквально несколько дней назад начал учить ассемблер с нуля — нужно сделать одно устройство — и я решил сделать в нём всё самостоятельно. Так вот — в один прекрасный день понял, что учить ассемблер абсолютно бесполезно! Ассемблер можно только понять! То есть всем тем, кто хочет программировать на ассемблере я настоятельно рекомендую детально вникнуть в то, каким образом ФИЗИЧЕСКИ работает микроконтроллер, а затем уже изучать тонкости команд.
Так вот, я пожалуй начну небольшой цикл статей, в которых буду с самого начала рассказывать как именно я понял те или иные вещи в программировании на ассемблере — думаю для тех, кто вообще не понимает что такое асм я буду как раз таким «переводчиком» с языка тех, кто в этом деле очень хорошо шарит.
Читать полностью »
Пишем Hello World на ассемблере под Windows RT с использованием winapi
2013-10-25 в 21:01, admin, рубрики: visual studio 2012, windows, Windows RT, ассемблер, планшеты, метки: visual studio 2012, Windows RT, АРМ, ассемблерОднажды, совсем недавно, на планшетах с Windows Microsoft потеряла миллионы долларов. Ну а мы сегодня просто будем писать под них на ассемблере.
Нам понадобятся следующие вещи.
- Установленная Microsoft Visual Studio с поддержкой ARM ассемблера, например 2012.
- Jailbreak'нутый планшет с установленной Windows RT, например Microsoft Surface RT.
Для начала создадим отдельную папку для проекта, в которой создадим файл arm.asm, содержимое которого под катом.
Читать полностью »
Интеллектуальное реле управления вентилятором охлаждения двигателя
2013-09-19 в 14:42, admin, рубрики: atmel, diy или сделай сам, PWM, автоэлектроника, ассемблер, Программинг микроконтроллеров, метки: atmel, PWM, автоэлектроника, ассемблер, шимПрочитав пост mrsom о пересадке микроконтроллерной начинки в ретротахометр от Жигулей, решил рассказать об одной своей давней микроконтроллерной разработке (2006 год), сделанной для плавного управления электровентилятором охлаждения двигателей переднеприводных моделей ВАЗа.
Надо сказать, что на тот момент уже существовало немало разнообразных решений — от чисто аналоговых до микроконтроллерных, с той или иной степенью совершенства выполняющих нужную функцию. Одним из них был контроллер вентилятора компании Силычъ (то, что сейчас выглядит вот так, известной среди интересующихся своим автоматическим регулятором опережения зажигания, программно детектирующим детонационные стуки двигателя. Я некоторое время следил за форумом изготовителя этих устройств, пытаясь определить, чтов устройстве получилось хорошо, а что — не очень, и в результате решил разработать свое.Читать полностью »
Настоящий многопоточный веб-сервер на ассемблере под Linux
2013-07-28 в 14:23, admin, рубрики: linux, ассемблер, ненормальное программирование, системное программирование, метки: ассемблер Добрый день!
Сегодня я вам расскажу как написать свой настоящий веб-сервер на асме.
Сразу скажу что мы не будем использовать дополнительные библиотеки типа libc. А будем пользоваться тем что предоставляет нам ядро.
Уже только ленивый не писал подобных статей, — сервер на perl, node.js, по-моему даже были попытки на php.
Вот только на ассемблере еще не было, — значит нужно заполнить пробелы.
Читать полностью »
Секреты кэш-памяти, или как потратить 1000 тактов на 10 команд
2013-07-24 в 10:55, admin, рубрики: burst, RISC, ассемблер, как это работает, кэш-память, Программинг микроконтроллеров, процессор, Процессоры, метки: burst, risc, ассемблер, Как это работает, кэш-память, процессорПро кэш процессоров написано много, в том числе и на Хабре, но все больше общими словами. Предлагаю вашему вниманию конкретный пример того, как работает кэш в реальной жизни.
В качестве примера я возьму простенькую систему на кристалле, основанную на 32-битном гарвардском RISC-процессоре с одноуровневой кэш-памятью и без MMU (что-то типа ARM Cortex-R). Процессор подключен к контроллеру внешней памяти через 32-битную шину AMBA AHB, работающую на частоте процессора.
Assembler для Brainfuck
2013-06-09 в 12:54, admin, рубрики: Brainfuck, compiler, ruby, translator, ассемблер, брейнфак, компилятор, компиляция, ненормальное программирование, Песочница, руби, трансляция, метки: brainfuck, compiler, ruby, translator, ассемблер, брейнфак, компилятор, компиляция, руби, трансляция Одним холодным майским днем от скуки решил я таки приступить к изучению этого удивительного языка — Brainfuck'a.
Его интерпретаторы публиковали на Хабре уже очень много раз.
Но мне хотолось изучить поглубже сам язык и алгоритмы на нем, а не писать очередной интерпретатор. Поэтому было решено сделать из мухи слона компилятор какого-нибудь высокоуровневого языка в brainfuck.
Однако очень быстро начался реальный brainfuck: отсутствие оператора if, отсутствие произвольного доступа к ячейкам и куча других проблем сразу свалилась на меня. Пришлось повременить с высокоуровневым языком и сделать для начала ассемблер, в который и будет компилироваться высокоуровневый язык.
О реализации ассемблера под катом.
Читать полностью »
Пишу игрушечную ОС (о прерываниях)
2013-04-06 в 22:30, admin, рубрики: diy или сделай сам, ассемблер, ОС, прерывания, системное программирование, метки: c++, ассемблер, ОС, прерывания
Данная статья написана в форме поста для блога. Если она окажется вам интересной, то будет продолжение.
Последние четыре месяца посвящаю свободное от работы время написанию игрушечной ОС для x86_64. Исходный код лежит здесь.
Общая задумка (пока весьма далёкая от реализации) следующая: единое 64-битное адресное пространство с вечно живущими нитями (как у Phantom OS); виртуальная машина, обеспечивающая безопасность исполнения кода. На данный момент реализованы:
1. загрузка ядра при помощи multiboot-загрузчика (GRUB);
2. текстовый VGA-режим (16-цветов, kprintf);
3. простой интерфейс настройки отображения страниц;
4. возможность обработки прерываний на C;
5. идентификация топологии процессоров (сокеты, ядра, потоки) и их запуск;
6. работающий прототип SMP-планировщика с поддержкой приоритетов;
Пропустим описание multiboot-загрузки и работы с VGA-режимом (об этом не писал, разве что, ленивый). Про отображение страниц тоже не хочу писать, боюсь это будет скучно (может, в другой раз). Давайте лучше поговорим об обработке прерываний.
Читать полностью »
Управляем ЖК дисплеем HD44780 с помощью ассемблера
2013-03-20 в 15:09, admin, рубрики: ATmega8, diy или сделай сам, hd44780, ассемблер, метки: ATmega8, hd44780, ассемблер В университете на одном профильном предмете начали изучать стенд на основе микроконтроллера МК-51, дисплея HD44780, клавиатуры. Все это дело программируется через COM порт с помощью ассемблера. На тот момент я изучат микроконтроллеры семейства AVR (а именно Atmega8), поэтому появилось желание научиться инициализировать и выводить на экран какую-нибудь информацию с помощью ассемблера без применения библиотек. После продолжительных поисков нашел только то, как дисплей запрограммировать на языке C с помощью библиотек, в которых не совсем понятно, что происходит. Поэтому было принято решение написать код самому, с использованием ассемблерных команд. Дисплей 0802, две строки.
Читать полностью »