论文研读 2021-05-19

程序运行模型

函数运行模型

  • 将程序分解为每一个函数的状态的组合
  • 函数内部运行一个独立的自动机
  • 每一个函数的自动机组合在一起形成整个程序的自动机

自动机构建

  • 静态生成:链表存放函数状态转移
  • 动态生成:函数运行的过程中动态生成自动机。可以减少特征值存放所需要的空间,但是遇到某些未加入状态的正常函数会产生误报。

动态完整性度量方法

  • 程序进入新函数时,度量模块就会将函数调用者对应的调用序列压栈保存,并新建空间保存当前序列
  • 函数运行过程中,度量模块记录程序这段时间的调用,作为度量内容
  • 函数运行结束后,度量模块已经记录函数运行序列,并将其与函数自动机比对,验证度量是否成功
  • 度量符合则继续运行,不符合则结束运行
  • 程序返回上一个函数,并将原先保存的序列出栈,继续以上过程,直到程序结束

小结

Qian 的这篇文章,其实本质上和我们提的方法是一样的。但是这种形式化的描述方法,算法的描述都非常值得借鉴学习!

参考

Lee 发来的一篇不知篇名的文章(未检索到相关信息)



----------- 本文结束 -----------




0%