IO_FILE은 리눅스 시스템의 표준 라이브러리에서 파일 스트림을 나타내기 위한 구조체
fopen, fwrite과 같은 함수를 통해 파일 스트림을 열때 힙에 할당
IO_FILE 구조체의 멤버 변수중 _flags는 파일에 대한 추가권한을 의미, 0xfbad0000가 magic number
_chain : IOFILE 구조체는 chain필드를 통해 linked_list를 만든다.
실제 파일 스트림을 열때는 io_file_plus 구조체 리턴
io_file_plus 구조체는 파일 스트림에서의 함수 호출을 용이하게 하기 위해 io_file 구조체에 함수 포인터 테이블을 가리키는 포인터를 추가한 구조체
io_jump_t에는 파일에 관련된 여러 동작을 수행하는 함수 포인터들이 저장. 이들은 fread, fwrite, fopen 과 같은 표준 함수들에서 호촐됨.
stdin, stdout, stderr 세 파일 스트림은 프로세스가 시작할 때 라이브러리에 의해 기본적으로 생성되는 파일 스트림
파일 함수가 호출되면 파일 포인터의 vtable에 있는 함수 포인터 호출.
IO_FILE_Vtable overwrite
IO_FILE은 리눅스 시스템의 표준 라이브러리에서 파일 스트림을 나타내기 위한 구조체
fopen, fwrite과 같은 함수를 통해 파일 스트림을 열때 힙에 할당
IO_FILE 구조체의 멤버 변수중 _flags는 파일에 대한 추가권한을 의미, 0xfbad0000가 magic number
_chain : IOFILE 구조체는 chain필드를 통해 linked_list를 만든다.
실제 파일 스트림을 열때는 io_file_plus 구조체 리턴
io_file_plus 구조체는 파일 스트림에서의 함수 호출을 용이하게 하기 위해 io_file 구조체에 함수 포인터 테이블을 가리키는 포인터를 추가한 구조체
io_jump_t에는 파일에 관련된 여러 동작을 수행하는 함수 포인터들이 저장. 이들은 fread, fwrite, fopen 과 같은 표준 함수들에서 호촐됨.
stdin, stdout, stderr 세 파일 스트림은 프로세스가 시작할 때 라이브러리에 의해 기본적으로 생성되는 파일 스트림
IO_FILE vtable overwrite → FSOP라고 검색하면 많은 자료 나옴
파일 함수가 호출되면 파일 포인터의 vtable에 있는 함수 포인터 호출.
'Technique' 카테고리의 다른 글