혼자 정리하는 거라서 앞 뒤 뻘글은 무시해도 됩니다
libc sendto를 후킹해 어떤 프로세스가 해당 함수를 실행했는지 알아내려고 한다. 불가능하다(사유는 맨 밑에)
여기서 sockfd.. socket file descriptor에서 뭔가를 건질 수 있지 않을까?
파일 디스크립터(fd)
socket과 같은 파일이나 기타 입출력 리소스에 접근할 때 사용되는 추상 표현.
즉, 시스템으로부터 할당받은 파일이나 소켓을 대표하는 정수.
- 음이 아닌 정수값. int로 표현된다.
- fd의 0-2번 까지는 고정. (unistd.h 헤더파일에 명시)
- 표준 입력, 표준 출력도 fd로 표현이 되는데, 이들은 프로그램이 시작되면 기본적으로 열리고, 종료시 자동으로 닫힌다.
- 표준 입력 : fd 0
- 표준 출력 : fd 1
- 표준 에러 출력 : fd 2
파일 오픈 또는 소켓 생성 시 부여되는 fd는 3부터 시작이다.
프로세스가 실행 중에 파일을 오픈하면 커널은 해당 프로세스의 fd 숫자 중에 사용하지 않는 가장 작은 값을 할당해준다.
그 다음 프로세스가 열려있는 파일에 시스템 콜을 이용해 접근할 때, fd 값을 이용해 파일을 지칭할 수 있다.
서치중 비극적인 소식
ld_preload= ~~ python ex.py 와 같은 방식으로 하면 된다..
'운영체제' 카테고리의 다른 글
OverlayFS 개념 (0) | 2021.07.24 |
---|---|
Samba (0) | 2021.07.11 |
LD_PRELOAD를 이용한 후킹 (0) | 2021.07.08 |
공유 메모리 (0) | 2021.07.08 |
리눅스 공유 메모리 개념 및 함수 설명 (0) | 2021.07.06 |
댓글