可以将函数调用的返回值设为符号形式,以便绕过执行该函数吗?

时间:2018-07-05 17:43:52

标签: klee

我想避免执行过程间符号执行。也许返回的值没有任何约束,并且可能会解析为任何可能的具体值。

像这样甚至有可能吗?

我要这样做的原因是我想避免执行某些具有非常大的循环的函数,并且不要真正修改全局数据。

2 个答案:

答案 0 :(得分:0)

此类功能未在Klee中实现。如果要实现它,则必须自己执行。

您应查看的文件为lib/Core/Executor.cpp。执行程序处理作业以象征性地执行指令。您需要更改的特定功能称为“ executeCall”。您可以检查功能的名称。如果符合您的目标,只需将程序计数器设置为下一条指令,并将返回值设为符号即可。

通过一些编程工作,我认为您的需求是可以实现的。

答案 1 :(得分:0)

如果可以操纵源代码,则可以用make_symbolic函数替换这些函数调用,在该函数中,您基本上会创建一个新的符号变量,并将其作为原始函数调用的返回来返回。或者,您可以重写这些函数以返回新的符号值。