【问题标题】:What are PCs and PC tables in LibFuzzerLibFuzzer 中的 PC 和 PC 表是什么
【发布时间】:2021-06-21 10:05:28
【问题描述】:

我正在尝试了解代码检测在 LibFuzzer 中的工作原理。 从documentation,我知道我可以使用选项-fsanitize-coverage 选择不同类型的仪器。

启动 fuzzer 时,INFO 部分指示使用了哪种仪器(此处为 8 位计数器)

...
INFO: Loaded 1 modules   (46994 inline 8-bit counters): 46994 [0x978cc0, 0x984452),
INFO: Loaded 1 PC tables (46994 PCs): 46994 [0x861098,0x9189b8)
...

它还提到了加载的 PC 表的数量和总 PC 数。 但是,我在任何地方都没有找到PC 在这种情况下的含义。 到目前为止,我的猜测是它的意思是“程序计数器”或“路径覆盖率”,但我还没有找到任何来源来确认它。

我的问题是: 在使用 LibFuzzer 进行代码检测的上下文中,“PC”是什么意思,是否有任何来源可以确认?

【问题讨论】:

    标签: definition instrumentation fuzzing libfuzzer


    【解决方案1】:

    在此上下文中,PC 表示 Program Counter,如 this blog post 中所述

    为了记录覆盖率,函数 trace_pc 将记录程序计数器。有了这些信息,模糊器就知道在给定的输入值上遍历了哪些路径。每个 fuzzing 引擎都以不同的方式运行这个过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-16
      • 2021-10-21
      • 1970-01-01
      • 2011-03-27
      • 2011-01-26
      • 2016-12-25
      • 1970-01-01
      • 2020-04-27
      相关资源
      最近更新 更多