构建Linux调试器C.

Dan*_*Dan 2 c linux debugging

尝试在C中构建调试器以进行模糊测试.

基本上在linux中,我只想通过fork然后执行execve()来启动进程,然后监视此进程以查看它是否在1秒后崩溃.

在linux上,这是通过创建进程然后监视它为看起来像崩溃的任何东西生成的SIGNAL来完成的吗?或者它是关于监控应用程序和?我不确定.

Bla*_*iev 6

使用ptrace(2)系统调用:

在被跟踪时,即使信号被忽略,每次信号传递时,孩子都会停止.(例外情况是SIGKILL,它具有通常的效果.)父级将在下一次等待(2)时得到通知,并且可以在子进程停止时检查和修改子进程.然后父母让孩子继续,可选地忽略传递的信号(或者甚至传递不同的信号).

关于崩溃的过程,您应该感兴趣的信号是SIGSEGV(受限内存访问),SIGBUS(未对齐数据访问),SIGILL(非法指令),SIGFPE(非法浮点运算)等.