ptrace 안티디버깅 우회 메모
리버스 대상이 ptrace(PTRACE_TRACEME)로 디버거를 탐지하면 바로 종료하는 경우가 많습니다. 핵심은 호출 지점과 반환값을 제어하는 것.
빠른 우회 루트
- LD_PRELOAD로
ptrace래핑 후 항상 0 반환 strace -f로 syscall 시퀀스 확인 → 패치 위치 추적- 바이너리 패치:
cmp eax, -1분기 지점 NOP
실전 팁
- seccomp가 있으면 LD_PRELOAD가 막힐 수 있어 바이너리 패치가 안정적
- PIE 바이너리는 런타임 베이스 고려 필요
- 패치 후 무결성 체크(해시/CRC)도 같이 우회
CTF에선 “빠른 우회 + 재현성”이 승부를 가릅니다. 루틴을 스크립트화해 두세요.