IT 그리고 정보보안/Knowledge base

Shell 실행 함수 종류

plummmm 2021. 4. 18. 19:49
반응형

execl()

int execl(const char *path, const char *arg0, ..., const char *argn, (char *)0);

 

디렉토리와 파일 이름이 합쳐진 절대 경로로써 파일 이름을 입력해 주어야 한다.

그리고 argv[n]의 값을 수정할 수 있다.

e.g. execl("/bin/sh", "/bin/sh", NULL);

 

execle()

int execle( const char *path, const char *arg ,..., char * const envp[]);

 

execl()과 같지만 환경변수까지 설정할 수 있는 함수이다.

다른건 execl()과 같음.

 

execlp()

int execlp( const char *file, const char *arg, ...);

 

환경변수 PATH에 등록된 모든 디렉토리에 있는 프로그램을 실행하므로, 절대 경로를 입력해줄 필요가 없다.

명령어만 입력하면 된다.

e.g. execlp("ls", "ls", NULL);

 

execv()

int execv( const char *path, char *const argv[]);

 

execl() 계열과 다르게 argv인자를 배열로 받는다.

execl 계열이 인자를 하나씩 입력해주어야 했따면, exev 는 배열로 지정하여

배열의 첫번째 주소만 넣어주는 것. (null이 나올때 까지 읽음)

 

execve()

int execve (const char *filename, char *const argv [], char *const envp[]);

 

execv와 동일하지만 환경변수도 배열로 받아 설정할 수 있다.

셸코드에 주로 많이 쓰는 함수

 

execvp()

int execve (const char *filename, char *const argv []);

 

execv가 모든 경로를 다 포함해주어야 하는 반면 파일 이름만 적으면 실행된다.

execlp 와 같은 거다.

반응형

'IT 그리고 정보보안 > Knowledge base' 카테고리의 다른 글

od(octal dump)  (0) 2021.04.18
C언어 컴파일 과정  (0) 2021.04.18
시스템 콜 (System Call)  (0) 2021.04.18
리눅스 find 명령어 활용  (0) 2021.04.18
SFX (Self-extracting file) Archive  (0) 2021.04.18