论文部分内容阅读
随着信息技术的飞速发展和用户需求的不断增加,软件开发技术呈现出多样化的发展趋势,其中比较有代表性的编程语言是Java语言。Java语言的广泛应用,提高了软件的开发效率,但给查找程序漏洞带来极大的挑战。动态监测具有发现漏洞的准确率高和监测具有实时性等优点被广泛的应用和研究。因此,基于Java源代码的动态监测技术研究具有重要意义。动态监测技术是一种获得程序运行时信息的关键技术。系统采用程序插桩方法实现Java程序的动态监测,首先通过开源工具对待测项目进行词法语法分析,并进行源代码重构,同时将源代码信息保存到程序中间表示中,根据重构后的源代码和程序中间表示实现了一种基于语句行的程序插桩方法,克服了基于抽象语法树的程序插桩方法的可扩展性差和灵活性差的问题。实现了一个基于Java源代码的动态监测框架,完成了代码覆盖率的统计,可以统计每个方法的语句覆盖率、分支覆盖率、循环覆盖率和多条件覆盖率,并实现了一种基于程序切片的污点覆盖率的计算方法。根据污点覆盖的执行情况,通过污点源逆向分析的方法对静态分析检查的漏洞进行确认,提高了检查出漏洞的精确度。实验表明,基于Java源代码的动态监测框架可以完成代码覆盖率的统计、静态分析漏洞的确认,并且新的程序插桩方法提高了程序插桩灵活性和可扩展性,减少了时间开销,实验结果达到了预期的目的。