Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Учим систему страничной адресации и обработке прерываний

Системное программирование
Приветствую. Сегодня поговорим обо всём понемногу. Введём в нашу наработку paging, разберёмся с прерываниями и их видами. Напишем несколько функций, добавим сие в код из предыдущего поста.
Читать дальше →
Всего голосов 28: ↑23 и ↓5 +18
Просмотры6.9K
Комментарии 14

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

Assembler


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

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

Assembler
Эта статья посвящена созданию на ассемблере графического приложения весом в несколько сотен байт. После создания полноценной рабочей версии на 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 — выход
Читать дальше →
Всего голосов 126: ↑120 и ↓6 +114
Просмотры5.7K
Комментарии 109

История игрушки. Поле Чудес

История ITИгры и игровые приставки
Случилось это в городе, закрытом от шпионов, цыган и бед социалистической экономики. В Советском Союзе было ровно 10 таких городов, повязанных атомным секретом.

Жизнь мальчиков с математическими способностями в атомных городах была предопределена — школа с пятерками по алгебре и геометрии, мех-мат столичного университета, возвращение в систему, квартира через год, кандидатская степень в 40 лет, ВАЗ 2103 к пятидесяти годам, звание доктора, гараж, шесть соток, четыре квадратных метра.

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

Pole Chudes для iPhone

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

Читать дальше →
Всего голосов 933: ↑923 и ↓10 +913
Просмотры150.3K
Комментарии 306

Насколько крепка дружба между Java и С внутри Dalvik VM?

Разработка под Android
Из песочницы
В данной статье попытался очень подробно описать свои шаги при исследовании кода андроида и его выполнения в Dalvik VM. Мне было очень интересно узнать ответы, на вопросы:

  • Как выглядит код, генерируемый С? (с позиции ARM)
  • Как выглядит код, генерируемый Java?
  • Как и где происходит выполнение кода?

Поэтому данная статья разбита на 3 части.

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

Читать дальше →
Всего голосов 122: ↑115 и ↓7 +108
Просмотры3.6K
Комментарии 14

Вирусный анализ на примере — исследуем Trojan-Downloader.Win32.Zanoza.ab

Антивирусная защита
Из песочницы
Вы когда-нибудь задумывались о том, какова судьба вируса, пойманного антивирусными компаниями? О том, что происходит с ним ещё до добавления сигнатур в базу? А конкретнее, о вирусном анализе. Может показаться, что самому заниматься вирусным анализом сложно, ненужно и опасно, но на самом деле это совершенно не так. Лишние умения никогда не повредят, да и полезно, иногда, посмотреть перед запуском, что из себя представляет скачанный с интернета исполняемый файл. Для начала работы сгодятся любые знания ассемблера, отладчик с дизассемблером и виртуальная машина на выбор.

Образцы вирусов для анализа можно, конечно, поискать самостоятельно в интернете, но мы с Вами для начала пойдём другим путём. Огромную коллекцию уже готовых для анализа вирусов можно взять на сайте vx.netlux.org. Первым приглянувшимся мне вирусом стал Trojan-Downloader.Win32.Zanoza.ab. Его подробнейшим анализом мы сейчас и займёмся. Кстати, неплохие описания вирусов можно посмотреть на сайте securelist.com.

Читать дальше →
Всего голосов 82: ↑81 и ↓1 +80
Просмотры23.1K
Комментарии 30

Ассемблер для начинающих

Assembler
Из песочницы
В любом деле главное — начать. Или вот еще хорошая поговорка: «Начало — половина дела». Но иногда даже не знаешь как подступиться к интересующему вопросу. В связи с тем, что воспоминания мои еще свежи, спешу поделиться своими соображениями с интересующимися.

image

Скажу сразу, что лично я ассемблирую не под PC, а под микроконтроллеры. Но это не имеет большого значения, ибо (в отличие от микроконтроллеров AVR) система команд данных микроконтроллеров с PC крайне схожа. Да и, собственно говоря, ассемблер он и в Африке ассемблер.

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

Читать дальше →
Всего голосов 68: ↑48 и ↓20 +28
Просмотры183.7K
Комментарии 66

Список ресурсов для изучения Ассемблера

Assembler
Доброго времени суток!
Некоторым программистам иногда приходит в голову мысль «а не изучить ли мне ассемблер?». Ведь на нем пишут самые (с некоторыми оговорками) маленькие и быстрые программы, да и охота ощутить вкус низкоуровневого программирования берет свое. Ну и для общего развития не повредит.
Мысль эта не обошла стороной и меня. Вдохновившись историей одного байта, я ринулся в бой…

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

UPD
В список начали добавляться ресурсы по программингу микроконтроллеров.
Читать дальше →
Всего голосов 135: ↑130 и ↓5 +125
Просмотры398.6K
Комментарии 46

ARM аccемблер

Assembler
Привет всем!
По роду деятельности я программист на Java. Последние месяцы работы заставили меня познакомиться с разработкой под Android NDK и соответственно написание нативных приложений на С. Тут я столкнулся с проблемой оптимизации Linux библиотек. Многие оказались абсолютно не оптимизированы под ARM и сильно нагружали процессор. Ранее я практически не программировал на ассемблере, поэтому сначала было сложно начать изучать этот язык, но все же я решил попробовать. Эта статья написана, так сказать, от новичка для новичков. Я постараюсь описать те основы, которые уже изучил, надеюсь кого-то это заинтересует. Кроме того, буду рад конструктивной критике со стороны профессионалов.
Читать дальше →
Всего голосов 66: ↑64 и ↓2 +62
Просмотры110K
Комментарии 26

Создание прокси-dll для запуска DirectDraw игр в окне

C++Системное программированиеРеверс-инжиниринг
В продолжение темы расширения функциональности готовых программ хотелось бы рассказать об ещё одном способе изменения логики работы уже скомпилированной программы, который не требует делать изменений в самом исполняемом файле. Это может пригодиться при распространении вашей модификации в США, где прямое вмешательство в исполняемый файл строго осуждается. Речь пойдёт о создании крошечной прокси-dll (всего ≈4 килобайта) для подмены используемой приложением библиотеки на примере ddraw.dll.
Читать дальше →
Всего голосов 71: ↑68 и ↓3 +65
Просмотры16.5K
Комментарии 32

Создание графических примитивов на Ассемблере

Assembler
Из песочницы
Хотелось бы рассмотреть что-то интересное и полезное вплане использования, поэтому выбор пал на ассемблер, а именно на создание примитивной графики.

Язык ассемблер — это низкоуровневый язык программирования или же программа, которая исходный текст программы, написанный на языке ассемблера, переводит в программу на машинный язык. Язык, по некоторым меркам сложный, но ведь создание примитивов графики берет начало именно тут. Я же хочу рассмотреть ассемблер под Windows, а именно MASM, который, на ряду с Visual Studio, не так давно использовал для создания графических примитивов. Об этом с иллюстрациями и подробностями
Читать дальше →
Всего голосов 51: ↑31 и ↓20 +11
Просмотры33.1K
Комментарии 14

Анализ keygenme от TPoDT #2

Assembler
Всем доброго дня.
Это снова я, и снова несу темы reverse engineering в широкие массы. Так как, по некоторым причинам, я не могу освещать в своих статьях анализ коммерческих протекторов или программ, поэтому на сегодня нашим подопытным кроликом будет keygenme от группы T.P.o.D.T. Не сказать, что сложный, но пару часов не жалко было потратить на него.
Читать дальше
Всего голосов 79: ↑74 и ↓5 +69
Просмотры2.2K
Комментарии 24

Новогодняя музыкальная открытка

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


Читать дальше →
Всего голосов 81: ↑79 и ↓2 +77
Просмотры13.8K
Комментарии 37

Оптимизация длинной арифметики на C++

Высокая производительностьAssembler
Tutorial

С Новым годом! Опишу классический сюжет — оптимизацию длинной арифметики в C++ при помощи ассемблерных вставок. Однако, на Хабре его еще не было, поэтому после некоторых колебаний решил запостить сюда, вы уж простите, если сами когда-то писали то же самое и продвинулись дальше меня :-)

Читать дальше →
Всего голосов 82: ↑80 и ↓2 +78
Просмотры13.2K
Комментарии 22

Обратная разработка коммерческой программы: кейген для Zuma Deluxe

Assembler
Из песочницы



Вступление

Здравствуйте, Хабралюди.
Судя по последним статьям в блоге Assembler, тема кейгенов становится здесь весьма популярной. Что ж, внесу и я свои пять копеек.
Наш сегодняшний подопытный — игра Zuma Deluxe, на которую я никак не мог отгуглить себе кейген (не подумайте, что я игроман: на всё данное исследование меня вдохновил тов. k_d с его самоиграйкой для Zuma). И сразу дисклеймер: данный взлом от начала и до конца проделан в образовательных целях и не имеет целью нести убытки компании PopCap Games.
Читать дальше →
Всего голосов 224: ↑208 и ↓16 +192
Просмотры28.7K
Комментарии 72

Модификация игр на примере Arcanoid

Разработка под Java ME
Доброго времени суток!

Введение


На протяжении некоторого времени я наблюдал за блогом Assembler на хабре в виду того, что там начали появляться более чем отличные статьи по анализу различных keygen'ов и «reverse engineering». Я давно хотел заняться чем-то подобным и модифицировать какую-нибудь игру на J2ME. Я долго бродил по интернету в поисках хорошей, но в тоже время лёгкой для понимания (в плане анализа) игры. Однажды, я копался на сайте моего друга программиста (кстати, он тоже пишет программы для J2ME. Кто использовал ProPaintMobile — тот знает, о ком я говорю. И я нашёл её — это был простенький Арканоид. Видимо, это было чьё-то домашнее задание, или же он писался просто «just for fun», но тем не менее эта игра оказалась именно тем, чем нужно.
Поехали!
Всего голосов 6: ↑4 и ↓2 +2
Просмотры2.9K
Комментарии 13

Минималистичная программа в формате ELF

C++Assembler
Из песочницы
Вдохновившись статьёй Привет из свободного от libc мира, я так же решил проделать нечто подобное. Чтобы не заниматься этим бесцельно, я решил поставить перед собой следующую задачу. Сделать программу, выводящую какую-нибудь простую строку, вроде «ELF, hello!». Разобраться с тем, как именно она будет представлена в исполняемом файле. Ну и попутно, постараться уложиться в 100 байт.
Читать дальше →
Всего голосов 110: ↑109 и ↓1 +108
Просмотры20K
Комментарии 49

Автоматизация создания прокси-dll

Assembler
Из песочницы
Приветствую!

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

Для того, чтобы постоянно не совершать одни и те же действия, я решил автоматизировать процесс создания проекта Visual Studio на основе выбранной dll.
Читать дальше →
Всего голосов 27: ↑24 и ↓3 +21
Просмотры5.6K
Комментарии 7

История команд одного процессора. Часть 1. Отличия ассемблерных инструкций lddqu и movdqu

ПрограммированиеAssembler

В не столь далеком 2000 году корпорация Intel представила на рынке микроархитектуру NetBurst для процессоров Pentium 4. В 2004 году, когда появились процессоры на ядре Prescott, в наборе команд SSE3 была реализована команда LDDQU.
Читать дальше →
Всего голосов 26: ↑22 и ↓4 +18
Просмотры2.9K
Комментарии 14

Графический «велосипед» по мотивам Turbo Vision (дела давно минувших дней)

Ненормальное программированиеПрограммирование
Из песочницы
Относительно недавно, прочитав местную статью "Демо, которых никто никогда не видел", решил, что тоже стоит пролить свет на некоторые плоды своей программистской молодости.

Начиналось с этого:
image

Под 'катом' 500Кб картинок!!!
Всего голосов 167: ↑163 и ↓4 +159
Просмотры10K
Комментарии 80