• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья ASM обучение #2 Установка ПО и первая программа

Сегодня мы установим среду разработки, и создадим свою первую программу

Сборка-Настройка Среды

Настройка Локальной Среды

Язык ассемблера зависит от набора инструкций и архитектуры процессора. В этом уроке мы сосредоточимся на процессорах Intel-32, таких как Pentium. Чтобы следовать этому руководству, вам понадобится:
  1. IBM PC или любой эквивалентный совместимый компьютер
  2. Копия операционной системы Linux
  3. Копия программы ассемблера NASM
  4. Есть много хороших ассемблерных программ, таких как ...
  5. Ассемблер Microsoft (MASM)
  6. Борланд Турбо ассемблер (ТАСМ)
  7. Ассемблер GNU (GAS)
Мы будем использовать ассемблер NASM, так как он бесплатный. Вы можете скачать его из различных веб-источников. Также на него много документации и вы можете получить много информации в сети. Может использоваться как в Linux, так и в Windows.

Установка NASM

Если вы выберете "инструменты разработки" при установке Linux, вы можете установить NASM вместе с операционной системой Linux, и вам не нужно загружать и устанавливать его отдельно. Чтобы проверить, установлен ли NASM, выполните следующие действия:
  1. Откройте терминал Linux.
  2. Введите whereis nasm и нажмите ENTER.
  3. Если он уже установлен, появится строка, например, nasm: /usr/bin/nasm. В противном случае вы увидите только nasm:, затем вам нужно установить NASM.
Чтобы установить NASM, выполните следующие действия:
  1. Проверьте веб-сайт netwide assembler (NASM) для получения последней версии.
  2. Скачайте исходный архив Linux nasm-X. XX.та.gz, где X. XX - номер версии NASM в архиве.
  3. Распакуйте архив в каталог, который создает подкаталог nasm-X. XX.
  4. Диск на NASM-Х. ХХ и ввести ./configure. Этот sh скрипт найдет лучший компилятор C для использования и настроит Makefiles.
  5. Введите make для создания двоичных файлов nasm и ndisasm.
  6. Введите make install, чтобы установить nasm и ndisasm в /usr/local/bin и установить man-страницы.
Это должно установить NASM в вашей системе. Кроме того, можно использовать дистрибутив RPM для Fedora Linux. Эта версия проще в установке, просто дважды щелкните файл RPM.

Сборка - Базовый Синтаксис

Программа сборки можно разделить на три части:
  1. Раздел данных
  2. Раздел bss
  3. Текстовый раздел
Раздел данных

Раздел данных используется для объявления инициализированных данных или констант. Эти данные не изменяются во время выполнения. Можно объявить различные постоянные значения, имена файлов,размер буфера и т. д. в этом разделе.

Синтаксис для объявления раздела данных:
Код:
section.data
Секция BSS

Раздел bss используется для объявления переменных. Синтаксис для объявления раздела bss:
Код:
 section.bss
Текстовый раздел

Текстовый раздел используется для хранения фактического кода. Этот раздел должен начинаться с объявления global_start, которое сообщает ядру, где начинается выполнение программы.

Синтаксис для объявления текстового раздела:
Код:
 section.text global _start _start:
Комментарии

Комментарий на языке ассемблера начинается с точки с запятой (;). Он может содержать любые печатные символы, включая пробел. Он может появиться на линии сам по себе, как ...
Код:
 ; Эта программа отображает сообщение на экране
или, на той же линии, вместе с инструкцией, как
Код:
 add eax, ebx  ; добавляет значение регистра ebx в eax
Заявления На Языке Ассемблера

Программы на ассемблере состоят из трех типов операторов:
  1. Исполняемые инструкции или инструкции
  2. Директивы ассемблера или псевдо-операции
  3. Макросы
Исполняемые инструкции или просто инструкции говорят процессору, что делать. Каждая инструкция состоит из кода операции (opcode). Каждая исполняемая инструкция генерирует одну инструкцию машинного языка.

Директивы ассемблера или псевдо-opstell ассемблера о различных аспектах процесса сборки. Они не являются исполняемыми и не генерируют инструкции машинного языка.

Макросы-это в основном механизм подстановки текста.

Синтаксис операторов языка ассемблера

Операторы языка ассемблера вводятся по одному оператору на строку. Каждое заявление имеет следующий формат:
Код:
[label] mnemonic [операнды] [; комментарий]
Поля в квадратных скобках являются необязательными. Базовая инструкция состоит из двух частей, первая из которых-это имя инструкции (или мнемоника), которая должна быть выполнена, а вторая-операнды или параметры команды.

Ниже приведены некоторые примеры типичных операторов assembly language:
Код:
INC COUNT ; прирост памяти переменной
COUNT MOV TOTAL, 48; передача значения 48 в ; переменной памяти
TOTAL ADD AH, BH  ; добавить содержимое
BH регистрировать в AH зарегистрируйтесь
AND MASK1, 128;  ; переменная MASK1 and 128
ADD MARKS, 10 ; Добавить 10 переменной MARKS MOV AL, 10  ; первести значение 10 в AL регистр
Программа Hello World в ASM

Следующий код языка ассемблера отображает строку "Hello World" на экране −
Код:
section .text global _start ;должны быть объявлены для компоновщика (ld)
_start: ;говорит линкеру точку входа
mov edx,len ;сообщает длину
mov ecx,сообщение ;сообщение для записи
mov ebx,1 ;описатель файла (стандартный вывод)
mov eax,4  ;система вызывает номер (sys_write)
int 0x80 ;вызов ядра
mov eax,1 ;система вызывает номер (sys_exit)
int 0x80 ;вызов секции ядра
.data msg db 'Hello, world!', 0xa; строка для вывода
len equ $ - msg; длина строки
Когда приведенный выше код компилируется и выполняется, он дает следующий результат:
Код:
Hello World!
Компиляция и связывание программы сборки в NASM

Убедитесь, что в переменной среды PATH задан путь к двоичным файлам nasmand ld. Теперь выполните следующие шаги для компиляции и компоновки программы
  1. Введите приведенный выше код с помощью текстового редактора и сохраните его как hello.asm.
  2. Убедитесь, что вы находитесь в том же каталоге, где сохранен hello.asm.
  3. Чтобы собрать программу, введите nasm - f ELF hello.asm
  4. Если есть какая-либо ошибка, вы будете оповещены об этом на данном этапе. В противном случае объектный файл программы с именем Hello.o будет создан.
  5. Чтобы связать объектный файл и создать исполняемый файл с именем hello, введите ld-m elf_i386-s-o hello hello.о
  6. Выполните программу, введя ./hello
Если вы все сделали правильно, он отобразит " Hello, world!'на экране.

Хотелось бы сказать сразу для критиков, это перевод!

Также скажу, что у меня есть ноутбук 2003 года на базе Pentium M, соответственно, всё описанное в этой статье будет в ближайшие дни продемонстрировано, со скринами и прочими интересными и нужными вещами.

За сим я откланяюсь, ждите практики на моём древнем ноуте, желаю хорошего дня.


P.S. я прикрепил опрос, по поводу практики на моём примере
 

CKAP

Green Team
10.06.2019
68
39
BIT
0
Мне тут господа "злые дядьки" реверсеры с соседнего цеха не так давно (бли.. ненавижу это слово, звучит как .. Гхм ) .. пару недель назад накидали интересных ликов.. чё добру пропадать. Да и мож тс, что то новое для себя откроет.
---------------------------------
сделать в линуксе аналог exe
сделать в линуксе аналог dll
сделать в линуксе драйвер, аналог sys
дотянуться до переменных окружения в линуксе
запустить любую программу из языка с в линуксе:
IPC лекция Кирилла Кринкина
fork
thread
-------

Собственно там было много годных советов, ели кому интересно
Автор молорик.. Асм в толпе учить веселее.
 

centr

Green Team
31.01.2017
408
475
BIT
0
Конечно не знаю асм, но думаю если тупо скопипастить код и попытаться запустить, то результат будет нулевым.
 

CKAP

Green Team
10.06.2019
68
39
BIT
0
Конечно не знаю асм, но думаю если тупо скопипастить код и попытаться запустить, то результат будет нулевым.

Сча проверим.. я под насм не писал не че.. но вот чет не вижу окончание всего этого действа.. то есть точка входа есть, а де конец..
Не.. 6 утра.. чет я засиделся.. над остыть немного.. потом по тестю...
 
Последнее редактирование:

centr

Green Team
31.01.2017
408
475
BIT
0
Гугл транслэйт конечно рулит, однако он переводит всё и даже то, что переводить не нужно(он же не знает что переводить.).

Введите приведенный выше код с помощью текстового редактора и сохраните его как hello.asm

Почему гугл транслэйт?
Да потому что если писать самому, то вероятнее всего будет написано:

Поместите приведённый выше код в текстовый редактор....

С телефона не так удобно писать.
 

dieZel

Green Team
08.04.2018
227
597
BIT
0
Гугл транслэйт конечно рулит, однако он переводит всё и даже то, что переводить не нужно(он же не знает что переводить.).

Введите приведенный выше код с помощью текстового редактора и сохраните его как hello.asm

Почему гугл транслэйт?
Да потому что если писать самому, то вероятнее всего будет написано:

Поместите приведённый выше код в текстовый редактор....

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

Конечно не знаю асм, но думаю если тупо скопипастить код и попытаться запустить, то результат будет нулевым.
Я же писал, на днях сделаю практику на своём примере
 

CKAP

Green Team
10.06.2019
68
39
BIT
0
не гугл, а яндекс,

В таком случае гуль будет удачнее. Не понятно какой тебе от этого кайф.. Заниматься сложными переводами матана про Ассемблер без погружения в Ассемблер 0_________о Скажем для меня, как для новичка это просто возможность подсмотреть некие приколюшечки и не более. Я как лопатил русскоязычных авторов, желательно понимающих о чем они пишут, так и буду. За твои труды конечно лукас... Бат, ай донт андестенд юа :))

Отвечая на вопрос Центра.. приём Центр приём.. ыыы

30686


Вобщем нахрапом в НАСМ в прыжке с двух ног сразу, войти.... .... ... не получилось, увы... но мне это пока не о чём не говорит.. может у меня что то настроено через одно место 0____________о Разбираться лениво, подожду практическую работу от ТС.

Аааа я просто не увидел лол...
ну 6 утра было, мне простительно.. Цетр просто протролил ахах

mov ecx,сообщение ;сообщение для записи

Тс у тебя ачепятка
 

dieZel

Green Team
08.04.2018
227
597
BIT
0
Аааа я просто не увидел лол...
ну 6 утра было, мне простительно.. Цетр просто протролил ахах

mov ecx,сообщение ;сообщение для записи

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

CKAP

Green Team
10.06.2019
68
39
BIT
0
спасибо, но похоже я немогу редактировать... видимо через некоторое время уже нельзя редактировать...

Угумс.. 180 минут .. ну так то чё, есть модеры, пиши им.. но дабы не дергать их по каждой мелочи, сразу дополни пост, как ты его видишь, и в сл скинь модеру, на правку основного поста.
 

dieZel

Green Team
08.04.2018
227
597
BIT
0
Угумс.. 180 минут .. ну так то чё, есть модеры, пиши им.. но дабы не дергать их по каждой мелочи, сразу дополни пост, как ты его видишь, и в сл скинь модеру, на правку основного поста.
тогда это сделаю, перед публикацией практики, к тому времени мб ещё правки будут
 

Marylin

Mod.Assembler
Red Team
05.06.2019
296
1 313
BIT
129
ассемблер не для того, чтоб окошки выводить
 

CKAP

Green Team
10.06.2019
68
39
BIT
0
ассемблер не для того, чтоб окошки выводить

И живите теперь с этим как хотите...
-----------------------------------------
1) Компактный
2) Быстрый
3) Не крос платформенный
4) можно смотреть чужой код
5) можно отлаживать чужой код
-------------------------------------
Что я упустил?
 

Marylin

Mod.Assembler
Red Team
05.06.2019
296
1 313
BIT
129
И живите теперь с этим как хотите...
ни одно из перечисленных не относится к асму. Если хотим кодить под окошки, есть сишка. То что она не может делать вставляют асм.

Я не говорю, что тема не нужна, наоборот молодчик автор. Просто не нужно объяснять элементарные вещи. Здесь вроде "ломают", а не строят
 

CKAP

Green Team
10.06.2019
68
39
BIT
0
ни одно из перечисленных не относится к асму.

Да ну..

Если хотим кодить под окошки, есть сишка. То что она не может делать вставляют асм.

Ну теперь я точно все знаю.. так.. а если под пингвина хочу кодить тоооо? Можешь не отвечать.
-----------------------------------------------------------------------------------------
Мне Асм нужен для дебага.. вообще не чего кодить не собираюсь. Наверное.
 

CKAP

Green Team
10.06.2019
68
39
BIT
0
поэтому промолчу

Не не.. всё я тебя услышал.. вобчем ну его.. вечер хороший такой, нет желания уравнивать посылы. Если хочешь что то дополнить про Асм то пожалуйста.. чеб нет.

зы. Стоило обратить внимание, что ТС не какие элементарные вещи тут не разжевывает, он просто занимается переводами. Причем не ясно на сколько хорошо он это делает, и на сколько хорошо понимает сабж.. вобче не чё не ясно. Но так даже интереснее Ыыыы :)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!