PLT와 GOT 이해


PLT와 GOT 이해

먼저 알아둘 것 컴파일 과정(compile process)와 링킹(linking)에 대한 이해 이번에는 컴파일 과정(compile process)의 가장 마지막 단계인 링킹(linking) 중, 외부 라이브러리를 실행 도중 동적으로 연결하는 동적 링킹(dynamic linking)에 관한 내용입니다. 이전 글에서 살짝 말했지만, 아래와 같이 어셈블리어를 보면 printf 함수를 호출할 때 <printf@plt>처럼 표시되는 경우가 바로 이 동적 링크의 경우입니다. 이 뜻은 프로그램이 실행할 때 printf 함수가 있는 (표준) 외부 C 라이브러리를 찾아가는 과정이 필요합니다. 이때 나오는 것이 바로 PLT(Procedure Linkage Table)와 GOT(Global Offset Table)입니다. 간단히 정리해보면 아래와 같습니다. PLT(Procedure Linkage Table): 외부 라이브러리 함수(→프로시저)를 사용할 수 있도록 그 함수가 있는 주소를 (현재 돌아가는)...


#ASLR #so #stdio #stdlib #x64 #리눅스 #링킹 #시스템 #시스템보안 #어셈블리 #이론 #puts #PLT #Assembly #C #C언어 #dynamic #GDB #GNU #GOT #libc #link #Linux #컴파일

원문링크 : PLT와 GOT 이해