티스토리 뷰
정적 라이브러리와 공유 라이브러리
정적 라이브러리(Static Library)
여러 프로그램에서 사용되는 함수를 포함하는 오브젝트 파일들을 ar명령을 이용하여 하나의 아카이브 파일로 모아놓은 것.
정적 라이브러리 생성
gcc를 이용하여 오브젝트 코드 생성.
ar 프로그램을 이용하여 라이브러리 파일(.a) 생성 (명령어 ar rv [.a] [.o])
정적 라이브러리를 포함하여 컴파일 옵션 : gcc [.c] -o [프로그램명] [.a]
특징
링커는 지정된 정적 라이브러리에서 해당 심볼을 정의하고 있는 오브젝트 파일의 사본을 추출해서 실행 파일 내에 포함시킴.
정적 라이브러리를 이용하여 실행 파일을 생성하면 해당 실행 파일 내에 라이브러리 함수의 코드가 포함 됨.
따라서 다른 시스템에서도 잘 동작함.
각각의 실행 파일마다 똑같은 라이브러리 함수의 코드가 포함 되기 때문에 메모리상의 여러 곳에 존재하게 되므로 낭비가 됨.
공유 라이브러리
여러 오브젝트 파일을 하나의 오브젝트 파일로 만들어 공유 할 수 있도록 한 것
정적 라이브러리와 달리 실행 파일에 함수 코드가 포함되는 것이 아니라 실행 시 공유 라이브러리를 참조하는 방식
공유 라이브러리 생성
함수를 .c 파일로 정의
gcc -c -fPIC [.c] // 독립적인 코드로 만들기 위해 gcc의 -fPIC 옵션을 이용하여 컴파일
gcc -shared -o [.so] [.o] // 공유 라이브러리 .so 파일 생성
/etc/Id.so.conf.d 디렉터리 안에 *.conf 란 파일명으로 파일을 만들고 그안에 자신이 만든 공유 라이브러리 파일의 전체 경로를 적음( include /etc/ld.so.conf.d/*.conf
Idconfig 명령을 이용하여 캐쉬를 갱신
특징
실제 라이브러리 코드는 실행 파일에 포함되어 있지 않고 공유 라이브러리에만 존재
따라서 실행 파일을 배포 할 때 실행 파일과 공유 라이브러리를 함께 배포해야함
'pwnable > 정리' 카테고리의 다른 글
pwntools shellcraft (0) | 2018.07.12 |
---|---|
pwntool 기본 사용법 정리 (0) | 2018.01.25 |
linux 환경에서의 메모리 보호기법들 2 (RELRO) (0) | 2018.01.13 |
linux 환경에서의 메모리 보호기법들 1 (ASLR, DEP, ASCII-Armor, Stack Canary) (0) | 2018.01.08 |
PLT와 GOT (0) | 2018.01.07 |
- 해킹
- stack reusing
- shellcoding
- SQLi
- TLS
- pwnable
- srop
- ebp change
- tcache
- hacking
- oob
- heap
- codegate
- overflow
- HackCTF
- exit
- glibc
- pwable
- rt_sigreturn
- 본선가고싶다
- pwnable.tw
- fastbin
- fsop
- fastbindup
- FSB
- Total
- Today
- Yesterday