【24h】

Prototyping Symbolic Execution Engines for Interpreted Languages

机译:解释性语言的符号执行引擎原型

获取原文
获取原文并翻译 | 示例
           

摘要

Symbolic execution is being successfully used to automatically test statically compiled code [4, 7, 9, 15]. However, increasingly more systems and applications are written in dynamic interpreted languages like Python. Building a new symbolic execution engine is a monumental effort, and so is keeping it up-to-date as the target language evolves. Furthermore, ambiguous language specifications lead to their implementation in a symbolic execution engine potentially differing from the production interpreter in subtle ways. We address these challenges by flipping the problem and using the interpreter itself as a specification of the language semantics. We present a recipe and tool (called CHEF) for turning a vanilla interpreter into a sound and complete symbolic execution engine. CHEF symbolically executes the target program by symbolically executing the interpreter's binary while exploiting inferred knowledge about the program's high-level structure. Using CHEF, we developed a symbolic execution engine for Python in 5 person-days and one for Lua in 3 persondays. They offer complete and faithful coverage of language features in a way that keeps up with future language versions at near-zero cost. CHEF-produced engines are up to 1000× more performant than if directly executing the interpreter symbolically without CHEF.
机译:符号执行已成功用于自动测试静态编译的代码[4、7、9、15]。但是,越来越多的系统和应用程序以动态解释语言(如Python)编写。构建新的符号执行引擎是一项艰巨的工作,因此,随着目标语言的发展,使其保持最新也是如此。此外,模棱两可的语言规范导致它们在符号执行引擎中的实现可能与生产解释器在微妙的方面有所不同。我们通过翻转问题并将解释器本身用作语言语义的规范来应对这些挑战。我们提供了一个配方和工具(称为CHEF),用于将香草解释器转变为完善的符号执行引擎。 CHEF通过象征性地执行解释器的二进制代码来象征性地执行目标程序,同时利用有关程序高级结构的推断知识。使用CHEF,我们在5个工作日内为Python开发了一个符号执行引擎,在3个工作日内为Lua开发了一个符号执行引擎。它们以接近零的成本跟上未来语言版本的方式,提供了对语言功能的完整而真实的覆盖。与不使用CHEF象征性地直接执行解释器相比,CHEF产生的引擎的性能要高出1000倍。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号