Anti-Debugging — Techniques de détection
★★★★★
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