Уроците на Jonie

( БЪРЗ КУРС ПО ASSEMBLER )


Този урок има за цел обясняването на най-важните за един кракер неща свързани с познаването и използването на assembler.

 

Регистри

Регистрите на процесора са основната част в която се съхраняват данни.
Те се делят на две групи: регистри за данни и регистри за адреси.
Регистрите за данни са: (Е)AX, (E)BX, (E)CX и (E)DX ( (E) при 32-битови).
Регистрите за адреси се делят на три групи:
 1. Указателни (E)SP, (E)BP, (E)IP
 2. Индексни (E)SI, (E)DI
 3. Сегментни CS, DS, SS, ES
Регистрите на които трябва да обръщаме най-голямо внимание са:
 1. Регистрите за данни:
    (E)AX – Акумулатор
    (E)BX – База
    (E)CX – Брояч
    (E)DX – Данни
 2. Индексните регистри:
(E)SI – регистър за операнд ( източник)
(E)DI – регистър за резултат ( цел )

 

Флагове

Флаговете са част от регистрите на процесора, където се запаметяват
определени резултати от аритметично-логически операции.
Информацията в тях е необходима за следващите инструкции за
условни преходи. Резултатът е от булеви тип ( True or False ) 0 или 1

 

 

AND - Събиране

Мнемоничен код:

ADD цел, източник

Действие:

(цел) + (източник); резултат в (цел)

Пример:

ADD EAX, EDX

 

AND - Логическо И

Мнемоничен код:

AND цел, източник

Действие:

(цел) побитово И-свързване с (източник); резултат в (цел)

Пример:

AND AH, 5h

 

CALL - Извикване на процедура

Мнемоничен код:

CALL име на процедура или адрес

Действие:

извиква подпрограма и поставя адреса на обратния преход в  
стека

Пример:

CALL 00456984

 

CMP - Сравняване

Мнемоничен код:

CMP операнд 1, операнд 2

Действие:

Изважда операнд 1 от операнд 2.Резултатът не се запомня, но  
се установяват флаговете

Пример:

CMP EAX, ECX

 

DEC - Намаляване с една единица

Мнемоничен код:

DEC операнд

Действие:

операндът ( байт или дума ) се намалява с единица

Пример:

DEC ECX

 

INC - Увеличаване с единица

Мнемоничен код:

INC операнд

Действие:

операндът се увеличава с единица

Пример:

INC EBX

 

 JMP - Безусловен пеход

Мнемоничен код:

JMP цел

Действие:

безусловен пеход към дадената цел

Пример:

JMP 01AC4F

 

JZ - Преход, ако е нула

Мнемоничен код:

JZ цел

Действие:

преминава към зададената цел, ако резултатът от
последната аритметично-логическа операция е 0

Пример:

JZ 445FAC

 

JNZ - Преход, ако не е нула

Мнемоничен код:

JNZ цел

Действие:

преминава към зададената цел, ако резултатът от
последната аритметично-логическа операция е
различен от 0

Пример:

JNZ 447AD3

 

MOV - Прехвърляне ( копиране )

Мнемоничен код:

MOV цел, източник

Действие:

Копира един байт или дума от операнда-източник
в операнда-цел

Пример:

MOV EAX, ECX

 

 NOP - Няма операция

Мнемоничен код:

NOP

Действие:

не се изпълнява никаква операция. NOP е средство за
запълване на неизползваните байтове на програмата

Пример:

NOP

 

POP - Извеждане от стека

Мнемоничен код:

POP цел

Действие:

най-горната дума от стека се прехвърля в регистъра-цел

Пример:

POP EDX

 

PUSH - Въвеждане в стека

Мнемоничен код:

PUSH източник

Действие:

думата от източника се прехвърля във върха на стека

Пример:

PUSH EAX

 

RET - Връщане от процедура ( подпрограма )

Мнемоничен код:

RET

Действие:

връщане от процедура ( подпрограма )

Пример:

RET

 

 TEST - Проверка ( логическо сравняване )

Мнемоничен код:

TEST операнд 1, операнд 2

Действие:

двата операнда 1 и 2 се свързват побитово чрез логическата
функция И и съответните флагове се установяват

Пример:

TEST EBX, ECX

Hosted by uCoz