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

Assembler *

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

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

Коварный и ужасный 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 мин
Количество просмотров945
Сабж, товарищи! 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 ...
42