Escolar Documentos
Profissional Documentos
Cultura Documentos
| | | ____|| ____|| | / __ \ / |
| | | |__ | |__ `---| |----`| | | | | (----`
| | | __| | __| | | | | | | \ \
| `----.| |____ | |____ | | | `--' | .----) |
|_______||_______||_______| |__| \______/ |_______/
-------------índice------------------
-------------------------------------
--------------0x1--------------------
os exemplos vao ser feitos com a linguagem C, por ela ser AT&T..
basicamente irei falar sobre a interrupção 0x80, que executa uma syscall
(system_call) apontada em EAX, que são:
----------------0x0a-----------------
----------------0x2------------------
entao, nesse exemplo irei usar a sys_write, e a sys_close, com a interrupção 0x80
em C usamos a função write(); assim: ssize_t write(int fd, const void *buf, size_t
count);
em seguida a exit(): void exit(int status);
para os curiosos que quiserem ver o hexa das funções, podem consultar com:
bom, em assembly irá ser quase a mesma coisa, file descriptor (fd), buffer (dados),
count (bytes a ser imprimidos no file descriptor)
no caso do exit, ele recebe um inteiro (status) positivo: 0, negativo: 1, a função
é para simplesmente para terminar o processo.
porém com registradores, tendo em mente isso, os registradores são:
A - Acumulador
B - Base
D - Dados
C - Contador
SI - Source Index (de Source)
DI - Destination Index (para Destino)
é bom também saber que:
AX - usando o registrador inteiro, assim vale para todos.
AL - acessando o byte menos significativo desse registrador. (low-endianness)
AH - acessando o byte mais significativo desse registrador. (high-endianness)
EAX - Extended Register (E) que contém 32 bits, nesse caso um acumulador com 32
bits sendo usado completamente. (usando 32 bits)
bom, seguindo com o hello world (com anotações), vai funcionar da seguinte maneira:
; agora depois da função write, temos que fechar o processo (ou você quer executar
isso pra sempre? rs)
---------------0x0a-------------------
-----------------0x3------------------
https://www.linuxjournal.com/article/4048
http://www.linfo.org/int_0x80.html
https://www.docow.com/48033/o-que-significa-int-0x80-no-codigo-assembly.html
----------------0x0a------------------
Gr33tZ: nyoonki, stack, usuário, kosu, lynfs, Nikt, Kristian, heap, darknessxk,
Mark Security
e a todo o pessoal da leetos.
==========================================
= EOF =
==========================================