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

Assembler *

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

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

CRACKL@B Contest 2010. Анализ первого задания

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

Заканчивался 2010 год, шли глобальные реформы на ресурсе. Это были смутные времена. И в это суровое время зарождается идея о создание местного турнира. Эта идея была очень радостно воспринята местным сообществом. Спустя некоторое время, было создано 3 задания (хотя планировалось 5), были выбраны члены жюри и система оценивания. И так, это началось.
Читать дальше →

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

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



Вступление

Здравствуйте, Хабралюди.
Судя по последним статьям в блоге Assembler, тема кейгенов становится здесь весьма популярной. Что ж, внесу и я свои пять копеек.
Наш сегодняшний подопытный — игра Zuma Deluxe, на которую я никак не мог отгуглить себе кейген (не подумайте, что я игроман: на всё данное исследование меня вдохновил тов. k_d с его самоиграйкой для Zuma). И сразу дисклеймер: данный взлом от начала и до конца проделан в образовательных целях и не имеет целью нести убытки компании PopCap Games.
Читать дальше →

Анализ Crackme #1 от PE_Kill

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

Предисловие



Я уже долгое время ничего не исследую, так сказать ушел на покой. Но тут мне на глаза попалась очередная поделка немало известного в определенных кругах PE_Kill'a. Т.к. мне довелось решать его предыдущую поделку в рамках CRACKL@B Contest 2010, которая в свою очередь была довольно интересна, я решил взглянуть на его новое «детище».

Что вас ждет под катом: подделка CRC32, брут ключа для RC4, факторизация для RSA, а также использование коллизии для MD4 и генерация двух разных сообщений с одинаковыми хешеми. Всё это и многое другое под катом.
Читать дальше

О создании образа KolibriOS

Время на прочтение5 мин
Количество просмотров11K
Всё началось с новости о возможном представлении KolibriOS на для Chaos Constructions-2011. Она была опубликована на форуме разработчиков KolibriOS за четыре месяца до мероприятия.

И вот, в начале августа 2011 года у меня возникла идея создать образ для виртуальной машины с этой системой (KolibriOS), разнообразным программным обеспечением и примерами файлов, с которым можно работать. Собственно, этим я и занялся.

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

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

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

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

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

ARM аccемблер

Время на прочтение6 мин
Количество просмотров142K
Привет всем!
По роду деятельности я программист на Java. Последние месяцы работы заставили меня познакомиться с разработкой под Android NDK и соответственно написание нативных приложений на С. Тут я столкнулся с проблемой оптимизации Linux библиотек. Многие оказались абсолютно не оптимизированы под ARM и сильно нагружали процессор. Ранее я практически не программировал на ассемблере, поэтому сначала было сложно начать изучать этот язык, но все же я решил попробовать. Эта статья написана, так сказать, от новичка для новичков. Я постараюсь описать те основы, которые уже изучил, надеюсь кого-то это заинтересует. Кроме того, буду рад конструктивной критике со стороны профессионалов.
Читать дальше →

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

Время на прочтение5 мин
Количество просмотров2.8K
Всем доброго дня.
Это снова я, и снова несу темы reverse engineering в широкие массы. Так как, по некоторым причинам, я не могу освещать в своих статьях анализ коммерческих протекторов или программ, поэтому на сегодня нашим подопытным кроликом будет keygenme от группы T.P.o.D.T. Не сказать, что сложный, но пару часов не жалко было потратить на него.
Читать дальше

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

Время на прочтение7 мин
Количество просмотров44K
Хотелось бы рассмотреть что-то интересное и полезное вплане использования, поэтому выбор пал на ассемблер, а именно на создание примитивной графики.

Язык ассемблер — это низкоуровневый язык программирования или же программа, которая исходный текст программы, написанный на языке ассемблера, переводит в программу на машинный язык. Язык, по некоторым меркам сложный, но ведь создание примитивов графики берет начало именно тут. Я же хочу рассмотреть ассемблер под Windows, а именно MASM, который, на ряду с Visual Studio, не так давно использовал для создания графических примитивов. Об этом с иллюстрациями и подробностями
Читать дальше →

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

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

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

UPD
В список начали добавляться ресурсы по программингу микроконтроллеров.
Читать дальше →

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

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

image

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

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

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

Исследование игр без исходного кода на примере Zuma

Время на прочтение4 мин
Количество просмотров12K
Эту игру не надо, наверное, представлять. Жаба, шарики и десятки часов потреченных впустую. В первую часть (когда она вышла) играл часами, до ряби, ночи напролет. Играла жена, друзья, все играли, в общем. Любой, кто посмотрел в глаза жабе, услышал волшебное «дзынь» шариков, метким ударом сделал комбинацию из нескольких цветов, оставался с этой игрой надолго. Кот, вон, и тот лапой по экрану бил, когда видел летящий шарик. В общем если бы кто-то спросил про мои любимые казуальные игры, я бы назвал Zuma и Bejeweled.

Но это присказка. Сказка в том, что я недавно перечитывал «Футурологический конгресс» Лема и наткнулся на орден безлюдистов, который проповедуют Евангелие компьютерам. Это привело меня к мысли, что в Евангелие компьютеру, в общем-то, ни к чему, а вот в Zuma он поиграть не отказался бы. Сказано-сделано. Пишу программу которая играет в Zuma.

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

В комментариях прошу ответить: интересна ли тема, и стоит ли продолжать писать подобное? Интересно ли изложение? (я пишу одновременно с тем как делаю, поэтому тому кто читает может показаться странным).
Читать дальше →

MBR для флешки своими руками или как сделать из одного устройства три

Время на прочтение8 мин
Количество просмотров114K
Мое почтение читающему!
Топик мог бы получиться просто катастрофически огромным, поэтому перейдем сразу к делу. Впереди вас ждет рассказ, о том, как можно одну флешку сделать одновременно загрузочной как для ОС семейства Windows, так и *nix, а также сделать из нее live-usb. Заранее прошу прощения за жаргон, не сторонник, но так короче.

Аннотация


Как-то пришлось много раз подряд устанавливать на одну и ту же машину кучу разных операционных систем, как от товарищей господ из Майкрософт, так и любимых всеми нами *nix`ов. При этом инсталляторы вновь устанавливаемых ОСей периодически терли загрузчики ранее установленных, так что приходилось их восстанавливать вручную, загружаясь с live-usb. Но самое ужасное, что при всем при этом под рукой была всего одна флешка (и еще 15 компьютеров правда, но толку от них было мало, так как разбирать их по причинам гарантии в надежде на лишний жесткий диск было нельзя). Флешка к счастью была большого объема. Вот тут-то и возникла идея сделать из одной флешки две, а лучше три (хотя можно и 4) разных девайса.

Немного теории


Как сделать из одной флешки несколько с целью последующей установки на нее одновременно нескольких установщиков ОС и еще live-операционки? Ответ очевиден — сделать на флешке несколько разделов!
Читать дальше →

Управляемая градиентная спираль на ассемблере в 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. Этот крякмис предназначен, в первую очередь, для новичков, желающих попрактиковаться в реверсинге. Я планирую продолжать цикл статей этой тематики, двигаясь постепенно от простого к сложному.
Читать дальше →