Предположительно, очень просто передать аргументы в системный вызов execve.
В учебном пособии инструктор говорит, что он находится только в одной строке, и оставьте это как упражнение.
Код ниже выполняет команду "ls". И я пытаюсь выполнить что-то вроде "ls -la". После поиска и поиска я все еще не знаю, куда добавить «-la»!
Я знаю, что он находится в структуре, на которую указывает регистр ecx, и что он должен заканчиваться нулем. На данный момент ecx содержит адрес / bin / ls. Должны ли аргументы быть другим адресом? argv - это массив с первым элементом "/bin/ls"...
global _start
section .text
_start:
xor eax, eax
push eax
push 0x736c2f6e
push 0x69622f2f ; //bin/ls
mov ebx, esp
push eax
mov edx, esp
push ebx
mov ecx, esp
mov al, 11
int 0x80
. Это не работает:
xor eax, eax
push eax
push 0x2a632020
push 0x736c2f6e
push 0x69622f2f ; /bin/ls c*
mov ecx, esp