我想编写一个汇编程序,该程序通过 EXECVE(系统调用 #0x3C)程序 /bin/ls 和开关 -al 执行。
手册页 (man 2 execve) 指出调用需要三个值:
int execve(const char *filename, char *const argv[], char *const envp[]);
我不太明白如何建立三个论点。据我所知,第一个参数进入RDI,第二个进入RSI,第三个进入RDX。我相信设置第一个就足够了
push 0x736c2f2f ;sl//
push 0x6e69622f ;nib/
mov rdi, rsp
Run Code Online (Sandbox Code Playgroud)
对于第三个,事情很简单:
xor r11, r11
mov rdx, r11
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道如何构建第二个参数,它应该是一个包含 ['/bin//ls', '-aal']
我需要为 x86-64 编写它,所以请不要int 0x80提出建议。