링크와 PLT, GOT

Fransis__·2023년 5월 2일
0

pwn

목록 보기
2/5

  1. Keyword : Lib, Link, PLT, GOT

  2. Library : 프로그램이 함수나 변수를 공유해서 사용할 수 있게 하는 파일

    • C 표준 라이브러리 - libc -> 우분투 기본적, /lib/x86-64-linux-gnu/libc-2.27.so
  3. Link : 프로그램에서 사용하는 어떤 라이브러리의 함수를 프로그램과 연결

  • 전처리 - 컴파일 - 어셈블 -> 오브젝트 파일 - 링크 -> 심볼과 관련된 정보들을 찾아 최종 실행파일에 기록하는 것

  • 동적 링크

    • 동적 라이브러리를 링크하는 것
    • 바이너리 실행 시 동적 lib -> 프로세스 메모리 매핑
    • 실행 중 lib 함수 호출 -> 매핑된 라이브러리에서 호출할 함수 주소 -> 실행
  • 정적 링크

    • 바이너리에 정적 라이브러리의 필요한 모든 함수 포함
    • 함수 호출 시 자신의 함수를 호출하는 것처럼 할 수 있음
    • 여러 바이너리에서 라이브러리 사용 시 용량 낭비
    기준정적 링크동적 링크
    용량높음낮음
    호출 방법함수의 주소로 직접 호출 (저장됨)함수의 plt 주소 호출 (함수 찾아야 함)
  1. PLT(Procedure Linkage Table) & GOT(Global Offset Table)
    • 함수의 주소를 라이브러리에서 찾는 과정에 사용되는 테이블
    • PLT는 GOT를 참조
    • 바이너리 실행 -> Runtime Resolve
    • 테이블 GOT에는 resolve 된 함수의 주소를 저장 & 함수 재호출 시 저장된 주소 꺼내서 사용
profile
_DM_S_1W_ | KH2P

0개의 댓글