2

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

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

kill(stub_pid, SIGSEGV)从长寿命进程的 SIGSEGV 处理程序调用是否有效?

4

3 回答 3

1

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

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

在这一点上不再依赖任何东西都不是一个好主意,而只是这个过程会失败。

尝试在此点之外调用任何功能可能会失败,这是不可靠的。


一个更安全的方法是让调用进程监视它的子进程,如果子进程意外终止(通常是通过SIGSEGV)启动适当的操作。

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

于 2015-10-04T10:39:02.913 回答
0

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

于 2015-10-01T17:48:49.357 回答
0

与其想知道如何在您的程序中导致分段错误以使 AFL 注意到一些奇怪的东西,只需调用abort(). SIGABRT 也被 AFL 捕获,并且更容易触发。

于 2015-10-13T22:37:20.313 回答