sh711 님의 블로그

patchelf 및 glibc 본문

Tools

patchelf 및 glibc

sh711 2025. 3. 18. 00:42

 

라이브러리 변경 

patchelf --replace-needed libc.so.6 [변경 라이브러리 경로] [파일명]

 

ld 변경

patchelf --set-interpreter [ld 경로] [파일명]

 

 

 

 

로컬에서 glibc 빌드 시 ld버전 등의 문제로 원활하게 빌드가 불가능하다

아래 링크 도커 이미지를 통해 손쉽게 원하는 glibc 버전 환경 구성이 가능하다

https://github.com/sgerrand/docker-glibc-builder

 

GitHub - sgerrand/docker-glibc-builder: A glibc binary package builder in Docker

A glibc binary package builder in Docker. Contribute to sgerrand/docker-glibc-builder development by creating an account on GitHub.

github.com

 

도커 내 glibc가 설치된 디렉터리를 로컬로 복사한다

docker pull sgerrand/glibc-builder
docker run --env STDOUT=1 sgerrand/glibc-builder [2.35] /usr/glibc-compat
docker cp [컨테이너명]:/usr/glibc-compat ~/glibc-2.35


혹은 자동 복사
docker run --rm -v /path/to/local/dir:/usr/glibc-compat sgerrand/glibc-builder 2.30 /usr/glibc-compat

 

 

glibc 버전 찾기

지금까지 여기를 사용했지만 libc-database 도구를 사용하려한다

https://libc.rip/

 

libc-database

 

libc.rip

 

https://github.com/niklasb/libc-database

 

GitHub - niklasb/libc-database: Build a database of libc offsets to simplify exploitation

Build a database of libc offsets to simplify exploitation - niklasb/libc-database

github.com

해당 깃 클론 후 ./add ubuntu debian 입력 시 db에 라이브러리와 심볼 파일들이 다운받아진다

 

라이브러리 버전 찾기