Bem-vindo(a) ao Fórum do Guia do Hacker.
Guia do Hacker - Seu Guia Completo de Informação Digital

Fórum do Guia do Hacker » Programação e Banco de Dados » Programação Desktop » Assembly » Assembly invertendo bytes

Assembly Área destinada a Linguagem Assembly.

Tópicos Similares
Tópico Tópico Iniciado Por Fórum Respostas Última Mensagem
Assembly win 32 N3ur0t1c Assembly 0 31-03-2014 00:19
Software Malware bytes antimalware 1.50 keygen rickim Aplicativos em geral 5 15-05-2011 15:02

Resposta
Ferramentas do Tópico vBmenu Seperating Image Modos de Exibição vBmenu Seperating Image
Assembly invertendo bytes
Antigo 22-09-2015, 20:16   #1
p0w3ll
VIP
 
Avatar de p0w3ll
 
Status: VIP
Registrado em: Mar 2015
Localização: /etc/hosts
Posts: 29
Agradeceu: 31
Agradecido 11 Vezes em 8 Posts
p0w3ll é um desconhecido na estrada
Padrão Assembly invertendo bytes

Mazel Tov!

Hoje vou mostrar como inverter os bits dos valores em assembly:

Vamos ao codigo:

#forum.guiadohacker.com.br
.section .text
.globl _start
_start:
nop
movl $0x12345678, %ebx
bswap %ebx
movl $1, %eax
int $0x80



Salve como algo.s ou algo.asm
Vamos usar o assembler:

as -gstabs -o algo.o algo.s


Vamos linkar:

ld -o algo algo.o


Mais uma vez esse programa nao faz nada, mas vamos usar nosso debugger
para analisar melhor:

gdb -q algo

Vamos setar um breakpoint para ele parar a execução:

break *_start

Execute-o com o "run" e aperte "s" ou "next" para percorrer o programa:
Analisando o valor de EBX antes do BSWAP:

print/x $ebx

Nos retorna seu valor: 0x12345678

Depois do BSWAP o registrador EBX tem seu valor alterado:

EBX = 0x78563412

E isso que o BSWAP faz: inverte os bytes.

Vou ressaltar que ele não muda os bits em si e sim os bytes, exemplo:

EBX = 0x12345678
BSWAP EBX

ERRADO --> EBX = 0x87654321
CORRETO->> EBX = 0X78563412


Pense que como são numeros em hexa cada caractere equivale a 4bits.
E como o BSWAP Inverte os BYTES e não os bits o valor apresentado esta certo.

Mas para que isso afinal?

Well... Isso vai produzir um valor big-endian de um valor little-endian, isso
eh util quando vamos trabalhar em computadores e sistemas diferentes.

Para esclarecer um pouco oque é big e little endian vou citar um exemplo:
Temos o valor 0x04030201

Big-Endian: Armazena o byte mais significativo(maior) antes:


04 | 03 | 02 | 01
X | X+1 | X+2 | X+3

Sendo X um local de memoria, percebe-se que 04(maior valor) foi armazenado no
menor endereco.

Little-Endian:
Valor: 0x04030201


01 | 02 | 03 |04
X | X+1 | X+2 |X+3


O LE armazena o byte menos significante no menor endereco.


Para melhor entendimento, troque os valores a serem armazenados e rode no GDB.
Att. p0w3ll



Notice: This Ad only show to guest, please register now to disappear !
__________________

p0w3ll está offline   Responder com Citação
O seguinte Usuário Agradeceu (a): p0w3ll por gostar desta postagem:
DastSec (01-09-2019)
Links Patrocinados
Resposta

Tags
analisar, assembly, blue, byte, codigo, como, computadores, dos, emos, entendimento, errado, exemplo, forum, guiadohacker, isso, maior, memoria, nao, numeros, print, programa, rar, sec, seu, sistemas

Ferramentas do Tópico
Modos de Exibição

Regras para Posts
Você não pode postar novos tópicos
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar seus posts

Código [IMG] Sim
Código HTML Não

Ir para...


 

Horários baseados na GMT -3. Agora são 18:27.


Please enable / Bitte aktiviere JavaScript!
Veuillez activer / Por favor activa el Javascript![ ? ]