1.一种评估可执行软件应用的混淆性的方法,所述方法包括:
由处理器从所述可执行软件应用生成程序文本文件(cf);
对于所述软件应用的每个程序文本文件,计算至少一个句法度量或程序复杂度度量(qt1-qtn);
由所述处理器基于所计算的度量针对每个程序文本文件计算相应的分数(fmt);
由所述处理器根据程序文本文件的相应的所计算的分数对所述程序文本文件执行排序操作;以及
由所述处理器提供所述排序操作的结果,或者通过对对应于每个识别的程序文本文件的相应的源代码文件(scf)应用混淆处理来生成新的可执行软件应用(apf1),以生成用于每个识别的程序文本文件的修改的源代码文件,所述新的可执行软件应用(apf1)从对应于所述程序文本文件的源代码文件中获得,其中每个识别的程序文本文件的所述源代码文件被所述对应的修改的源代码文件替换。
2.根据权利要求1所述的方法,进一步包括:
从所述可执行应用文件(apf)中提取程序代码文件;以及
将所述程序代码文件转换为所述程序文本文件(cf)。
3.根据权利要求1和2中的一项所述的方法,进一步包括:
将每个计算的分数(fmt)与阈值进行比较,以及
根据所述比较的结果来选择程序文本文件(cf)。
4.根据权利要求1至3中的一项所述的方法,进一步包括:显示所计算的分数(fmt),每个分数被显示为具有取决于所述分数值的颜色并且与对应的程序文本文件(cf)的名称相关联的图块(tl)。
5.根据权利要求4所述的方法,其中,所显示的图块以行和列布置。
6.根据权利要求1至5中的一项所述的方法,进一步包括:从所述可执行软件应用文件中提取程序代码和数据文件(cf、df),所述程序代码和数据文件被分配在文件夹树结构(fts)的文件夹(fd)中,每个文件夹对应于所述可执行软件应用的包,并且每个程序代码文件(cf)对应于所述包中的一个包的类。
7.根据权利要求1至6中的一项所述的方法,其中,所述句法度量(qt1-qtn)被应用于所述程序文本文件的字符串,并且包括以下中的至少一项:
按字符串的大小划分的字符串数量相对于总字符串数量的比率、这些比率的分布以及字符串的平均大小,
具有至少一个非ascii字符的字符串的数量相对于所述总字符串数量的比率,
具有至少一个非字母字符的字符串的数量相对于所述总字符串数量的比率,
具有第一编码的字符串和具有第二编码的字符串的数量相对于所述总字符串数量的比率,
具有至少一个unicode字符(无论是否处于转义模式)的字符串的数量相对于所述总字符串数量的比率,
具有至少一个特殊字符(诸如回车、数学符号、空格)的字符串的数量相对于所述总字符串数量的比率,
具有不可打印字符的字符串的数量相对于所述总字符串数量的比率,以及
具有未知编码的字符串的数量相对于所述总字符串数量的比率。
8.根据权利要求1至7中的一项所述的方法,其中,所述程序复杂度度量(qt1-qtn)包括以下中的至少一项:
代码的总行数,
包、类和函数或方法的数量,
每个函数或方法的指令的数量,
应用编程接口调用的分布,
类、方法、类属性、常量的分布,
halstead度量,以及
mccabe圈复杂度分析。
9.根据权利要求1至8中的一项所述的方法,进一步包括:
针对所述程序文本文件(cf)中的每个程序文本文件(cf)生成控制流程图(cfg),和/或
生成包括所述应用的函数的所有所述方法的调用图。
10.根据权利要求1至9中的一项所述的方法,进一步包括:将每个计算的分数与相应的阈值进行比较;根据与其相应的阈值的所述比较来选择所述分数;以及根据对应于所选择的分数的所述度量,通过添加分别针对每个所选择的分数定义的系数,针对每个程序文本文件计算全局分数(fmt)。
11.根据权利要求1至10中的一项所述的方法,进一步包括:通过将加权系数应用到针对文件集的所述程序文本文件计算的所述全局分数(fmt)来计算程序文本文件(cf)的所述文件集的全局分数(pmt),和/或通过将加权系数应用到从所述软件应用的每个程序文本文件计算的所述分数来计算所述软件应用的全局分数(amt)。
12.根据权利要求1至11中的一项所述的方法,其中,生成新的可执行软件应用(apf1)包括:
选择混淆处理;
将所选择的混淆处理应用于每个识别的程序文本文件的所述源代码文件;以及
编译并汇编所述源代码文件,对所述新的可执行软件应用进行进一步测试,以识别未充分混淆的程序文本文件。
13.根据权利要求12所述的方法,其中,针对所述程序文本文件计算的所述全局分数(fmt)是基于用户选择的一个或多个度量的,并且所述混淆处理是根据所选择的度量来选择的。
14.一种计算机系统,用于选择可执行软件应用的可执行程序文件,所述计算机系统被配置为实现根据权利要求1至13中的一项所述的方法。
15.一种计算机程序产品,其可加载到计算机存储器中并且包括代码部分,所述代码部分在由一个或多个计算机执行时,将所述一个或多个计算机配置为执行权利要求1至13中的一项所述的方法。