Mov byte da indirizzare all'interno di un registro

0

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

    
posta alacerda 29.06.2017 - 04:20
fonte

1 risposta

3

rdi punta a rri_shellcode + 1. Questo si trova nel segmento .text che non è scrivibile per impostazione predefinita, causando così l'errore di segmentazione.

Puoi collegarlo usando l'opzione ld -N se hai veramente bisogno della sezione .text per diventare di lettura / scrittura.

    
risposta data 29.06.2017 - 06:15
fonte

Leggi altre domande sui tag