尝试在C中构建调试器以进行模糊测试。
基本上在linux中,我只想通过fork然后执行execve()来启动进程,然后监视此进程以查看它是否在1秒后崩溃。
在linux上,这是通过创建进程然后监视它为看起来像崩溃的任何东西生成的SIGNAL来完成的吗?或者它是关于监控应用程序和?我不确定。
答案 0 :(得分:6)
使用ptrace(2)
系统调用:
在被追踪时,孩子每次信号都会停止 即使信号被忽略,也会传递。 (例外是 SIGKILL,它具有通常的效果。)将通知父母 它的下一个等待(2)并可以检查和修改子进程 停了然后,父母可以选择让孩子继续 忽略传递的信号(甚至传递不同的信号 代替)。
对于崩溃的进程,您应该感兴趣的信号是SIGSEGV
(受限内存访问),SIGBUS
(未对齐数据访问),SIGILL
(非法指令), SIGFPE
(非法浮点运算)等。