程序流监控方法、编译方法、装置、处理器及计算机设备制造方法及图纸

技术编号:38250136 阅读:7 留言:0更新日期:2023-07-25 18:08
本发明专利技术公开了一种程序流监控方法、编译方法、装置、处理器及计算机设备,所述程序流对应有控制流和数据流;所述控制流包括若干基本块;基本块头部在编译阶段插入有控制流校验指令,以及基本块尾部在链接阶段插入有数据流校验指令;所述程序流监控方法包括:在所述程序流运行到当前基本块的情况下,执行所述当前基本块内的所述控制流校验指令以校验所述控制流的正确性;在所述当前基本块运行至所述数据流校验指令的情况下,确定所述当前基本块的所有指令的CRC签名值,以校验所述数据流的完整性。由此在数据流和控制流上对程序流进行双重监控,可以有效检测程序执行行为与预期不符的问题。问题。问题。

【技术实现步骤摘要】
程序流监控方法、编译方法、装置、处理器及计算机设备


[0001]本专利技术涉及程序流监控
,尤其涉及一种程序流监控方法、编译方法、装置、处理器及计算机设备。

技术介绍

[0002]CPU(Central Processing Unit,中央处理单元)作为芯片上的核心单元,在各领域都有广泛的应用。通常,CPU按照指令流的顺序,对指令流序列依次进行取指、译码、执行操作完成对指令的完整执行。如果程序流执行的顺序被破坏,会产生程序逻辑错误,甚至引起整个系统异常。因此,有必要对程序流程进行监控,以确保整个系统程序安全、可靠地运行。
[0003]相关技术中,通常采用CPU内部看门狗或外部系统看门狗模块来对程序流进行监控。然而,基于看门狗的程序流监控方法能够检测程序流在一段时间内是否执行完成,不能检测程序流是否按照设计逻辑有效地执行。

技术实现思路

[0004]本专利技术旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本专利技术的第一个目的在于提出一种程序流监控方法,通过软硬件结合的程序流监控方法,在数据流和控制流上对程序流进行双重监控,可以有效检测由于电磁干扰、线路串扰等因素影响而导致的程序执行行为与预期不符的问题。
[0005]本专利技术的第二个目的在于提出一种程序代码编译方法。
[0006]本专利技术的第三个目的在于提出一种处理器。
[0007]本专利技术的第四个目的在于提出一种程序流监控装置。
[0008]本专利技术的第五个目的在于提出一种程序代码编译装置。
[0009]本专利技术的第六个目的在于提出一种计算机设备。
[0010]本专利技术的第七个目的在于提出一种计算机可读存储介质。
[0011]为达到上述目的,本专利技术第一方面实施方式提出了一种程序流监控方法,所述程序流对应有控制流和数据流;所述控制流包括若干基本块;基本块头部在编译阶段插入有控制流校验指令,以及基本块尾部在链接阶段插入有数据流校验指令;其中,所述数据流校验指令是在所述链接阶段对所述编译阶段中插入所述基本块尾部的占位指令进行替换而插入的;所述方法包括:在所述程序流运行到当前基本块的情况下,执行所述当前基本块内的所述控制流校验指令以校验所述控制流的正确性;在所述当前基本块运行至所述数据流校验指令的情况下,确定所述当前基本块的所有指令的CRC签名值,以校验所述数据流的完整性。
[0012]根据本专利技术的一个实施方式,所述基本块分配有静态签名;所述若干基本块包括当前基本块、跳转至所述当前基本块的前驱基本块;所述执行所述当前基本块内的控制流校验指令以校验所述控制流的正确性,包括:获取所述前驱基本块的补偿签名和所述前驱
基本块的运行时签名;其中,所述补偿签名是基于所述前驱基本块的静态签名与前驱基准基本块的静态签名的异或计算结果确定的;所述前驱基准基本块为所述前驱基本块所处的控制级别上的基准基本块;确定所述当前基本块的静态签名和签名差;其中,所述签名差是基于所述前驱基准基本块的静态签名与所述当前基本块的静态签名进行异或计算的结果确定的;若所述前驱基本块的运行时签名、所述当前基本块的签名差、所述前驱基本块的补偿签名的异或计算结果等于所述当前基本块的静态签名,所述当前基本块通过控制流校验。
[0013]根据本专利技术的一个实施方式,所述前驱基本块的数量为1时,所述前驱基本块为所述前驱基准基本块,所述补偿签名为0。
[0014]根据本专利技术的一个实施方式,所述前驱基本块的数量大于1时,所述前驱基准基本块是基于所述前驱基本块所处的控制级别上的基本块的静态签名确定的。
[0015]根据本专利技术的一个实施方式,所述程序流监控方法还包括:若所述前驱基本块的运行时签名、所述当前基本块的签名差、所述前驱基本块的补偿签名的异或计算结果不等于所述当前基本块的静态签名,所述当前基本块不通过控制流校验,以触发异常。
[0016]根据本专利技术的一个实施方式,在若所述前驱基本块的运行时签名、所述当前基本块的签名差、所述前驱基本块的补偿签名的异或计算结果等于所述当前基本块的静态签名,则所述当前基本块通过控制流校验之前,所述程序流监控方法还包括:基于所述签名差和所述当前基本块的静态签名,在所述当前基本块的头部插入有控制流校验指令;所述若所述前驱基本块的运行时签名、所述当前基本块的签名差、所述前驱基本块的补偿签名的异或计算结果等于所述当前基本块的静态签名,则所述当前基本块通过控制流校验,包括:若所述前驱基本块的运行时签名、所述控制流校验指令中附带的签名差、所述前驱基本块的补偿签名的异或计算结果等于所述控制流校验指令中附带的静态签名,所述当前基本块通过控制流校验。
[0017]根据本专利技术的一个实施方式,所述数据流校验指令中附带有静态校验签名,所述静态校验签名是基于编译器编译链接时所述当前基本块内所有指令的CRC签名值确定的;所述确定所述当前基本块的所有指令的CRC签名值,以校验所述数据流的完整性,包括:计算所述当前基本块内所有指令的CRC签名值,得到动态校验签名;若所述当前基本块完成执行时的动态校验签名与所述静态校验签名一致,所述当前基本块通过数据流校验。
[0018]根据本专利技术的一个实施方式,所述确定所述当前基本块的所有指令的CRC签名值,以校验所述数据流的完整性,还包括:若所述当前基本块完成执行时的动态校验签名与所述静态校验签名不一致,所述当前基本块不通过数据流校验以触发异常。
[0019]根据本专利技术的一个实施方式,所述控制流包括函数控制流,所述函数控制流包括入口基本块和出口基本块;所述入口基本块在编译阶段插入有签名信息保存指令,所述出口基本块在编译阶段插入有签名信息恢复指令;所述程序流监控方法还包括:在函数调用时执行所述签名信息保存指令,以支持运行时签名和补偿签名的压栈操作;在调用的函数返回时执行所述签名信息恢复指令,以支持保存的运行时签名和补偿签名的弹栈操作。
[0020]根据本专利技术的一个实施方式,所述程序流监控方法还包括:增加全局监控的编译器参数,以对应用程序的全部运行过程进行监控。
[0021]根据本专利技术的一个实施方式,所述程序流监控方法还包括:针对源代码中的指定
函数,在所述指定函数的指定位置增加程序流检测标记以及编译器参数,以对所述指定函数的运行过程进行监控。
[0022]根据本专利技术的一个实施方式,所述程序流监控方法还包括:在源代码中通过括号将需要监控的目标源码括起来;在所述目标源码的指定位置处增加制导语句,以对所述目标源码的运行过程进行监控。
[0023]为达到上述目的,本专利技术第二方面实施方式提出了一种程序代码编译方法,所述程序代码对应有程序控制流图,且所述程序控制流图中具有若干基本块;所述方法包括:在编译阶段,在基本块头部插入控制流校验指令,在基本块尾部插入占位指令;其中,所述控制流校验指令用于在所述程序代码对应的程序流运行到任意基本块时校验所述控制流的正确性;在链接阶段,将所述占位指令对应的指令码替换为数据流校验指令;其中,所述数据流校验指令用于在所述程序代码对本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种程序流监控方法,其特征在于,所述程序流对应有控制流和数据流;所述控制流包括若干基本块;基本块头部在编译阶段插入有控制流校验指令,以及基本块尾部在链接阶段插入有数据流校验指令;其中,所述数据流校验指令是在所述链接阶段对所述编译阶段中插入所述基本块尾部的占位指令进行替换而插入的;所述方法包括:在所述程序流运行到当前基本块的情况下,执行所述当前基本块内的所述控制流校验指令以校验所述控制流的正确性;在所述当前基本块运行至所述数据流校验指令的情况下,确定所述当前基本块的所有指令的CRC签名值,以校验所述数据流的完整性。2.根据权利要求1所述的方法,其特征在于,所述基本块分配有静态签名;所述若干基本块包括当前基本块、跳转至所述当前基本块的前驱基本块;所述执行所述当前基本块内的控制流校验指令以校验所述控制流的正确性,包括:获取所述前驱基本块的补偿签名和所述前驱基本块的运行时签名;其中,所述补偿签名是基于所述前驱基本块的静态签名与前驱基准基本块的静态签名的异或计算结果确定的;所述前驱基准基本块为所述前驱基本块所处的控制级别上的基准基本块;确定所述当前基本块的静态签名和签名差;其中,所述签名差是基于所述前驱基准基本块的静态签名与所述当前基本块的静态签名进行异或计算的结果确定的;若所述前驱基本块的运行时签名、所述当前基本块的签名差、所述前驱基本块的补偿签名的异或计算结果等于所述当前基本块的静态签名,所述当前基本块通过控制流校验。3.根据权利要求2所述的方法,其特征在于,所述前驱基本块的数量为1时,所述前驱基本块为所述前驱基准基本块,所述补偿签名为0。4.根据权利要求2所述的方法,其特征在于,所述前驱基本块的数量大于1时,所述前驱基准基本块是基于所述前驱基本块所处的控制级别上的基本块的静态签名确定的。5.根据权利要求2所述的方法,其特征在于,所述方法还包括:若所述前驱基本块的运行时签名、所述当前基本块的签名差、所述前驱基本块的补偿签名的异或计算结果不等于所述当前基本块的静态签名,所述当前基本块不通过控制流校验,以触发异常。6.根据权利要求2所述的方法,其特征在于,在若所述前驱基本块的运行时签名、所述当前基本块的签名差、所述前驱基本块的补偿签名的异或计算结果等于所述当前基本块的静态签名,则所述当前基本块通过控制流校验之前,所述方法还包括:基于所述签名差和所述当前基本块的静态签名,在所述当前基本块的头部插入有控制流校验指令;所述若所述前驱基本块的运行时签名、所述当前基本块的签名差、所述前驱基本块的补偿签名的异或计算结果等于所述当前基本块的静态签名,则所述当前基本块通过控制流校验,包括:若所述前驱基本块的运行时签名、所述控制流校验指令中附带的签名差、所述前驱基本块的补偿签名的异或计算结果等于所述控制流校验指令中附带的静态签名,所述当前基本块通过控制流校验。7.根据权利要求1所述的方法,其特征在于,所述数据流校验指令中附带有静态校验签名,所述静态校验签名是基于编译器编译链接时所述当前基本块内所有指令的CRC签名值
确定的;所述确定所述当前基本块的所有指令的CRC签名值,以校验所述数据流的完整性,包括:计算所述当前基本块内所有指令的CRC签名值,得到动态校验签名;若所述当前基本块完成执行时的动态校验签名与所述静态校验签名一致,所述当前基本块通过数据流校验。8.根据权利要求7所述的方法,其特征在于,所述方法还包括:若所述当前基本块完成执行时的动态校验签名与所述静态校验签名不一致,所述当前基本块不通过数据流校验以触发异常。9.根据权利要求2所述的方法,其特征在于,所述控制流包括函数控制流,所述函数控制流包括入口基本块和出口基本块;所述入口基本块在编译阶段插入有签名信息保存指令,所述出口基本块在编译阶段插入有签名信息恢复指令;所述方法还包括:在函数调用时执行所述签名信息保存指令,以支持运行时签名和补偿签名的压栈操作;在调用的函数返回时执行所述签名信息恢复指令,以支持保存的运行时签名和补偿签名的弹栈操作。10.根据权利要求1所述的方法,其特征在于,所述方法还包括:增加全局监控的编译器参数,以对应用程序的全部运行过程进行监控。11.根据权利要求1所述的方法,其特征在于,所述方法还包括:针对源代码中的指定函数,在所述指定函数的指定位置增加程序流检测标记以及编译器参数,以对所述指定函数的运行过程进行监控。12.根据权利要求1所述的方法,其特征在于,所述方法还包括:在源代码中通过括号将需要监控的目标源码括起来;在所述目标源码的指定位置处增加制导语句,以对所述目标源码的运行过程进行监控。13.一种程序代码编译方法,其特征在于,所述程序代码对应有程序控制流图,且所述程序控制流图中具有若干基本块;所述方法包括:在编译阶段,在基本块头部插入控制流校验指令,在基本块尾部插入占位指令;其中,所述控制流校验指令用于在所述程序代码对应的程序流运行到任意基本块时校验所述控制流的正确性;在链接阶段,将所述占位指令对应的指令码替换为数据流校验指令;其中,所述数据流校验指令用于在所述程序代码对应的程序流运行到任意基本块的数据流校验指令时,确定所述任意基本块的所有指令的CRC签名值,以校验所述数据流的完整性。14.根据权利要求13所述的方法,其特征在于,所述控制流包括函数控制流,所述函数控制流包括入口基本块和出口基本块;所述方法还包括:在编译阶段,在所述入口基本块插入签名信息保存指令,以及,在所述出口基本块插入签名信息恢复指令;其中,所述签名信息保存指令用于在函数调用时的运行时签名和调整签名的压栈操作,所述签名信息恢复指令用于在调用的函数返回之前的运行时签名和调整签名的弹栈操作。15.一种处理器,其特征在于,所述处理器用于执行程序流,所述程序流对应有控制流
和数据流;所述控制流包括若干基本块;所述处理器包括位于译码流水级的扩展译码电路、位于写回流水级的控制流校验电路和数据流校验电路;所述扩展译码电路,用于译码控制流校验指令和数据流校验指令;其中,所述控制流校验指令是在编译阶段插入基本块头部的,所述数据流校验指令是在链接阶段对所述编译阶段中插入基本块尾部的占位指令进行替换而插入的;所述控制流校验电路,用于在所述程序流运行到当前基本块的情况下,执行所述当前基本块内的控制流校验指令以校验所述控制流的正确性;所述数据流校验电路,用于在所述当前基本块运行至所述数据流校验指令的情...

【专利技术属性】
技术研发人员:张茜歌李德建王于波刘亮张喆郝晓鹏周佳慧孙玉峰刘朋远丁海丽
申请(专利权)人:国网宁夏电力有限公司营销服务中心国网宁夏电力有限公司计量中心国家电网有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1