Я начинаю некоторое время изучать прекрасное искусство шелл-кодирования.Я удаляю все плохие символы из своего шелл-кода, но мне сложно удалить их с адреса, назначенного регистру.У меня есть этот код, который просто вызывает sys_read
, а затем sys_write
:
section .data
welcome db 'Insert password: ', 0xA
welcomeLen dq $-welcome
section .bss
input resb 4
section .text
_start:
mov al, 1
mov dil, 1
mov esi, welcome
mov edx, [welcomeLen]
syscall
; read password
xor al, al
xor dil, dil
mov esi, input
mov dl, 4
syscall
Я запустил objdump, и это вывод:
401072: b0 01 mov al,0x1
401074: 40 b7 01 mov dil,0x1
401077: be 00 20 40 00 mov esi,0x402000
40107c: 8b 14 25 18 20 40 00 mov edx,DWORD PTR ds:0x402018
401083: 0f 05 syscall
401085: 30 c0 xor al,al
401087: 40 30 ff xor dil,dil
40108a: be 5c 20 40 00 mov esi,0x40205c
40108f: b2 04 mov dl,0x4
401091: 0f 05 syscall
Как вы можете видеть только плохиесимволы, которые у меня есть, находятся в этих строках:
mov esi, welcome
mov edx, [welcomeLen]
mov esi, input
Можете ли вы объяснить, как я могу удалить 00
оттуда?