PLT, GOT

Linux 2012. 5. 28. 23:30

정리

PLT는 Procedure Linkagble Table 이란 녀석인데,

프로그램이 호출하는 모든 함수들을 나열 하는 테이블이다.

GOT는 Global Offset Table 이라고 하며, 프로그램 실행 후, libc.so내의

실제 함수 주소가 저장되는 곳이다.


가장 처음 공유라이브러리 내의 함수가 호출 되었을 때, 동적 링커는 먼저 PLT를 본다.

PLT는 실제 호출될 함수를 나타내는 값을 _dl_rentime_resolve 함수의 인자로 넘기고

_dl_rentime_resolve 함수는 전달된 인자 값을 사용하여 호출된 함수의 실제 주소를 

구한 후, GOT에 저장 한 뒤 호출된 함수로 점프한다.

이후 동일 한 함수가 다시 호출하게 되면 동적 링커는

GOT에 저장되어있는 호출된 함수의 실제 주소로 바로 점프하게 되는 것이다.



출처 : http://lapislazull.tistory.com/54

블로그 이미지

kuku_dass

,