首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从父进程监视子进程

从父进程监视子进程
EN

Stack Overflow用户
提问于 2020-03-27 00:44:26
回答 1查看 205关注 0票数 0

我正在尝试使用 AFL (Qemu-mode) --一个不断等待数据的二进制应用程序,而且由于我没有源代码来修改二进制文件,以便在解析数据后使其exit(0),所以我决定对二进制文件编写一个包装器,以便在经过一段时间之后能够退出,记住这一点。

  1. AFL fuzzer:它可以通过STDIN或作为一个二进制应用程序通过测试输入,我希望输入在STDIN中,然后继续等待输入。

我的策略基于父/子样式(分支),这样子应用将是二进制应用程序,而父程序将监视它。

父程序使子级(二进制-app)以0状态退出,如果5秒内没有发生崩溃(在子process).

  • and中没有发生崩溃),并且父程序负责向它从stdin

  • if接收的子程序发送输入,我希望父程序也崩溃,这样AFL就会注意到这一点,并保存负责崩溃

的测试文件。

我的问题是:

如何使状态为0的parent

  • how到的子进程退出,在使用E 242 exec()

  • is运行二进制应用程序之后,从父E 240进程<代码>E 141发送数据到子进程,这是一个很好的方法,因为E 247

>是基于E 148>退出状态的。

EN

回答 1

Stack Overflow用户

发布于 2020-03-27 03:04:17

不完全是你要问的问题的答案,但是.

,因为我没有源代码来修改二进制文件,以便在解析数据之后退出(0),

上述前提是错误的。

--我决定为二进制文件编写一个包装器,以便在经过一定时间后退出,

这种方法虽然可行,但会浪费大量时间:您不知道解析需要多长时间,所以您必须等待一些最大的时间。如果你等待的时间不够长,你就会错过测试覆盖范围。您还忽略了对解析器进入无限循环的介绍。

那么,如何在解析后使程序exit(0)呢?通过二进制补丁。这是一个example

您需要在二进制文件中找到一个位置,在其中ParseInput() (或任何称为syscall(SYS_exit, 0) )例程返回,并修补几条指令以执行等效的syscall(SYS_exit, 0)

在此之后,您的模糊处理将进行得更快(在解析完成时不会浪费时间),并且您将能够检测解析器何时进入无限循环。

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

https://stackoverflow.com/questions/60878332

复制
相关文章

相似问题

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