Я пытаюсь выполнить Shellcode с функцией execve вместе с аргументами команд, т. Е. '/ Bin / ls -l'. Что я знаю, так это то, что шелл-код не может работать должным образом, если в нем есть нулевые байты.
Но мой шелл-код имеет нулевые байты, когда я помещаю аргумент -l в стек, и он работает просто отлично. Почему?
08048060 <_start>:
;Pushing /x00
8048060: 31 c0 xor eax,eax
8048062: 50 push eax
8048063: 68 6e 2f 6c 73 push 0x736c2f6e ;Pushing //bin/ls
8048068: 68 2f 2f 62 69 push 0x69622f2f
804806d: 89 e3 mov ebx,esp
804806f: 50 push eax
8048070: 89 e2 mov edx,esp
8048072: 50 push eax
8048073: 68 2d 6c 00 00 push 0x6c2d ; Pushing '-l' which has null bytes
8048078: 89 e6 mov esi,esp
804807a: 50 push eax
804807b: 56 push esi
804807c: 53 push ebx
804807d: 89 e1 mov ecx,esp
804807f: b0 0b mov al,0xb
8048081: cd 80 int 0x80