Ассемблер
INHIDEПривет, "Хацкер"... Эту идею мы вынашивали долго. Наверное, несколько лет мы штурмовали ее со всех сторон, и всякий раз нам что-нибудь мешало. С одной стороны, ассемблер — это круто настолько, насколько вообще может быть круто для нашего читателя-хакера (крякера, реверсера) умение общаться с компьютером на его языке. С другой стороны — актуальных руководств по асму, в том числе издания этого века, достаточно, а времена нынче либеральные, веб-хакеры и любители JS могут нас не понять и не одобрить. Оказалось, что сейчас, в XXI веке, тру-крякеры все еще не сдали своих позиций и нашим читателям это интересно!
Ассе́мблер (от англ. assembler — сборщик) — компьютерная программа, компилятор исходного текстапрограммы, написанной на языке ассемблера, в программу на машинном языке.
Как и сам язык (ассемблера), ассемблеры, как правило, специфичны для конкретной архитектуры, операционной системы и варианта синтаксиса языка. Вместе с тем существуют мультиплатформенные иливовсе универсальные (точнее, ограниченно-универсальные, потому что на языке низкого уровня нельзянаписать аппаратно-независимые программы) ассемблеры, которые могут работать на разных платформах иоперационных системах. Среди последних можно также выделить группу кросс-ассемблеров, способныхсобирать машинный код и исполняемые модули (файлы) для других архитектур и ОС.
Ассемблирование может быть не первым и не последним этапом на пути получения исполнимого модуляпрограммы. Так, многие компиляторы с языков программирования высокого уровня выдают результат в видепрограммы на языке ассемблера, которую в дальнейшем обрабатывает ассемблер. Также результатомассемблирования может быть не исполнимый, а объектный модуль, содержащий разрозненные блокимашинного кода и данных программы, из которого (или из нескольких объектных модулей) в дальнейшем спомощью программы-компоновщика может быть скомпонован исполнимый файл.
Архитектура x86
Ассемблеры для DOS
Наиболее известными ассемблерами для операционной системы DOS являлись Borland Turbo Assembler(TASM), Microsoft Macro Assembler (MASM) и Watcom Assembler (WASM). Также в своё время был популяренпростой ассемблер A86.
Windows
При появлении операционной системы Windows появилось расширение TASM, именуемое TASM 5+ (неофициальный пакет, созданный человеком с ником !tE), позволившее создавать программы длявыполнения в среде Windows. Последняя известная версия TASM — 5.3, поддерживающая инструкции MMX, на данный момент включена в Turbo C++ Explorer. Но официально развитие программы полностьюостановлено.
Microsoft поддерживает свой продукт под названием Microsoft Macro Assembler. Она продолжает развиваться ипо сей день, последние версии включены в наборы DDK. Но версия программы, направленная на созданиепрограмм для DOS, не развивается. Кроме того, Стивен Хатчессон создал пакет для программирования наMASM под названием «MASM32».
GNU и GNU/Linux
В состав операционной системы GNU входит пакет binutils, включающий в себя ассемблер gas (GNUAssembler), использующий AT&T-синтаксис, в отличие от большинства других популярных ассемблеров, которые используют Intel-синтаксис (поддерживается с версии 2.10).
Переносимые ассемблеры
Также существует открытый проект ассемблера, версии которого доступны под различные операционныесистемы, и который позволяет получать объектные файлы для этих систем. Называется этот ассемблер NASM(Netwide Assembler).
Yasm — это переписанная с нуля версия NASM под лицензией BSD (с некоторыми исключениями).
flat assembler (fasm) — молодой ассемблер под модифицированной для запрета перелицензирования (в томчисле под GNU GPL) BSD-лицензией. Есть версии для KolibriOS, Linux, DOS и Windows; использует Intel-синтаксис и поддерживает инструкции x86-64.
Архитектуры RISC
MCS-51
MCS-51 (Intel 8051) — классическая архитектура микроконтроллера. Для неё существует кросс-ассемблерASM51, выпущенный корпорацией MetaLink.
Кроме того, многие фирмы — разработчики программного обеспечения, такие как IAR или Keil, представилисвои варианты ассемблеров. В ряде случаев применение этих ассемблеров оказывается более эффективнымблагодаря удобному набору директив и наличию среды программирования, объединяющей в себепрофессиональный ассемблер и язык программирования Си, отладчик и менеджер программных проектов.
AVR
На данный момент существуют 3 компилятора производства Atmel (AVRStudio 3, AVRStudio 4, AVRStudio 5 иAVRStudio 6).
В рамках проекта AVR-GCC (он же WinAVR) существует компилятор avr-as(это портированный под AVRассемблер GNU as из GCC).
Также существует свободный минималистический компилятор avra[1].
ARM
Создать карусель Добавьте описание Этот раздел не завершён.Вы поможете проекту, исправив и дополнив его.
PIC
Пример программы на языке Assembler для микроконтроллера PIC16F628A:
LIST p=16F628A __CONFIG 0309H STATUS equ 0x003 TRISB equ 0x086 PORTB equ 0x006 RP0 equ 5 org 0 goto start start: bsf STATUS,RP0 movlw .00 movwf TRISB bcf STATUS,RP0 led: movlw .170 movwf PORTB goto led end
AVR32
Создать карусель Добавьте описание Этот раздел не завершён.Вы поможете проекту, исправив и дополнив его.
MSP430
Пример программы на языке Assembler для микроконтроллера MSP430G2231 (в среде Code Composer Studio):
.cdecls C,LIST, "msp430g2231.h" ;------------------------------------------------------------------------------ .text ; Program Start ;------------------------------------------------------------------------------ RESET mov.w #0280h,SP ; Initialize stackpointer StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT SetupP1 bis.b #001h,&P1DIR ; P1.0 output ; Mainloop bit.b #010h,&P1IN ; P1.4 hi/low? jc ON ; jmp--> P1.4 is set ; OFF bic.b #001h,&P1OUT ; P1.0 = 0 / LED OFF jmp Mainloop ; ON bis.b #001h,&P1OUT ; P1.0 = 1 / LED ON jmp Mainloop ; ; ;------------------------------------------------------------------------------ ; Interrupt Vectors ;------------------------------------------------------------------------------ .sect ".reset" ; MSP430 RESET Vector .short RESET ; .end
PowerPC
Создать карусель Добавьте описание Этот раздел не завершён.Вы поможете проекту, исправив и дополнив его.
Программный пакет The PowerPC Software Development Toolset от IBM включает в себя ассемблер дляPowerPC.
MIPS
Создать карусель Добавьте описание Этот раздел не завершён.Вы поможете проекту, исправив и дополнив его.
Архитектуры MISC
Создать карусель Добавьте описание Этот раздел не завершён.Вы поможете проекту, исправив и дополнив его.
SeaForth
Существуют:
- 8-разрядные Flash-контроллеры семейства MCS-51
- 8-разрядные RISC-контроллеры семейства AVR (ATtiny, ATmega, classic AVR). На данный момент семействоclassic AVR трансформировано в ATtiny и ATmega
- 8-разрядные RISC-контроллеры семейства PIC (PIC10,PIC12,PIC16,PIC18)
- 16-разрядные RISC-контроллеры семейства PIC (PIC24HJ/FJ,dsPIC30/33)
- 32-разрядные RISC-контроллеры семейства PIC (PIC32) с архитектурой MIPS32 M4K
- 32-разрядные RISC-контроллеры семейства AVR32 (AVR32)
- 32-разрядные RISC-контроллеры семейства ARM Thumb высокой производительности (серия AT91)
Макроассемблер
В викисловаре есть статья «макроассемблер»
Не следует путать с MASM.
Макроассемблер (от греч. μάκρος — большой, обширный) — макропроцессор, базовым языком которогоявляется язык ассемблера.[2]
Ассемблирование и компилирование
Процесс трансляции программы на языке ассемблера в объектный код принято называть ассемблированием. В отличие от компилирования, ассемблирование — более или менее однозначный и обратимый процесс. Вязыке ассемблера каждой мнемонике соответствует одна машинная инструкция, в то время как в языкахпрограммирования высокого уровня за каждым выражением может скрываться большое количестворазличных инструкций. В принципе, это деление достаточно условно, поэтому иногда трансляциюассемблерных программ также называют компиляцией.
INHIDE
Спасибо за прочтение данного материала, наши проекты:
INHIDE - канал в котором вы найдете много интересного контента из мира даркнета.
Cicada 3301 - канал, посвященный взломам, даркнету, кардингу, СИ и разной чернухи.
Cicada 3301 | ЧАТ - чат, где настоящие хацкеры обсуждают черные делишки, при этом, их не загребут на зону, ведь они полностью анонимны.