Сайт с задачами на обратную разработку

Автор: xrnd | Рубрика: Дизассемблирование, Новости | 24-07-2020

Reverse Every Day — открытая платформа с задачами на обратную разработку. Сайт содержит интересные задачки под различные платформы. Я впервые поучаствовал в подобном конкурсе и мне очень понравилось. Самой сложной (и интересной) для меня оказалась задачка «Crypto Lovers» — я провёл несколько дней в поисках решения, пока наконец не догадался, как её решить.

На момент написания этой записи на сайте размещены 15 задач, но авторы планируют регулярно добавлять новые задания. Кроме того, участники могут предлагать свои оригинальные задачи. Сайт будет полезен всем, кто интересуется дизассемблированием, обратной разработкой, информационной безопасностью и криптографией.

Новый домен

Автор: xrnd | Рубрика: Новости | 17-05-2020

Сайт переехал на новый домен «fasmworld.ru». Так как все статьи здесь посвящены ассемблеру FASM, я решил сменить название, добавив букву «f».

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

UPDATE (24.07.2020). Открыта регистрация и комментарии к новым записям.

Новости проекта

Автор: xrnd | Рубрика: Новости | 05-12-2012

Приветствую всех читателей сайта «asmworld.ru»!

Грустно об этом сообщать, но в последнее время я совсем забросил написание статей и разбор комментариев. Много работы, да и других дел тоже хватает. Сейчас я занимаюсь очень интересными проектами. Пишу на ассемблере для AVR и PIC. Кроме того занимаюсь электроникой и пишу на C++ для компьютера. Паяю то, что не удаётся запрограммировать, и программирую то, что не удалось спаять. Пока не знаю, когда продолжу написание своего учебника и продолжу ли вообще.

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

Сайт не пропадёт и никуда не денется. Я за ним слежу, оплачиваю хостинг и домен. Так что заходите и читайте в любое время.

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

А вот рекламы на сайте больше нет. Денег от неё копейки, поэтому я её удалил.

Желаю всем удачи и творческих успехов!

FASM Editor 2.0

Автор: xrnd | Рубрика: Инструменты | 07-09-2011

Вышла вторая версия среды разработки FASM Editor!

FASM Editor v2.0

Скачать FASM Editor 2.0

FASM Editor 1.0

Автор: xrnd | Рубрика: Инструменты | 02-07-2011

FASM Editor — замечательная среда разработки для FASM. Программа довольно простая, но в ней есть всё, что нужно для удобного написания программ на ассемблере.

Читать полностью »

Учебный курс. Часть 31. Сегментная адресация

Автор: xrnd | Рубрика: Учебный курс | 14-04-2011

До этой части учебного курса мы создавали только COM-программы, в которых один и тот же сегмент использовался для кода, данных и стека. Однако, для дальнейшего изложения необходимо подробнее разобраться с сегментной адресацией.

Формирование адреса в реальном режиме

Основная идея сегментной адресации в том, что адрес состоит из двух частей — сегментной и смещения. Обычно их записывают через двоеточие (например 0100:0500). Линейный адрес любой ячейки памяти получается в результате сложения смещения и сегментной части, сдвинутой на 4 бита влево.

Начало сегмента всегда выровнено на границу параграфа (адрес кратен 16 байтам). Максимальный размер сегмента равен 216 = 64 КБайта. А всего можно адресовать 220 = 1 МБайт памяти. Конечно, сейчас такой объем памяти кажется смешным, но раньше это было очень много 🙂

Читать полностью »

Преобразование 64-битного числа в строку

Автор: xrnd | Рубрика: Исходники | 27-12-2010

В части 22 учебного курса рассматривались способы преобразования чисел в строку. Однако, вывести в десятичном виде число больше 32 бит не так просто. Сложность в том, что требуется делить число на 10, а число слишком большое и в регистры DX:AX не помещается.

К счастью, в программе на ассемблере можно делить числа любой разрядности 🙂 Правда, одной командой DIV тут не обойтись. Придётся реализовать специальный алгоритм.

Читать полностью »

Работа с файлами в DOS

Автор: xrnd | Рубрика: Исходники | 25-12-2010

Эта статья лишь небольшой пример того, как можно работать с файлами, используя функции DOS. Я не буду описывать все возможные значения параметров и вдаваться в подробности. Это вы можете найти самостоятельно в справочнике.

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

Создание нового файла

Прежде, чем что-то записывать, необходимо создать файл. Для этого используется функция DOS 3Ch.

Читать полностью »

Учебный курс. Часть 30. Команды работы с битами

Автор: xrnd | Рубрика: Учебный курс | 13-12-2010

Работать с отдельными битами операндов можно, используя логические операции и сдвиги. Однако, кроме них в системе команд x86 существуют специальные команды для работы с битами: это команды сканирования битов и команды проверки (и модификации) битов. Впервые они появились в процессоре i386. Так что сейчас вы вряд ли найдёте процессор, в котором их нет.

Команды сканирования битов

Сканирование битов выполняется командами BSF и BSR. Эти команды очень похожи. У них 2 операнда. Первый операнд должен быть 16-битным регистром, в него записывается результат. Второй операнд может быть 16-битным регистром или словом в памяти — это обрабатываемое значение.

Команда BSF просматривает биты второго операнда от младшего к старшему и помещает индекс первого единичного бита в регистр. Биты нумеруются, начиная с нуля. Если единичный бит найден, то флаг нуля сбрасывается (ZF=0). Если все биты нулевые, то флаг нуля устанавливается (ZF=1), а значение первого операнда будет неопределённым (на разных процессорах может быть по-разному). Например, мой процессор (Athlon XP) в этом случае не изменяет значение в регистре. Пример кода:

    mov ax,01011000b  ;AX=58h
    bsf bx,ax         ;BX=3, ZF=0
    xor ax,ax         ;AX=0
    bsf bx,ax         ;BX=?, ZF=1

Читать полностью »

Учебный курс. Часть 29. Макросы PROC и ENDP

Автор: xrnd | Рубрика: Учебный курс | 06-12-2010

Наверно, вы заметили, что довольно неудобно обращаться к параметрам и локальным переменным, указывая смещения относительно регистра BP. Такой способ подходит только для совсем простых и маленьких процедур. Поэтому в таких ассемблерах, как TASM и MASM, существуют специальные директивы, позволяющие создавать процедуры быстро и удобно. В FASM таких директив нет! Но они и не нужны — то же самое можно сделать с помощью макросов.

Для начала, нам потребуется заголовочный файл с макросами. Стандартный пакет FASM для Windows, к сожалению, не включает в себя макросы для 16-битных процедур. Однако такие макросы можно найти на официальном форуме FASM или скачать здесь: PROC16.INC. Это переделанная версия файла PROC32.INC с точно таким же синтаксисом.

Заголовочный файл необходимо будет включить в программу с помощью директивы include:

1
include 'proc16.inc'

Базовый синтаксис объявления процедуры

Для создания процедуры используется следующий синтаксис:

proc <имя_процедуры>[,][<список_параметров>]
    ...
    ret
endp

Читать полностью »