摘要

代码重用攻击的实施过程较为繁杂,通常需要一些工具辅助人工来完成gadget序列的构建,但现有的自动化构建工具效率较低。在分析Ropper、angrop和BOPC等典型开源gadget工具语义分析内容的基础上,总结gadget语义分析应包含的要素,提出一种基于表达式树的gadget语义分析方法。通过表达式树变体描述寄存器和内存读写的表达式信息,提高gadget语义分析的效率。实现一个gadget搜索与语义分析工具SemExpr,针对现有gadget工具难以进行对比分析的问题,设计能对多种gadget工具进行效率和效能分析的实验系统gadgetAnalysis。基于该系统进行实验,结果表明,SemExpr工具能够权衡效率和效能,取得较好的语义分析效果。