반응형
PLT (Procedure Linkage Table) : Dynamic Link를 사용 시, 외부 라이브러리에 있는 함수를 연결해주는 테이블.
- 외부 프로시저를 연결해주는 테이블.
- PLT를 통해 다른 라이브러리에 있는 프로시저를 호출해 사용할 수 있다.
GOT (Global Offset Table) : PLT이 참조하는 테이블로서, GOT에는 라이브러리 함수들의 실제 주소가 있다.
- PLT가 참조하는 테이블.
- 외부 라이브러리의 함수/변수의 주소를 담고 있다.
처음으로 함수를 실행한다면 GOT는 함수의 주소를 갖고 있지 않고, 어떤 과정을 거쳐 주소를 알아낸다.
두 번째 호출부터는 첫 번째 호출 때 알아낸 주소로 바로 점프한다.
함수를 실행하기 전
plt address -> got address (jmp plt+6) -> jmp golobal_offset_table -> _dl_runtime_resolve -> _dl_fixup -> _dl_lookup_symbol_x -> jmp function address
함수를 실행한 후
plt address -> got address -> jmp function address
반응형
'시스템해킹&보안 > 리눅스 메모리 보호기법' 카테고리의 다른 글
리눅스 메모리 보호기법 (0) | 2019.09.02 |
---|