一种基于断言的软件动态更新技术

一种基于断言的软件动态更新技术

论文摘要

应用程序生命周期中需要不断进行更新,以修复程序中的错误、添加新的功能、适应环境和需求的变化。传统更新方式需关闭应用程序、安装更新、然后重启新版本的应用程序,但很多应用程序需要不间断的运行。软件动态更新不需要关闭应用程序,在运行的过程中实现对软件程序的更新。较之离线更新,动态更新面临更大的技术挑战,而如何保证更新后程序运行的正确性是其难点所在。现有程序代码级动态更新技术对更新正确性的考虑多停留在类型正确层面上,仅能够保证动态更新之后运行不发生类型错误。应用语义层面正确性的保证是通过程序员对更新点的选择来进行控制的,而这方面缺乏系统化的方法和技术的支持。本文在研究了当前C语言程序动态更新机制和安全策略的基础上,提出并实现了一种基于断言的动态更新点选择技术,用于帮助避免动态更新后程序运行的逻辑错误。主要工作包括:首先,提出了一种基于程序断言的更新点选择准则。通过程序新旧版本中已有的或者为动态更新添加的程序断言,可指定期望程序在当前点需要满足的属性。动态更新时更新前后程序运行路径上的断言不应被破坏。其次,为上述准则提出一种使用基于约束控制流分析的自动判断技术。对于每一个更新点,寻找与之相关的断言,即在这些更新点更新可能会受影响的断言。通过分析程序中与这些断言存在关联的所有类型、变量和函数,保守地判断这些断言有无被违反的可能。如果存在断言被违背,则更新点不满足上述准则,跳过该更新点,程序继续运行,继续寻找满足条件的更新点。如果断言不被违背,则在该更新点可进行更新。最后,基于Ginseng系统实现一个基于断言的更新点自动选择机制,并通过一个OpenSSH的实际更新实例,说明了上述技术的实际使用,初步展示了其可行性和有效性。

论文目录

  • 摘要
  • Abstract
  • 第一章 绪言
  • 1.1 软件动态更新
  • 1.2 程序代码层面的软件动态更新技术
  • 1.2.1 从程序状态角度出发
  • 1.2.2 从程序构成角度出发
  • 1.3 动态更新正确性及存在的挑战
  • 1.4 本文贡献
  • 1.5 论文组织
  • 第二章 相关工作
  • 2.1 Ginseng更新机制
  • 2.1.1 补丁生成器
  • 2.1.2 Ginseng编译器
  • 2.1.3 安全分析
  • 2.1.4 动态更新点
  • 2.1.5 运行时系统
  • 2.2 软件动态更新正确性
  • 2.2.1 软件动态更新可到达状态正确性
  • 2.2.2 可到达状态正确性的不可判定性
  • 2.2.3 Ginseng类型安全
  • 第三章 基于断言的更新点选择分析
  • 3.1 现有更新点选择准则及其不足
  • 3.2 基于程序断言的更新点选择准则
  • 3.3 基于断言的更新点选择技术分析
  • 3.3.1 断言与更新点的匹配
  • 3.3.2 关联分析
  • 3.3.3 基于约束分析实现数据关联分析
  • 第四章 基于断言的更新点选择技术实现
  • 4.1 CIL:C Intermediate Language
  • 4.2 基于断言更新点选择技术实现
  • 4.2.1 主体程序
  • 4.2.2 遍历添加属性
  • 4.2.3 遍历生成数据关联约束
  • 第五章 实例研究
  • 5.1 基于断言的更新点选择技术例证
  • 5.2 应用实例研究
  • 5.2.1 OpenSSH程序分析
  • 5.2.2 使用Ginseng部署OpenSSH更新
  • 5.2.3 使用基于断言的更新点选择技术解决更新中出现的问题
  • 第六章 总结与展望
  • 6.1 工作总结
  • 6.2 研究展望
  • 简历与科研成果
  • 参考文献
  • 相关论文文献

    标签:;  ;  ;  ;  

    一种基于断言的软件动态更新技术
    下载Doc文档

    猜你喜欢