[发明专利]一种程序运行过程符合性验证方法有效
申请号: | 202011378877.6 | 申请日: | 2020-12-01 |
公开(公告)号: | CN112579437B | 公开(公告)日: | 2022-11-29 |
发明(设计)人: | 孟小峰;刘丽;王璐璐;刘亮;冯斌;岳才杰;姜丽 | 申请(专利权)人: | 中国科学院电子学研究所苏州研究院;东南大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 南京理工大学专利中心 32203 | 代理人: | 封睿 |
地址: | 215000 江苏省*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 程序 运行 过程 符合 验证 方法 | ||
1.一种程序运行过程符合性验证方法,其特征在于,包括动态插桩和过程验证两个环节,动态插桩工作时,接收并解析用户传入的指令,执行插桩启停过程,并回传过程数据日志;过程验证接收过程数据日志,提取日志中方法间的关系建立过程图模型,并将过程图模型与标准规则进行顺序匹配,从而验证程序运行过程的标准符合性;
所述动态插桩工作时,接收并解析用户传入的指令,执行插桩启停过程,并回传过程数据日志,具体过程如下:
(1)远程请求预处理
远程请求预处理设计的目的是接收并处理用户发来的终端请求,所述终端请求通过URL的形式传递,将插桩动作类型、任务ID、目标软件端口号以及拦截规则这些信息传入控制中心;远程请求预处理接收到URL请求后会进行相应的解析,将上述信息分类传递至后续过程使用;
(2)插桩控制
插桩控制接收预处理过程传递的信息,调用内部预先设计的插桩程序,完成插桩的开始和停止动作;所述插桩程序为本环节的核心部分,其在目标软件运行后,以一种目标软件无感知的方式链接到目标软件上,向拦截规则指定的程序段中植入一段信息获取与日志记录的代码,当目标软件执行到插桩点时,会执行植入的代码进行信息获取和日志信息生成;
(3)插桩日志处理
插桩日志作为最终图形化验证对象的数据来源,插桩日志需满足如下要求:1)插桩日志为文本文件格式,其命名采用三段式风格,第一段内容为某次验证任务的唯一识别ID,第二段内容为日志生成的起始时间,第三段内容用固定字符串标明该日志为插桩日志;2)日志保存路径存储在数据库中,日志生成和回传时会对路径信息进行读取,该信息在客户端中配置;3)日志内容由若干条目组成,条目描述的信息细化至待测程序中的函数方法块。
2.根据权利要求1所述的程序运行过程符合性验证方法,其特征在于,插桩控制过程使用JavaAgent机制实现,采用两种针对字节码的辅助插桩方式:一是在JVM加载class文件之前进行拦截并对字节码执行所需的变更操作完成插桩;二是在JVM运行期间通过attach操作,将代码植入已经加载的类的字节码中完成对字节码的插桩。
3.根据权利要求2所述的程序运行过程符合性验证方法,其特征在于,插桩控制过程包括参数解析、插桩算法调度、语句块部署,具体为:
首先,JavaAgent程序将预处理过程传入的参数进行拆分和解析,得到待插桩程序段的绝对位置以及插桩拦截方式;
所述拦截方式有两种:定位到包进行拦截和定位到具体方法进行拦截,根据拦截方式的不同,调度对应的JavaAgent字节码处理程序对拦截目标代码进行遍历,并将遍历得到的字节码内容添加至JavaAgent机制提供的插桩算法程序中;
插桩算法程序获取到目标字节码后,会进行进一步遍历和过滤,判断该字节码对应的目标程序类是否已被加载至JVM中;若尚未加载,则根据JavaAgent程序中预先编写完成的部署程序在目标字节码中进行插桩语句块部署;若已加载至JVM,则调用JavaAgent机制提供的“attach”功能将插桩语句块部署到目标字节码中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院电子学研究所苏州研究院;东南大学,未经中国科学院电子学研究所苏州研究院;东南大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011378877.6/1.html,转载请声明来源钻瓜专利网。