一种基于硬件的高级程序动态控制流追踪方法和装置

文档序号:25343018发布日期:2021-06-04 21:51阅读:来源:国知局

技术特征:
1.一种基于硬件的高级程序动态控制流追踪方法,其特征在于,包括如下步骤:s1:获取待追踪的程序;s2:对所述待追踪的程序进行静态分析,生成控制流图、类继承图和调用关系图;s3:收集通过虚拟机执行所述待追踪的程序时的字节码指令模版、执行信息和追踪数据;s4:根据所生成的控制流图和所收集的字节码指令模版、追踪数据和执行信息,生成执行流图;s5:输出所述的执行流图;其中,所述步骤s3包括如下步骤:s31:启动虚拟机,然后对所启动的虚拟机进程进行处理器硬件追踪的初始化,使得处理器硬件模块追踪虚拟机进程得到的处理器控制流的追踪数据能够输至指定的追踪数据缓冲区,并由追踪数据转存模块将所述追踪数据缓冲区中的追踪数据转存至磁盘中;s32:当虚拟机进程对待追踪的程序初始化时,导出字节码指令模版;s33:当所述虚拟机对待追踪的程序初始化后,对所述虚拟机进程进行执行信息初始化,使得所述虚拟机进程执行程序生成机器码指令时,将字节码指令与机器码指令之间的映射信息输至指定的执行信息缓冲区,并由执行信息转存模块将所述执行信息缓冲区中的执行信息转存至磁盘中;所述执行信息为字节码指令与机器码指令之间的映射信息;s34:通过所述虚拟机进程执行所述待追踪的程序并开启处理器硬件追踪,通过所述追踪数据转存模块和所述执行信息缓存模块将所述待追踪的程序执行过程中的追踪数据和执行信息存入磁盘中;所述步骤s4包括如下步骤:s41:根据所述追踪数据的线程切换信息和时间戳信息,提取出属于待追踪的程序的追踪数据;s42:根据按内存地址信息确定所提取的追踪数据为解释执行数据还是实时执行数据;对于解释执行数据,根据所述字节码指令模版找到对应的字节码指令;对于实时执行数据,则对其进行解码,然后根据所述的字节码指令与机器码指令之间的映射信息,得到对应的字节码指令;s43:将字节码指令拼接成字节码指令流,然后字节码指令流在所述控制流图中找到相应的节点,并记录执行流数据生成执行流图节点;所述执行流数据包括执行次序标号和执行的时间戳。2.如权利要求1所述的基于硬件的高级程序动态控制流追踪方法,其特征在于,所述步骤s5中,输出所述的执行流图前,对所述执行流图判断是否存在执行流数据缺失的情形,若存在执行流数据缺失的情形则尽可能地补齐,包括如下步骤:s51:根据所述追踪数据的线程切换信息和时间戳信息,对所述的执行流图中的节点分线程按执行流数据的时间戳信息进行排序;s52:判断每个线程所排序的节点在时间戳上是否连续,若不连续,则标记为缺失点;s53:判断缺失点的前后连续节点是否存在执行流数据,若与缺失点其前后连续节点中有节点存在执行流数据,则将该执行流数据补入该缺失点。3.一种基于硬件的高级程序动态控制流追踪装置,其特征在于,包括如下模块:
m1,用于:获取待追踪的程序;m2,用于:对所述待追踪的程序进行静态分析,生成控制流图、类继承图和调用关系图;m3,用于:收集通过虚拟机执行所述待追踪的程序时的字节码指令模版、执行信息和追踪数据;m4,用于:根据所生成的控制流图和所收集的字节码指令模版、追踪数据和执行信息,生成执行流图;m5,用于:输出所述的执行流图;其中,所述模块m3包括如下模块:m31,用于:启动虚拟机,然后对所启动的虚拟机进程进行处理器硬件追踪的初始化,使得处理器硬件追踪虚拟机进程得到的处理器控制流的追踪数据能够输至指定的追踪数据缓冲区,并由追踪数据转存模块将所述追踪数据缓冲区中的追踪数据转存至磁盘中;m32,用于:当虚拟机进程对待追踪的程序初始化时,导出字节码指令模版;m33,用于:当所述虚拟机对待追踪的程序初始化后,对所述虚拟机进程进行执行信息初始化,使得所述虚拟机进程执行程序生成机器码指令时,将字节码指令与机器码指令之间的映射信息输至指定的执行信息缓冲区,并由执行信息转存模块将所述执行信息缓冲区中的执行信息转存至磁盘中;所述执行信息为字节码指令与机器码指令之间的映射信息;m34,用于:通过所述虚拟机进程执行所述待追踪的程序并开启处理器硬件追踪,通过所述追踪数据转存模块和所述执行信息缓存模块将所述待追踪的程序执行过程中的追踪数据和执行信息存入磁盘中;所述模块m4包括如下模块:m41,用于:根据所述追踪数据的线程切换信息和时间戳信息,提取出属于待追踪的程序的追踪数据;m42,用于:根据按内存地址信息确定所提取的追踪数据为解释执行数据还是实时执行数据;对于解释执行数据,根据所述字节码指令模版找到对应的字节码指令;对于实时执行数据,则对其进行解码,然后根据所述的字节码指令与机器码指令之间的映射信息,得到对应的字节码指令;m43,用于:将字节码指令拼接成字节码指令流,然后字节码指令流在所述控制流图中找到相应的节点,并记录执行流数据生成执行流图节点;所述执行流数据包括执行次序标号和执行的时间戳。4.如权利要求1所述的基于硬件的高级程序动态控制流追踪装置,其特征在于,所述模块m5中,输出所述的执行流图前,对所述执行流图判断是否存在执行流数据缺失的情形,若存在执行流数据缺失的情形则尽可能地补齐,包括如下模块:m51,用于:根据所述追踪数据的线程切换信息和时间戳信息,对所述的执行流图中的节点分线程按执行流数据的时间戳信息进行排序;m52,用于:判断每个线程所排序的节点在时间戳上是否连续,若不连续,则标记为缺失点;m53,用于:判断缺失点的前后连续节点是否存在执行流数据,若与缺失点其前后连续节点中有节点存在执行流数据,则将该执行流数据补入该缺失点。
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1