首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以从SIGSEGV处理程序中杀死另一个进程吗?

我可以从SIGSEGV处理程序中杀死另一个进程吗?
EN

Stack Overflow用户
提问于 2015-10-01 22:09:01
回答 3查看 1.1K关注 0票数 2

背景:我使用afl-fuzz模糊了一个长时间的进程,方法是将afl-fuzz为每个样本运行的存根中要处理的文件名传递给它。

当长期进程通过SIGSEGV崩溃时,我希望存根也生成一个SIGSEGV,这样afl-fuzz就会将样本标记为有趣的。

从长生命周期进程的SIGSEGV处理程序调用kill(stub_pid, SIGSEGV)会起作用吗?

EN

回答 3

Stack Overflow用户

发布于 2015-10-04 18:39:03

从长生命周期进程的SIGSEGV处理程序调用kill(stub_pid,SIGSEGV)可以工作吗?

如果进程在SIGSEGV-handler中结束,就会发生一些非常糟糕的事情,其中可能包括完全被破坏的堆栈和/或内存管理。

在这一点上,不再依赖任何东西都不是一个好主意,只是过程会向下发展。

尝试调用任何超出这一点的函数都可能失败,这是不可靠的。

一种更安全的方法是让调用进程监视其子进程,如果子进程意外终止(通常通过SIGSEGV),则启动相应的操作。

看看shell脚本(seach-key:"trap")中的信号处理,因为这样的脚本可能是您想要监视的进程的父进程。

票数 1
EN

Stack Overflow用户

发布于 2015-10-02 01:48:49

不建议通过SIGSEGV执行此操作,但如果您有适当的权限,则可以执行此操作。

票数 0
EN

Stack Overflow用户

发布于 2015-10-14 06:37:20

不要纠结于如何在你的程序中引起分段错误,让AFL注意到一些奇怪的东西,只需调用abort()即可。SIGABRT也会被AFL捕获,并且更容易触发。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32889713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档