我正在尝试阻止黑客将gdb附加到进程并成功分支ptrace附加到父进程的子进程(然后阻止后续gdb ptrace附加)。问题解决了......
然而对于多线程程序我很难过。我可以让孩子监视新线程的父级,然后在看到时附加到那些;但似乎是一种高开销的方法。
有什么想法吗?
答案 0 :(得分:3)
问题解决了......
如果您认为仅仅附加父级将阻止确定的黑客调试您的程序,那么您自己自欺欺人。
您的保护仅适用于最不老练的攻击者。更复杂的可以:
libc.so
,用于实现ptrace
实际附加目标,或LD_PRELOAD
注入一个ptrace
来做他想做的事,或者对于可以修改操作系统内核的攻击者来说,保护程序的确很少。
对于"如何附加任何新创建的线程",您可以使用sys_clone
捕获PTRACE_SYSCALL
,并在返回时立即附加克隆过程。另请参阅ptrace man page中的PTRACE_O_TRACECLONE
。
是否有保护代码的最佳做法?
This question有很多建议。