LD_PRELOAD 런타임 후킹 한 번에 정리
리버스 엔지니어링 초반에 바이너리를 고치기 어렵다면 LD_PRELOAD가 제일 빠른 우회 루트입니다. 동적 링커가 심볼을 해석할 때 우선 로드되는 공유 라이브러리로 함수를 덮어씌우는 방식이죠.
핵심 아이디어
- 타깃이 호출하는 libc 함수(예:
open,strcmp)를 동일 시그니처로 재정의 - 원본 함수는
dlsym(RTLD_NEXT, "open")으로 호출 - 환경변수로 주입:
LD_PRELOAD=./hook.so ./target
CTF/취약점 분석 포인트
- 라이선스 체크, anti-debug 루틴을 조건부로 무력화 가능
- 파일/네트워크 I/O를 가로채 입력값 흐름 추적
- SUID 바이너리는
LD_PRELOAD가 막혀 있으니noexec/권한 확인 필수
패치 없이 행위 관찰 + 로직 우회를 동시에 얻는 게 장점입니다. 빠르게 페이로드 설계를 시작할 때 특히 유용합니다.