1.一种基于动态插桩的智能电能表软件分析方法,其特征在于,所述方法包括:获取测试样本数据和待测程序;对所述待测程序进行结构分析和机器码翻译,获取指令序列,根据所述指令序列中的基本块粒度确定至少一个断点,并确定每个断点对应的插桩指令;将所述测试样本数据作为所述待测程序的输入数据,执行所述待测程序,并对所述待测程序中的断点进行监听,获取并存储执行路径信息和崩溃信息;根据所述执行路径信息确定基本块的覆盖率,根据崩溃信息确定崩溃样本,并根据崩溃样本对应的执行路径的不同进行筛查,确定唯一崩溃样本;根据所述基本块的覆盖率和唯一崩溃样本的数量确定所述待测程序的安全性评估结果;其中,所述根据所述基本块的覆盖率和唯一崩溃样本的数量确定所述待测程序的安全性评估结果,包括:其中,E为安全性评估结果,其值域为(0,1),数值越大则安全程度越高;α为覆盖率所占的权重,β为崩溃信息所占的权重,α+β=1;Ec为覆盖率;Ccrash为唯一崩溃样本的数量。
2.根据权利要求1所述的方法,其特征在于,将Ptrace附着到所述待测程序的进程中,利用Ptrace对所述待测程序中的断点进行监听。
3.根据权利要求1所述的方法,其特征在于,所述方法利用如下方式存储执行路径信息,包括:选取所述执行路径信息中的一条执行路径作为初始的路径,并根据所述初始的路径基于字典树的结构确定初始的执行路径树;根据所述执行路径信息中剩余的每条执行路径对所述初始的执行路径树进行更新,确定最终的执行路径树,以对所述执行路径信息进行压缩存储;其中,将所述执行路径树的从根节点到每个叶子节点的路径作为一条执行路径。
4.根据权利要求3所述的方法,其特征在于,所述根据所述执行路径信息中剩余的每条执行路径对所述初始的执行路径树进行更新,包括:对于任一条新的执行路径,设置指针r指向执行路径树的根结点,将指针r按照该新的执行路径的下一个节点向后跳转;若出现某个节点不在当前的执行路径树中,则确定所述新的执行路径与已存储在当前的执行路径树中的执行路径不同,根据所述新的执行路径增加节点,以更新当前的执行路径树;若直至所述新的执行路径的最后一个节点时,在该最后一个节点上存在一个表示终点的标记,则表示该新的执行路径与已存储在当前的执行路径树中的执行路径重复,不更新当前的执行路径树。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:根据所述执行路径信息中非重复的执行路径对应的测试样本数据,利用模糊测试算法生成新的测试样本数据,以基于所述新的测试样本数据重新确定待测程序的安全性评估结果。
6.一种基于动态插桩的智能电能表软件分析系统,其特征在于,所述系统包括:数据获取模块,用于获取测试样本数据和待测程序;插桩模块,用于对所述待测程序进行结构分析和机器码翻译,获取指令序列,根据所述指令序列中的基本块粒度确定至少一个断点,并确定每个断点对应的插桩指令;监听模块,用于将所述测试样本数据作为所述待测程序的输入数据,执行所述待测程序,并对所述待测程序中的断点进行监听,获取并存储执行路径信息和崩溃信息;覆盖率确定模块,用于根据所述执行路径信息确定基本块的覆盖率,根据崩溃信息确定崩溃样本,并根据崩溃样本对应的执行路径的不同进行筛查,确定唯一崩溃样本;安全性评估模块,用于根据所述基本块的覆盖率和唯一崩溃样本的数量确定所述待测程序的安全性评估结果;其中,所述安全性评估模块,根据所述基本块的覆盖率和唯一崩溃样本的数量确定所述待测程序的安全性评估结果,包括:其中,E为安全性评估结果,其值域为(0,1),数值越大则安全程度越高;α为覆盖率所占的权重,β为崩溃信息所占的权重,α+β=1;Ec为覆盖率;Ccrash为唯一崩溃样本的数量。
7.根据权利要求6所述的系统,其特征在于,所述监听模块,将Ptrace附着到所述待测程序的进程中,利用Ptrace对所述待测程序中的断点进行监听。
8.根据权利要求6所述的系统,其特征在于,所述监听模块,利用如下方式存储执行路径信息,包括:选取所述执行路径信息中的一条执行路径作为初始的路径,并根据所述初始的路径基于字典树的结构确定初始的执行路径树;根据所述执行路径信息中剩余的每条执行路径对所述初始的执行路径树进行更新,确定最终的执行路径树,以对所述执行路径信息进行压缩存储;其中,将所述执行路径树的从根节点到每个叶子节点的路径作为一条执行路径。
9.根据权利要求8所述的系统,其特征在于,所述覆盖率确定模块,根据所述执行路径信息中剩余的每条执行路径对所述初始的执行路径树进行更新,包括:对于任一条新的执行路径,设置指针r指向执行路径树的根结点,将指针r按照该新的执行路径的下一个节点向后跳转;若出现某个节点不在当前的执行路径树中,则确定所述新的执行路径与已存储在当前的执行路径树中的执行路径不同,根据所述新的执行路径增加节点,以更新当前的执行路径树;若直至所述新的执行路径的最后一个节点时,在该最后一个节点上存在一个表示终点的标记,则表示该新的执行路径与已存储在当前的执行路径树中的执行路径重复,不更新当前的执行路径树。
10.根据权利要求6所述的系统,其特征在于,所述系统还包括:样本数据更新模块,用于根据所述执行路径信息中非重复的执行路径对应的测试样本数据,利用模糊测试算法生成新的测试样本数据,以基于所述新的测试样本数据重新确定待测程序的安全性评估结果。