glibc-2.5/elf/dl-runtime.c 코드 분석을 통한 lazy binding 재배치 방식 분석

2008. 6. 23. 10:30
Author : 유동훈 (Xpl017Elz) in INetCop
E-mail : szoahc@hotmail.com
Home: http://x82.inetcop.org

 재배치란 무엇인가?

현재 linux ELF에서는 공유라이브러리 핸들링할 때, 런타임 링킹 방식을 표준으로 사용하고 있다.
이는 실행 과정 중 정의되지 않은 심볼을 찾아서 연결시키는 과정으로, 공유라이브러리를 사용하는
모든 바이너리는 런타임 링커를 통한 바인딩(재배치) 과정을 거친다. 현재 linux에서 사용하고 있는
재배치 방식은 지연 바인딩(lazy binding) 방식이며, 이는 실제로 함수를 처음 호출할 때 심볼을
링킹하는 방식이다. 이와 같은 링킹 방식은 프로그램 성능을 위해 설계된 것이라 할 수 있다.
런타임 링커는 다른 의미로 프로그램 해석기, 심볼 해석기, 라이브러리 로더등으로 불리고 있으며,
/lib/ld-linux.so 파일이다.

사용자의 프로그램이 라이브러리내의 함수를 호출하였을 때, 어떤 식으로 재배치되는지 알아보도록
하겠다. 먼저, 사용자의 프로그램이 실행되면 libc.so 라이브러리를 다음과 같이 배치한다

http://x82.inetcop.org/h0me/papers/FC_exploit/relocation.txt

'Sabzil' 카테고리의 다른 글

ABI (Application Binary Interface)  (0) 2009.03.17
Nefif_rx  (0) 2009.03.17
usleep에 대해서  (0) 2009.01.08
strtok_r  (0) 2008.09.29
this is RAM  (0) 2008.08.21
nit_if.h  (0) 2008.07.17
about ftp  (0) 2008.07.15
amd64 and x86 endian order  (0) 2008.06.23
xss in 엠파스 게시판  (0) 2008.06.22
sk_buff 구조체  (0) 2008.06.17

badcob Sabzil