Как стать автором
Поиск
Написать публикацию
Обновить
62.12

Assembler *

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

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

Управляемая градиентная спираль на ассемблере в 256 байт (k29)

Время на прочтение8 мин
Количество просмотров6.9K
Эта статья посвящена созданию на ассемблере графического приложения весом в несколько сотен байт. После создания полноценной рабочей версии на 420 байт пришлось попотеть, чтобы запихать всё это добро в 256 байт. Результат вы можете лицезреть на видео. В статье описывается процесс создания и общие принципы функционирования.

Предупреждение: Если вы страдаете приступами эпилепсии — НЕ СМОТРИТЕ.


В Win7 и Vista работать не будет. Нужна Windows XP/2000/98.

Скачать исполняемый файл: k29.com в DropBox (256 байт)
Скачать исходный код: k29.asm в DropBox (Компилировать FASM-ом)

Клавиши управления:
1. R,G,B — включение и отключение цветовых компонент
2. <--,SPACE,--> — менять направление и скорость вращения
3. UP, DOWN — менять масштаб спирали
4. 0,1,2,3,4,5,6,7,8,9 — менять число ветвей у спирали
5. ESC — выход
Читать дальше →

64-битная ОС на ассемблере

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


Разработчики из канадской компании Return Infinity специализируются на низкоуровневом программировании и экспериментальных разработках. На днях они выкатили новую версию BareMetal, 64-битной операционной системы, написанной полностью на ассемблере. Цель этого проекта — избавиться от неэффективного машинного кода, который генерируют компиляторы высокоуровневых языков вроде C/C++ и Java. Если изначально писать на ассемблере, то код получается более производительным и компактным. Вся ОС занимает 16384 байт, а программка “Hello World!” компилируется в файл 31 байт.
Читать дальше →

Три компьютерные игры (по 30 байт каждая)

Время на прочтение3 мин
Количество просмотров15K
Вдохновленная Shifticida (32 байта) и Самой маленькой гоночной игрой в мире (58 байт), я решила сделать Самую-самую маленькую компьютерную игру для x86. Вместо одной игры получились три. Увы, они не такие крутые, как гоночки, но зато они занимают всего по 30 байт каждая.
Под катом - исходные коды и ссылка на скачивание.

Разбираем по кусочкам lincrackme3

Время на прочтение3 мин
Количество просмотров3.2K
В отличие от Windows среда Linux не может похвастаться большим количеством разных трюков против отладки. Opensource и всё такое сыграли свою долю в этом. Среди дебаггеров
есть  gdb, но он очень легко обнаруживается простейшими техниками анти-отладки.

Соответственно не много известно протекторов способных сильно затруднить отладку бинарника, среди них можно вспомнить разве что 'shiva', но она уже давно «умерла».

Игрушкой сегодня для нас будет служить программка lincrackme3 с crackmes.de, она – не сложна и при этом,  в ней имеется несколько анти-отладочных трюков. Мы будем использовать  только дисассемблер – никаких отладчиков, ltracer-ов и тем более патчинга бинарника. Дисассемблером будет служить IDAPro 5.5.
Читать дальше →

Использование макросов в MASM на примере создания окна

Время на прочтение6 мин
Количество просмотров11K
В далеком 2001-ом году я проводил много времени за изучением ассемблера под Win32. Тогда после долгих мучений с написанием одного и того же кода по сотне раз я взялся написать для себя небольшую библиотеку макросов. В итоге удалось достаточно серьезно облегчить себе судьбу и уменьшить необходимость повторять огромные полотенца кода, при необходимости написать простейшую программу с одним окном.

Недавно наткнулся на те проекты и решил выложить некоторые из них, может кому пригодится…

Читать дальше →

Иследование несложных crackme's (часть 3)

Время на прочтение7 мин
Количество просмотров13K
Здравствуйте, Хабралюди.
Представляю вам третью часть из моего цикла статей о исследовании крякмисов. В этом топике мы поговорим с вами о ручной распаковке некоторых пакеров и о преодолении не сложных антиотладочных методов.
Читать дальше →

Исследование простого crackme (часть 2)

Время на прочтение6 мин
Количество просмотров7.9K
Здравствуйте, Хабралюди!
Этот топик является продолжением цикла статей о исследовании крякмисов (часть 1). В этой статье мы рассмотрим крякмис по-сложнее, чем в предыдущей статье. Основная сложность будет заключаться в алгоритме шифровки. Однако, всё равно, многим он покажется слишком простым.
Читать дальше →

Исследование простого crackme

Время на прочтение3 мин
Количество просмотров23K
Здравствуйте Хабралюди. В этом топике я расскажу как я исследовал простой crackme. Этот крякмис предназначен, в первую очередь, для новичков, желающих попрактиковаться в реверсинге. Я планирую продолжать цикл статей этой тематики, двигаясь постепенно от простого к сложному.
Читать дальше →

Коварный и ужасный sndrec32.exe

Время на прочтение3 мин
Количество просмотров22K
Sound RecorderВ этом топике вы найдете немного ностальгии, каплю гнева и килограмм реверс-инжиниринга. Посвящается тем, кто знаком с программой «Звукозапись» не понаслышке :)

Когда небо было голубее, Солнце светило ярче, а Интернет был таким недоступным… Короче, в далеком детстве мне почему-то полюбилась стандартная программа «Звукозапись» из Windows 98. Не глядя на минимальную функциональность, я даже умудрялся делать в ней простейшие «ремиксы» ей же записанных мелодий из игр.

Шли годы. Железо становилось мощнее, а ОС функциональнее. Но «Звукозапись» не менялась. Даже в Windows XP она оставалась такой же, как и тогда. Пришло время обновить железо. 3 гигабайта оперативной памяти — раньше и мечтать о таком не приходилось. Этого уж точно должно хватить всем! Так и было, пока дело не дошло до той самой «Звукозаписи». После попытки записать небольшой звук программа невозмутимо возразила, что ей недостаточно оперативной памяти.
Читать дальше →

Написание простейшего SOCKS4 сервера на языке Assembler

Время на прочтение8 мин
Количество просмотров10K
  Какое то время тому назад захотелось мне попробовать реализовать прокси сервер для собственных нужд, да такой, который можно было бы в дальнейшем использовать, а также, чтобы размер его был минимален. Естественным вариантом для меня стала реализация с использованием ассемблера. Программка получилась небольшая, удобная и в дальнейшем я очень часто ей пользовался. А вот теперь, по прошествии лет, хотелось бы показать простейшую реализацию одного протокола, SOCKS4. Данный протокол был создан для того, чтобы клиенты, находящиеся в локальной сети за межсетевым экраном могли обращаться во внешнюю сеть. В то же время запросы клиентов в таком случае есть возможность контролировать :) Самым первым, что нужно, при реализации – прочитать документацию с описанием данного протокола, так как мы хотим, чтобы наш протокол понимался стандартными программами, без “подтачивания напильником”. Итак, документация :

Описание протокола SOCKS
SOCKS: A protocol for TCP proxy across firewalls

  Теперь, вооружившись описанием, приступим. Работа прокси сервера состоит в том, чтобы принять от клиента запрос в определенном формате, сформировать сокет и подключить его по адресу запрошенному клиентом, после чего обеспечить обмен данными между двумя сокетами, до их закрытия со стороны сервера, либо клиента. Приступим к реализации.

Читать дальше →

Релиз KolibriOS 0.7.7.0

Время на прочтение1 мин
Количество просмотров5.1K
image

Завершилась работа над выпуском новой версии. С полным списком изменений можно ознакомиться здесь. Скачать систему можно c сайта KolibriOS.

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

Легальный взлом как разминка для ума

Время на прочтение5 мин
Количество просмотров15K
IT-шники часто придумывают себе упражнения для ума, пытливый ум постоянно требует разминки. Хочу рассказать об одном из самых жестких и спорных способах – взлом специально защищенных программ-головоломок (Часто их называют crackme).

Одно из мест, где такие головоломки собраны — crackmes.de.

Здесь находятся много интересных программ, на которых можно испробовать свои силы по взлому. Никакого криминала – программы специально написаны для этой цели (так называемые crackme и reverseme);

Часто любят говорить «Все защиты можно взломать». Поковыряв некоторые из crackme вы возможно измените своё мнение.
Читать дальше →

Puls — революция в 256 byte intro

Время на прочтение3 мин
Количество просмотров7.4K
Прошедший в конце августа Chaos Constructions 2009 в Питере, к сожалению, не порадовал нас революционными релизами. Однако зарубежные братья демосценеры не дремлют!

image

Буквально на прошлой неделе на Riverwash 2009 простой чешский парень Jan Kadlec (aka Řrřola) забомбил PC 256 byte intro которое установило новый мировой порядок. Имя ему — Puls.

Итак речь идет о куске машинного кода в 256 байт для Intel x86 совместимой машины. Работает он под DOS, совершенно равнодушен к 3D возможностям вашей видеокарты и объемам установленного ОЗУ, но не откажется от быстрого CPU. Код генерирует динамическую визуальную сцену используя базовые возможности Intel архитектуры и стандартного видеорежима.
Версия под DOS «с трудом» заработает под Vista, 7 и XP, выдавая низкий fps – операционная система не дает напрямую использовать аппаратные ресурсы. Поэтому есть смысл смотреть адаптированную под Windows версию (которая занимает уже несколько килобайт). Она как бы намекает нам «насколько много ресурсов поедает ОС» (сравните размеры кода под DOS и Windows).

Собственно, надеюсь, у всех есть понимание что такое 256 байт в масштабах хотя бы текста SMS сообщения, и как в таком объеме можно уместить этот движняк для многих остается непонятным. При этом рядом исходник на ассемблере который заставляет уверовать.

Обычно в этом месте обыватель задает вопрос: “Здорово! А как мы это можем использовать?”

Отвечаю примером для 9-го класса:
Читать дальше →

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

Самая маленькая игра в мире (58 байт)

Время на прочтение3 мин
Количество просмотров56K
Для тех, кто читал статью в песочнице: добавил раздел «Можно ли сделать игру меньше?».

Прочитав историю одного байта, вспомнил свою историю.

Когда я учился в школе и только начинал программировать меня очень привлекал ассемблер и оптимизация. А именно — кропотливая оптимизация, с подсчетам тактов и байтов. На летних каникулах у меня с двоюродным братом появилась идея написать самую маленькую игру в мире.

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

Сюжет и управление


Вы несетесь по трассе на грузовике с двумя прицепами. Слева от вас разделительная полоса, справа обочина укрытая травой. На дороге встречаются люди и деревья (может ямы). Ваша задача: не сбивать людей и не врезаться в деревья (не попадать в ямы).
Управление: стрелки влево-вправо — поворот; Esc — пауза.

Скриншоты и код

Расширение функциональности готовых программ

Время на прочтение11 мин
Количество просмотров43K
В мире ПО существует огромное количество программ, забытых своими разработчиками. Хорошо, когда уже есть хорошая альтернатива. А если ее нет? В программе может катастрофически не хватать каких-то мелочей, некоторые досадные ошибки могут годами доставлять массу неудобств пользователям, а на новых версиях ОС программа и вовсе может отказаться работать. Далеко не всегда имеются исходные коды, чтобы привести программу в порядок. Если программа простая — не составит труда за короткий срок создать альтернативу. Но если программа большая и сложная, что же делать в таком случае? Не всегда рационально тратить время и деньги на разработку полного аналога, ведь расширить в разумных рамках функциональность и исправить большинство ошибок можно уже в готовом исполняемом файле.
В этой статье будут продемонстрированы методики модификации исполняемых файлов на примере расширения функциональности легендарной игры Age of Empires II (стратегия реального времени).
Читать дальше →

Ежегодное соревнование KHallenge

Время на прочтение1 мин
Количество просмотров944
Сабж, товарищи! www.khallenge.com

Что это такое? Соревнование по Reverse Engineering от F-Secure :-)

Первый тур прост, второй я начал, запуталсо и отложил на потом. Удачи всем!

Intel® 64 and IA-32 Architectures Software Developer's Manual

Время на прочтение1 мин
Количество просмотров6.1K
На этой странице можно заказывать мануалы по программированию на асме для intel-процессоров.При чем бесплатно.

Кликаем "Order a printed copy" около того тома который хотите заказать(советую для начала первый).Далее на страничке всё указано, но лишний раз всёже поясню:

Отправляем e-mail на указанный адресс: intelsupport@hibbertgroup.com
Следующего содержания:
SKU # — номер книжки — на странице, указанной в начале они есть
Company Name — Тут без разницы, можете пропустить
Your Name (first, last) — ну, Имя Фамилия
Full mailing address — Не забудьте индекс!
Daytime Phone Number in case of questions — здесь напишите свой email, никто вам звонить не собирается.


Потом вам должно прийти 2 письма с подтверждениями, во втором будет указано какая компания будет доставлять(в моём случае DHL).И вот что вы в итоге получите:


tnx4 GreatGreat

Примеры ассемблерного кода и алгоритмов на решении задаче о перевороте строки

Время на прочтение1 мин
Количество просмотров6.9K
Дано — null-terminated string, расположенная в памяти по некоторому адресу. Допустим «kukaga»,0x0h.
Задача — получить на выходе строку наоборот, «agakuk»,0x0h
Точнее -указатель на область памяти, где лежит перевернутая строка

Посмотрим решения на базе i8080 архитектуры.

Просьбе к знатокам ассемблеров не-x86 архитектуры — дайте пример этой задачи в ассемблере для знакомой вам архитектуры. Просто чисто интересно сравнить.

Читать дальше →

Начнём…

Время на прочтение1 мин
Количество просмотров1.9K
Хабр всё же сайт о всяком вебе, но я думаю, низкоуровневый уголок тоже был бы к месту.
Вопрос таков: что бы вы хотели видеть в этом блоге?

Оставляйте записи в комментариях, чтобы понять направление, в котором двигаться. Мне интересно, что вы хотите видеть (асм для начинающих, реверсинг, низкоуровневый win32 кодинг) и как вы хотите это видеть (подкаст, статьи и тд).

Кто из современных программистов способен решить задачи низкого уровня или Задачки Для Программистов

Время на прочтение1 мин
Количество просмотров3.3K
Навеяно историей об одном байте

А способны ли современные программисты на создание кода как искусства? Попробуйте решить эти задачки :)
Читать дальше →
12 ...
41