问题标签 [symbolic-execution]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
firmware - 使用 angr 分析固件文件
我想使用angr来分析 IoT 固件文件。我已经阅读了angr的文档,但是我找不到分析固件文件的解决方案。那么angr如何生成Firmware的CFG文件呢?或者我如何用angr作为符号执行来分析固件文件?
java - 使用 ASM 检测 java lambda
我正在添加对在 concolic 引擎中检测 invokedynamic 的支持,我们目前检测的方式是使用自定义类加载器,该类加载器在类路径中查找与该类相关的资源,但由于 lambda 是动态创建的合成类,它不是实际上在那里。
您知道如何检测调用动态生成的类吗?我已经看到使用代理可能是一种选择,但我想确保我不能重用我已经拥有的东西。
assertion - 在哪些情况下我们不能使用符号执行?
在哪些情况下不能使用符号执行进行断言检查?为了说明,举以下例子:
在这里,我们可以使用符号执行并找出¬A ^ (B < 5) ^ C
违反我们的断言。现在,假设我们将第一个条件更改如下:
通过这种变化,我们不知道 x 和 b 的新值。那么,我们仍然可以使用符号执行来进行断言检查吗?
一般来说,有什么情况我们不能使用符号执行?即,我们必须分析程序所有可能运行的情况。
c - 为什么 Z3 的符号执行会导致错误?
我正在尝试使用基于 SMT Solver Z3 的符号执行逻辑生成测试用例。
我有以下代码。
现在,在 SMT 解决过程中发生错误,生成的错误日志如下所示。
我已经用这段代码做了一些测试。
如果我不在 assert 函数中使用 x, y, z ,则没有错误。
如果第一个'if 语句'为真(即a != 0),那么程序将永远不会进入'if (!a && c) 语句。如果我删除这些“if 语句”之一,则没有错误。但我不明白为什么会发生这个错误。谁能向我解释为什么 Z3 无法解决这个问题?谢谢你。
fuzzing - 符号执行与白盒模糊测试有何不同?
我不明白符号执行与白盒模糊测试有何不同?据我了解,Whitebox Fuzzers 以某种初始输入格式象征性地执行代码。此外,如果有人可以参考 KLEE 和 AFL 工具区分这两种形式,那将会很有帮助。
python - 如何对 angr 中的堆副作用应用约束
我正在尝试使用 angr 通过为给定结果导出正确的输入来验证函数的行为。该函数修改了一个缓冲区,在这种情况下,它只是将输入复制到其中,因此我在堆上设置了符号变量,并对其应用了等式约束。然后我为函数的输入创建一个符号变量。我打算发生的事情是 angr 本质上运行该函数,直到找到输入,这样当它被复制到缓冲区时,它满足放置在其上的约束。但是,当它运行时,我只得到一个死分支,其中输出具有正确的值,但输入没有。我在下面附上了求解器和测试程序源。这是我的实施失败吗?还是这种解决问题的方法无效
求解器
测试程序
当我运行求解器时,我得到如下输出,尽管第一个值(输入值)看似随机变化。有没有办法应用这个约束,以便程序的副作用优先?我不明白这两个值有何不同。这是我准备记忆的方式错误吗?
code-coverage - 如何使用 z3-solver 注释程序以检测死代码?
介绍
给定一个用 C++ 编写的简单函数,如下所示:
问题
如何注释程序以执行以下操作z3
?
- 检测死代码。(x = x + 4)
- 生成测试用例(代码覆盖率)。
- 分析不变量。
Pre
&Post
代码检查。
我做了什么?
我知道我需要识别代码中每个块的每个路径:
然后,如果我使用 Z3,我可以检查这些路径中是否有任何一个unsat
推断与它们相关的代码块将是Dead code
.
我需要什么帮助?
- 对于死码检测:
我真的不知道如何在z3
. 我应该为每条路径使用不同的求解器吗?像这样:
我认为这是检测死代码的低效方法。如果有一百种不同的路径怎么办?所以必须有更好的方法来做到这一点。
- 对于分析不变量:
同样,我应该为每个代码块使用不同的求解器吗?例如:
- 而且我不知道如何
Generate test cases
做Pre
和Post
代码检查
最后,我的问题实际上是,如何使用 z3 针对不同的场景分析程序,例如Dead Code Detection
、Invariant analysis
、Test-case generation
等。更具体地说,我正在寻找这方面的最佳实践。中的示例代码z3-solver
将有很大帮助。更优选地,我想看看如何改进z3
我上面提供的示例代码。
谢谢你的帮助