Skip to main content

ptrace 안티디버깅 우회 메모

리버스 대상이 ptrace(PTRACE_TRACEME)로 디버거를 탐지하면 바로 종료하는 경우가 많습니다. 핵심은 호출 지점과 반환값을 제어하는 것.

빠른 우회 루트

  • LD_PRELOAD로 ptrace 래핑 후 항상 0 반환
  • strace -f로 syscall 시퀀스 확인 → 패치 위치 추적
  • 바이너리 패치: cmp eax, -1 분기 지점 NOP

실전 팁

  • seccomp가 있으면 LD_PRELOAD가 막힐 수 있어 바이너리 패치가 안정적
  • PIE 바이너리는 런타임 베이스 고려 필요
  • 패치 후 무결성 체크(해시/CRC)도 같이 우회

CTF에선 “빠른 우회 + 재현성”이 승부를 가릅니다. 루틴을 스크립트화해 두세요.