Sto cercando di scrivere un decodificatore di inserimento shell (il mio encoder funziona come previsto). Ma quando provo a spostare un byte nell'indirizzo all'interno di un registro, devo affrontare un errore di segmentazione.
L'errore si verifica in questa riga:
mov BYTE PTR [rdi],bl
Ecco il mio codice assembly:
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
Che cosa succede che non posso spostare il byte all'interno di bl nell'indirizzo memorizzato all'interno di rdi?
PS .: So che il ciclo non funzionerà poiché non ho ancora impostato rcx.
Grazie in anticipo,
: wq