운영체제에 명령을 내리기 위해 사용되는 사용자의 인터페이스
운영체제의 핵심 기능을 하는 프로그램
임의의 프로그램을 실행하는 셸코드
execve syscall
syscall rax rdi rsi rdx execve 0x3b const char *filename const char *const *argv const char *const *envp argv : 실행 파일에 넘겨줄 인자
envp : 환경변수
execve("/bin/sh", null, null)1 mov rax, 0x68732f6e69622f 2 push rax 3 mov rdi, rsp ; rdi="/bin/sh" 4 mov rax, 0x3b ; execve 5 xor rsi, rsi ; rsi=0 6 xor rdx, rdx ; rdx=0 7 syscall ; execve("/bin/sh", null, null)