Estoy intentando escribir un decodificador de inserción de shell (mi codificador funciona como se esperaba). Pero cuando intento mover un byte a la dirección dentro de un registro me enfrento a una falla de Segmentación.
El error ocurre en esta línea:
mov BYTE PTR [rdi],bl
Aquí está mi código de ensamblaje:
global _start
section .text
_start:
jmp call_decoder
rri_shellcode: db 0x48,0x48,0x5b,0x48,0x90,0x5b
init_decoder:
lea rsi, [rel rri_shellcode]
mov rdi, rsi
inc rdi
xor rax, rax
add rax, 1
xor rbx, rbx
loop_decoder:
mov bl, byte [rsi + rax + 1]
mov byte [rdi], bl
inc rdi
inc rax
loop loop_decoder
call_decoder:
call init_decoder
¿Qué sucede si no puedo mover el byte dentro de bl a la dirección almacenada en rdi?
PS .: Sé que el bucle no funcionará porque todavía no configuré rcx.
Gracias de antemano,
: wq!