背景:我使用afl-fuzz模糊了一个长时间的进程,方法是将afl-fuzz为每个样本运行的存根中要处理的文件名传递给它。
当长期进程通过SIGSEGV崩溃时,我希望存根也生成一个SIGSEGV,这样afl-fuzz就会将样本标记为有趣的。
从长生命周期进程的SIGSEGV处理程序调用kill(stub_pid, SIGSEGV)会起作用吗?
发布于 2015-10-04 18:39:03
从长生命周期进程的SIGSEGV处理程序调用kill(stub_pid,SIGSEGV)可以工作吗?
如果进程在SIGSEGV-handler中结束,就会发生一些非常糟糕的事情,其中可能包括完全被破坏的堆栈和/或内存管理。
在这一点上,不再依赖任何东西都不是一个好主意,只是过程会向下发展。
尝试调用任何超出这一点的函数都可能失败,这是不可靠的。
一种更安全的方法是让调用进程监视其子进程,如果子进程意外终止(通常通过SIGSEGV),则启动相应的操作。
看看shell脚本(seach-key:"trap")中的信号处理,因为这样的脚本可能是您想要监视的进程的父进程。
发布于 2015-10-02 01:48:49
不建议通过SIGSEGV执行此操作,但如果您有适当的权限,则可以执行此操作。
发布于 2015-10-14 06:37:20
不要纠结于如何在你的程序中引起分段错误,让AFL注意到一些奇怪的东西,只需调用abort()即可。SIGABRT也会被AFL捕获,并且更容易触发。
https://stackoverflow.com/questions/32889713
复制相似问题