ptrace — API de débogage & anti-debug

Dynamique Anti-debug

Présentation

ptrace est l'appel système Linux qui sous-tend gdb/strace : il permet à un processus d'observer et contrôler un autre (lecture mémoire/registres, breakpoints). C'est aussi un mécanisme d'anti-debug courant.

Anti-debug via ptrace

// Un processus ne peut être tracé qu une fois.
// S auto-tracer empêche un débogueur de s attacher :
if (ptrace(PTRACE_TRACEME, 0, 0, 0) == -1)
    exit(1);  // déjà tracé = débogueur présent

Contournement

# Forcer ptrace à retourner 0
LD_PRELOAD d un faux ptrace() -> return 0
# ou patcher l appel / poser un hook gdb :
catch syscall ptrace ; return 0
# ou patcher le binaire (NOP le check)