According to the internet [1], this is a more reliable way of detecting if one is under the spell of a debugger. Should work for ptrace, strace, gdb, etc. Basically anything that uses the ptrace() syscall. [1] http://vx.netlux.org/lib/vsc04.html --- debugger.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/debugger.c b/debugger.c index e8b9378..f486032 100644 --- a/debugger.c +++ b/debugger.c @@ -22,6 +22,8 @@ #include <libgen.h> +#include <sys/ptrace.h> + #if HAVE_VALGRIND #include <valgrind.h> #else @@ -36,6 +38,9 @@ debugger_is_active (void) if (RUNNING_ON_VALGRIND) return TRUE; + if (ptrace(PTRACE_TRACEME, 0, 1, 0) < 0) + return TRUE; + sprintf (buf, "/proc/%d/exe", getppid ()); if (readlink (buf, buf, sizeof (buf)) != -1 && strncmp (basename (buf), "gdb", 3) == 0) -- 1.6.4.4.2.gc2f148