Anti-Debugging — Techniques de détection

Anti-debug Obfuscation

Techniques de détection courantes

1. ptrace (Linux)
   ptrace(PTRACE_TRACEME, 0, NULL, NULL);
   Retourne -1 si déjà tracé -> on est sous debugger

2. IsDebuggerPresent (Windows)
   Lit le flag BeingDebugged dans le PEB
   (lire gs:[0x60]+0x02)

3. Timing check
   rdtsc avant et après quelques instructions
   Si delai >> normal -> breakpoint détecté

4. Noms de processus
   Chercher ollydbg.exe, x64dbg.exe, idaq.exe...

Bypasser les protections

# Méthode 1 : Patcher le binaire
# Dans Ghidra : trouver le saut conditionnel
# Remplacer JNZ par JMP -> toujours "pas de debugger"

# Méthode 2 : ScyllaHide (x64dbg)
# Cache automatiquement le debugger

# Méthode 3 : Frida
Interceptor.attach(Module.findExportByName(null, "ptrace"), {
  onLeave: function(retval) {
    retval.replace(0);  // forcer "succès"
  }
});

# Méthode 4 : GDB
catch syscall ptrace
# puis : return 0