首页 / 专利库 / 电脑零配件 / 计算机系统 / 软件 / 一种构件行为模型挖掘方法与装置

一种构件行为模型挖掘方法与装置

阅读:688发布:2023-05-29

专利汇可以提供一种构件行为模型挖掘方法与装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种构件行为模型挖掘方法与装置,该方法包括:S1)运行包含构件的 软件 ,动态采集构件的带参行为交互序列,构成序列集合;S2)合并具有不同参数值的相同构件行为交互序列;S3)基于合并后的构件行为交互序列构建一棵树;S4)合并树中的等价 节点 获得有限状态机R’;S5)根据参数观察值集合归纳参数的不变式作为有限状态机R’中对应边的守护条件;S6)计算有限状态机R’中构件行为满足参数不变式的概率;S7)基于步骤S6)中迁移发生的概率得到最终的带参概率自动机表示的构件行为模型。本发明考虑了构件行为模型中参数-构件行为之间的依赖关系并采用概率模型对模型挖掘过程中的噪声进行有效处理,可获得更精确的构件行为模型。,下面是一种构件行为模型挖掘方法与装置专利的具体信息内容。

1.一种构件行为模型挖掘方法,其特征在于,包括以下步骤:
S1)运行包含构件的软件,动态采集带参数的构件行为交互序列,构成序列集合C;所述带参数的构件行为交互序列中的参数为用于约束构件行为的参数;
S2)合并具有不同参数值的相同构件行为交互序列,合并后的序列中,同一个参数a对应一个参数观察值集合B(a)=ai…an;
S3)基于合并后的构件行为交互序列构建一棵树R,其中,树的节点代表构件行为对象的状态q,树的边代表该状态下可执行的构件行为m和参数值集合B(a);
S4)合并步骤S3)中树R中的等价节点获得有限状态机R’;
S5)根据参数观察值集合B(a)归纳参数a的不变式f(a)作为有限状态机R’中对应边的守护条件;
S6)计算有限状态机R’中边 在守护条件f(a)下迁移发生的概率,即参数-构件行为依赖概率,
其中,C(q1,q2)为R’生成C中构件行为交互序列时边(q1,q2)被访问的次数;C(q1)为R’生成C中构件行为交互序列时节点q1被访问的次数,m为与边关联的构件行为;
S7)基于步骤S6)中迁移发生的概率得到最终的带参概率自动机表示的构件行为模型,则所述带参概率自动机表示为一个7元组(Σ,Q,D,q0,QE,F,t),其中,
Σ为非空的构件行为集合;
Q为非空有限状态集合;
D=D1×D2×…×Dn∪{φ}为n维参数空间;n表示用于约束构件行为的参数共有n个;
q0∈Q为唯一起始状态;
为非空终止状态集合;
F为一个关于构件行为参数的布尔函数(即参数不变式)集合fi,fi:D→{0,1};
t:Q×Σ×F×Q→[0,1]为参数-构件行为依赖概率分布函数。
2.根据权利要求1所述的构件行为模型挖掘方法,其特征在于,所述步骤S5)中根据参数观察值集合B(a)归纳参数a的不变式,包括:
若参数a为数值类型的参数,采用基于模板演化的数值不变式学习方法归纳参数的不变式;
若参数a为字符串类型的参数,采用正则表达式自动学习工具RegexGenerator++从参数观察值集合中推理出正则表达式形式的参数不变式。
3.根据权利要求2所述的构件行为模型挖掘方法,其特征在于,所述基于模板演化的参数不变式学习方法,包括:
S51)令参数a满足的不变式为空不变式,即a=ε;
S52)参数a是否还存在未处理的观察值;若存在则转入S53),若不存在则输出a的不变式;
S53)获取参数a的任一观察值v∈B(a);
S54)如果v在B(a)中出现的次数大于预设的观察次数阈值Tc则转入S55);
S55)如果a=ε,则转入S56);
S56)将a满足的不变式演化为等值不变式,即a=v;
S57)如果a=u并且u≠v则转入S58);
S58)将a满足的不变式演化为集合不变式,即a∈{u,v};
S59)如果a=u1…un并且v≠u1…un并且nS510)更新集合不变式,添加新的数值v,即a∈u1…un∪{v};
S511)如果a=u1…un并且v≠u1…un并且n≥Ts,则转入S512);
S512)将a满足的不变式演化为范围不变式,即有min(u1…un∪{v})≤a≤max(u1…un∪{v});
S513)如果u1≤a≤un并且vS514)更新范围不变式,修改范围的下界,即v≤a≤un;
S515)如果u1≤a≤un并且v>un则转入S516;
S516)更新范围不变式,修改范围的上界,即u1≤a≤v;
S517)转到S52)。
4.根据权利要求1所述的构件行为模型挖掘方法,其特征在于,所述S4)等价节点判定方法为:
假设q1和q2是树R中的两个节点,若其满足下列三个条件之一,则q1和q2等价;
1)k-tails(q1)=k-tails(q2)
2) 或者
3)存在一个节点q,使得边(q,q1)与(q,q2)关联的构件行为及参数均相同所述节点的k-tails是指节点所能接受的最大长度为k的构件行为交互序列构成的集合。
5.一种构件行为模型挖掘装置,其特征在于,包括:程序动态分析器和基于带参概率自动机的构件行为模型推理模
程序动态分析器,用于采集构件的带参构件行为交互序列,获取带参构件行为交互序列集合;
基于带参概率自动机的构件行为模型推理模块,用于根据带参构件行为交互序列集合,推理出带参概率自动机形式的构件行为模型;包括:
构件行为交互序列预处理子模块,用于合并具有不同参数值的相同构件行为交互序列,合并后的序列中,同一个参数a对应一个观察值集合B(a)=ai…an;
构建树子模块,用于基于合并后的构件行为交互序列构建一棵树R,其中,树的节点代表构件行为对象的状态q,树的边代表该状态下可执行的构件行为m和参数值集合B(a);
构建有限状态机子模块,用于合并树R中的等价节点获得有限状态机R’;
参数不变式获取子模块,用于根据参数观察值集合B(a)归纳参数a的不变式f(a)作为有限状态机R’中对应边的守护条件;
概率计算子模块,用于计算有限状态机R’中边 在守护条件f(a)下迁移发生的概率,即参数-构件行为依赖概率,
其中,C(q1,q2)为R’生成C中构件行为交互序列时边(q1,q2)被访问的次数;C(q1)为R’生成C中构件行为交互序列时节点q1被访问的次数,m为与边关联的构件行为;
构件行为模型生成子模块,用于基于参数-构件行为依赖概率得到最终的带参概率自动机表示的构件行为模型,
则所述带参概率自动机表示为一个7元组(Σ,Q,D,q0,QE,F,t),其中,
Σ为非空的构件行为集合;
Q为非空有限状态集合;
D=D1×D2×…×Dn∪{φ}为n维参数空间;n表示用于约束构件行为的参数共有n个;
q0∈Q为唯一起始状态;
为非空终止状态集合;
F为一个关于构件行为参数的布尔函数集合fi,fi:D→{0,1};
t:Q×Σ×F×Q→[0,1]为参数-构件行为依赖概率分布函数。
6.根据权利要求5所述的构件行为模型挖掘装置,其特征在于,所述参数不变式获取子模块中根据参数观察值集合B(a)归纳参数a的不变式,具体如下:
若参数a为数值类型的参数,采用基于模板演化的数值不变式学习方法归纳参数的不变式;
若参数a为字符串类型的参数,采用正则表达式自动学习工具RegexGenerator++从参数观察值集合中推理出正则表达式形式的参数不变式。
7.根据权利要求6所述的构件行为模型挖掘装置,其特征在于,所述基于模板演化的参数不变式学习方法,包括:
S1)令参数a满足的不变式为空不变式,即a=ε;
S2)参数a是否还存在未处理的观察值;若存在则转入S3),若不存在则输出a的不变式;
S3)获取参数a的任一观察值v∈B(a);
S4)如果v在B(a)中出现的次数大于预设的观察次数阈值Tc则转入S5);
S5)如果a=ε,则转入S6);
S6)将a满足的不变式演化为等值不变式,即a=v;
S7)如果a=u并且u≠v则转入S8);
S8)将a满足的不变式演化为集合不变式,即a∈{u,v};
S9)如果a=u1…un并且v≠u1…un并且nS10)更新集合不变式,添加新的数值v,即a∈u1…un∪{v};
S11)如果a=u1…un并且v≠u1…un并且n≥Ts,则转入S12);
S12)将a满足的不变式演化为范围不变式,即有min(u1…un∪{v})≤a≤max(u1…un∪{v});
S13)如果u1≤a≤un并且vS14)更新范围不变式,修改范围的下界,即v≤a≤un;
S15)如果u1≤a≤un并且v>un则转入S16;
S16)更新范围不变式,修改范围的上界,即u1≤a≤v;
S17)转到S2)。
8.根据权利要求5所述的构件行为模型挖掘装置,其特征在于,所述构建有限状态机子模块中等价节点判定方法为:
假设q1和q2是树R中的两个节点,若其满足下列三个条件之一,则q1和q2等价;
1)k-tails(q1)=k-tails(q2)
2) 或者
3)存在一个节点q,使得边(q,q1)与(q,q2)关联的构件行为及参数均相同所述节点的k-tails是指节点所能接受的最大长度为k的构件行为交互序列构成的集合。

说明书全文

一种构件行为模型挖掘方法与装置

技术领域

[0001] 本发明涉及计算机技术,尤其涉及一种构件行为模型挖掘方法与装置。

背景技术

[0002] 构件行为模型又被称为构件接口约束、对象/API使用模式以及类型状态等。以对象、中间件和Web服务等形式存在的构件是软件系统的主体。构件内部的数据依赖和控制依赖外化为构件固有的行为模式。例如:对文件对象进行操作时应首先“打开文件”,然后多次“读文件”或者“写文件”,最后必须“关闭文件”。上述构件行为之间的时序约束形成了构件行为模型。构件行为模型代表了正确使用构件需要满足的前置条件,是进行软件漏洞检测的重要依据。据统计,Eclipse错误仓库中至少包含100项以上与构件行为模型相关的软件错误。然而,人工对复杂构件的行为模型进行精确描述是一项困难的工作。得益于软件大数据的发展,采用数据挖掘方法自动获取构件行为模型并进行软件漏洞检测已成为近年来软件工程领域的热点研究方向。
[0003] 目前学术界和工业界对构件行为模型挖掘均开展了大量的研究工作。其中存在的主要问题是通过挖掘获得的构件行为模型精度不足,以至于在软件漏洞检测中产生大量的误报和漏报,从而极大的降低漏洞检测工具的可用性和用户体验。构件行为模型挖掘的精度主要取决于建模能。虽然图模型和有限状态机具有表达复杂构件行为模型的能力,但是已有研究关注的重点在于构件行为之间的时序约束,对于参数-构件行为之间的依赖缺乏有效的建模方法和挖掘算法

发明内容

[0004] 本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种构件行为模型挖掘方法与装置。
[0005] 本发明解决其技术问题所采用的技术方案是:一种构件行为模型挖掘方法,包括以下步骤:
[0006] S1)运行包含构件的软件,动态采集带参数的构件行为交互序列,构成序列集合C;所述带参数的构件行为交互序列中的参数为用于约束构件行为的参数;
[0007] S2)合并具有不同参数值的相同构件行为交互序列,合并后的序列中,同一个参数a对应一个参数观察值集合B(a)=ai…an;
[0008] S3)基于合并后的构件行为交互序列构建一棵树R,其中,树的节点代表构件行为对象的状态q,树的边代表该状态下可执行的构件行为m和参数值集合B(a);
[0009] S4)合并步骤S3)中树R中的等价节点获得有限状态机R’;
[0010] S5)根据参数观察值集合B(a)归纳参数a的不变式f(a)作为有限状态机R’中对应边的守护条件;
[0011] S6)计算有限状态机R’中边 在守护条件f(a)下迁移发生的概率,即参数-构件行为依赖概率,
[0012]
[0013] 其中,C(q1,q2)为R’生成C中构件行为交互序列时边(q1,q2)被访问的次数;C(q1)为R’生成C中构件行为交互序列时节点q1被访问的次数,m为与边关联的构件行为;
[0014] S7)基于步骤S6)中迁移发生的概率得到最终的带参概率自动机表示的构件行为模型,
[0015] 则所述带参概率自动机表示为一个7元组(Σ,Q,D,q0,QE,F,t),其中,[0016] Σ为非空的构件行为集合;
[0017] Q为非空有限状态集合;
[0018] D=D1×D2×…×Dn∪{φ}为n维参数空间;n表示用于约束构件行为的参数共有n个;
[0019] q0∈Q为唯一起始状态;
[0020] 为非空终止状态集合;
[0021] F为一个关于构件行为参数的布尔函数(即参数不变式)集合fi,fi:D→{0,1};
[0022] t:Q×Σ×F×Q→[0,1]为参数-构件行为依赖概率分布函数。
[0023] 按上述方案,所述步骤S5)中根据参数观察值集合B(a)归纳参数a的不变式,包括:
[0024] 若参数a为数值类型的参数,采用基于模板演化的数值不变式学习方法归纳参数的不变式;
[0025] 若参数a为字符串类型的参数,采用正则表达式自动学习工具RegexGenerator++从参数观察值集合中推理出正则表达式形式的参数不变式。
[0026] 按上述方案,所述基于模板演化的参数不变式学习方法,包括:
[0027] S51)令参数a满足的不变式为空不变式,即a=ε;
[0028] S52)参数a是否还存在未处理的观察值;若存在则转入S53),若不存在则输出a的不变式;
[0029] S53)获取参数a的任一观察值v∈B(a);
[0030] S54)如果v在B(a)中出现的次数大于预设的观察次数阈值Tc则转入S55);
[0031] S55)如果a=ε,则转入S56);
[0032] S56)将a满足的不变式演化为等值不变式,即a=v;
[0033] S57)如果a=u并且u≠v则转入S58);
[0034] S58)将a满足的不变式演化为集合不变式,即a∈{u,v};
[0035] S59)如果a=u1…un并且v≠u1…un并且n
[0036] S510)更新集合不变式,添加新的数值v,即a∈u1…un∪{v};
[0037] S511)如果a=u1…un并且v≠u1…un并且n≥Ts,则转入S512);
[0038] S512)将a满足的不变式演化为范围不变式,即有min(u1…un∪{v})≤a≤max(u1…un∪{v});
[0039] S513)如果u1≤a≤un并且v
[0040] S514)更新范围不变式,修改范围的下界,即v≤a≤un;
[0041] S515)如果u1≤a≤un并且v>un则转入S516;
[0042] S516)更新范围不变式,修改范围的上界,即u1≤a≤v;
[0043] S517)转到S52)。
[0044] 按上述方案,所述S4)等价节点判定方法为:
[0045] 假设q1和q2是树R中的两个节点,若其满足下列三个条件之一,则q1和q2等价;
[0046] 1)k-tails(q1)=k-tails(q2)
[0047] 2) 或者
[0048] 3)存在一个节点q,使得边(q,q1)与(q,q2)关联的构件行为及参数均相同[0049] 所述节点的k-tails是指节点所能接受的最大长度为k的构件行为交互序列构成的集合。
[0050] 一种构件行为模型挖掘装置,包括:程序动态分析器和基于带参概率自动机的构件行为模型推理模
[0051] 程序动态分析器,用于采集构件的带参构件行为交互序列,获取带参构件行为交互序列集合;
[0052] 基于带参概率自动机的构件行为模型推理模块,用于根据带参构件行为交互序列集合,推理出带参概率自动机形式的构件行为模型;包括:
[0053] 构件行为交互序列预处理子模块,用于合并具有不同参数值的相同构件行为交互序列,合并后的序列中,同一个参数a对应一个观察值集合B(a)=ai…an;
[0054] 构建树子模块,用于基于合并后的构件行为交互序列构建一棵树R,其中,树的节点代表构件行为对象的状态q,树的边代表该状态下可执行的构件行为m和参数值集合B(a);
[0055] 构建有限状态机子模块,用于合并树R中的等价节点获得有限状态机R’;
[0056] 参数不变式获取子模块,用于根据参数观察值集合B(a)归纳参数a的不变式f(a)作为有限状态机R’中对应边的守护条件;
[0057] 概率计算子模块,用于计算有限状态机R’中构件行为m满足参数不变式f(a)下的概率,即参数-构件行为依赖概率,
[0058]
[0059] 其中,C(q1,q2)为R’生成C中构件行为交互序列时边(q1,q2)被访问的次数;C(q1)为R’生成C中构件行为交互序列时节点q1被访问的次数,m为与边关联的构件行为;
[0060] 构件行为模型生成子模块,用于基于参数-构件行为依赖概率得到最终的带参概率自动机表示的构件行为模型,
[0061] 则所述带参概率自动机表示为一个7元组(Σ,Q,D,q0,QE,F,t),其中,[0062] Σ为非空的构件行为集合;
[0063] Q为非空有限状态集合;
[0064] D=D1×D2×…×Dn∪{φ}为n维参数空间;表示用于约束构件行为的参数共有n个;
[0065] q0∈Q为唯一起始状态;
[0066] 为非空终止状态集合;
[0067] F为一个关于构件行为参数的布尔函数(即参数不变式)集合fi,fi:D→{0,1};
[0068] t:Q×Σ×F×Q→[0,1]为参数-构件行为依赖概率分布函数。
[0069] 按上述方案,所述参数不变式获取子模块中根据参数观察值集合B(a)归纳参数a的不变式,具体如下:
[0070] 若参数a为数值类型的参数,采用基于模板演化的数值不变式学习方法归纳参数的不变式;
[0071] 若参数a为字符串类型的参数,采用正则表达式自动学习工具RegexGenerator++从参数观察值集合中推理出正则表达式形式的参数不变式。
[0072] 按上述方案,所述基于模板演化的参数不变式学习方法,包括:
[0073] S1)令参数a满足的不变式为空不变式,即a=ε;
[0074] S2)参数a是否还存在未处理的观察值;若存在则转入S3),若不存在则输出a的不变式;
[0075] S3)获取参数a的任一观察值v∈B(a);
[0076] S4)如果v在B(a)中出现的次数大于预设的观察次数阈值Tc则转入S5);
[0077] S5)如果a=ε,则转入S6);
[0078] S6)将a满足的不变式演化为等值不变式,即a=v;
[0079] S7)如果a=u并且u≠v则转入S8);
[0080] S8)将a满足的不变式演化为集合不变式,即a∈{u,v};
[0081] S9)如果a=u1…un并且v≠u1…un并且n
[0082] S10)更新集合不变式,添加新的数值v,即a∈u1…un∪{v};
[0083] S11)如果a=u1…un并且v≠u1…un并且n≥Ts,则转入S12);
[0084] S12)将a满足的不变式演化为范围不变式,即有min(u1…un∪{v})≤a≤max(u1…un∪{v});
[0085] S13)如果u1≤a≤un并且v
[0086] S14)更新范围不变式,修改范围的下界,即v≤a≤un;
[0087] S15)如果u1≤a≤un并且v>un则转入S16;
[0088] S16)更新范围不变式,修改范围的上界,即u1≤a≤v;
[0089] S17)转到S2)。
[0090] 按上述方案,所述构建有限状态机子模块中等价节点判定方法为:
[0091] 假设q1和q2是树R中的两个节点,若其满足下列三个条件之一,则q1和q2等价;
[0092] 1)k-tails(q1)=k-tails(q2)
[0093] 2) 或者
[0094] 3)存在一个节点q,使得边(q,q1)与(q,q2)关联的构件行为及参数均相同[0095] 所述节点的k-tails是指节点所能接受的最大长度为k的构件行为交互序列构成的集合。
[0096] 本发明产生的有益效果是:
[0097] 1、通过在迁移中添加构件行为参数的不变式作为守护条件,使用概率形式表达参数-构件行为之间的特殊依赖关系并且这种概率形式描述的关系对噪声具有较好的抵抗能力;
[0098] 2、带参概率自动机模型推理方法全面的考虑了数值类型的参数和字符串类型的参数并且针对不同数据类型参数的特点提供了基于模板演化的参数不变式学习方法和正则表达式参数不变式学习方法,全方位的、多种数据类型参数不变式的归纳方法进一步保障了构件行为模型挖掘的精度;
[0099] 3、基于模板演化的参数不变式学习方法通过模板演化的策略可学习出等值不变式、集合不变式和范围不变式等多种形式的参数不变式,较已有工作中基于模板匹配的方法具有更高的效率。附图说明
[0100] 下面将结合附图及实施例对本发明作进一步说明,附图中:
[0101] 图1为本发明实施例中带参概率自动机描述的文件对象行为模型示意图;
[0102] 图2为本发明实施例中带参概率自动机模型的推理方法执行流程图
[0103] 图3为本发明实施例中基于模板演化的参数不变式学习方法执行流程图;
[0104] 图4为本发明实施例中为本发明的构件行为模型挖掘装置图;
[0105] 图5为根据构件行为交互序列构造的树图;
[0106] 图6为合并等价状态后的有限状态机图;
[0107] 图7为带守护条件的有限状态机图;
[0108] 图8带参概率自动机表示的构件行为模型图。

具体实施方式

[0109] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0110] 本发明提供了一种构件行为模型挖掘方法,通过该方法将构件行为模型表示为一个7元组(Σ,Q,D,q0,QE,F,t),其中,
[0111] Σ为非空的构件行为集合;
[0112] Q为非空有限状态集合;
[0113] D=D1×D2×…×Dn∪{φ}为n维参数空间;
[0114] q0∈Q为唯一起始状态;
[0115] 为非空终止状态集合;
[0116] F为一个关于构件行为参数的布尔函数(即参数不变式)集合fi,fi:D→{0,1};
[0117] t:Q×Σ×F×Q→[0,1]为状态迁移概率分布函数。
[0118] 便于直观理解,图1给出了采用带参概率自动机描述的文件对象行为模型示意图,其中构件行为集合
[0119] Σ={fopen,fwrite,fread,fopen};
[0120] 带入射箭头的圆圈为初始状态;双圆圈表示终止状态;布尔函数集合F={mode=‘w’,T},mode=‘w’表示构件行为fopen的参数mode=‘w’时,布尔函数取值为1,反之为0,T表示一个值永远为1的布尔函数;迁移中的数值表示状态发生迁移的概率。通过在状态迁移中关联参数信息,带参概率自动机可表达P(t|F)这种具有参数依赖的构件行为时序约束信息。
[0121] 如图2所示,一种构件行为模型挖掘方法,包括:
[0122] S1、假设J为一个软件构件,m(J)为构件J的行为集合,应用了构件J的程序为其客户端程序;
[0123] S2、运行构件J的客户端程序,动态采集构件J的带参行为交互序列,构成序列集合C。所述构件J的带参行为交互序列为如下所示的序列:
[0124]
[0125] 其中,mi∈m(J),i=1…n,Pi为构件行为mi执行时的参数值集合;
[0126] S3、合并上述序列集合C中具有不同参数值的相同构件行为交互序列,合并后的序列中,一个参数a对应一个参数观察值集合B(a)=a1…an;
[0127] S4、基于合并后的构件行为交互序列构建一棵树R,其中节点代表状态q,边代表该状态下可执行的构件行为m和参数值集合B(a)。树R中每个分支对应集合C中的一条构件行为交互序列;
[0128] S5、将上述树R中的等价节点进行合并形成一个有限状态机R’。节点合并时,节点的边以及与边关联的参数值集合均进行合并;
[0129] 步骤S5中的等价节点判定方法为:
[0130] 假设q1和q2是树R中的两个节点,若其满足下列三个条件之一,则q1和q2等价;
[0131] 1)k-tails(q1)=k-tails(q2)
[0132] 2) 或者
[0133] 3)存在一个节点q,使得边(q,q1)与(q,q2)关联的构件行为及参数均相同[0134] 所述节点的k-tails是指节点所能接受的最大长度为k的构件行为交互序列构成的集合;
[0135] S6、根据参数观察值集合B(a)归纳出参数a的不变式f(a)作为R’中对应边的守护条件;
[0136] 步骤S6中的不变式归纳方法为:
[0137] 针对数值类型的参数,采用基于模板演化的数值不变式学习方法;
[0138] 针对字符串类型的参数,采用正则表达式自动学习工具RegexGenerator++从参数观察值集合中推理出正则表达式形式的参数不变式。
[0139] 上述基于模板演化的参数不变式学习方法,如图3所示,包括:
[0140] 1、令参数a满足的不变式为空不变式,即a=ε;
[0141] 2、参数a是否还存在未处理的观察值;
[0142] 3、获取参数a的任一观察值v∈B(a);
[0143] 4、如果v在B(a)中出现的次数大于观察次数阈值Tc则转入步骤5;
[0144] 5、如果a=ε则转入步骤6;
[0145] 6、a满足的不变式演化为等值不变式,即a=v;
[0146] 7、如果a=u并且u≠v则转入步骤8;
[0147] 8、a满足的不变式演化为集合不变式,即a∈{u,v};
[0148] 9、如果a=u1…un并且v≠u1…un并且n
[0149] 10、更新集合不变式,添加新的数值v,即a∈u1…un∪{v};
[0150] 11、如果a=u1…un并且v≠u1…un并且n≥Ts,则转入步骤12;
[0151] 12、a满足的不变式演化为范围不变式,即有min(u1…un∪{v})≤a≤max(u1…un∪{v});
[0152] 13、如果u1≤a≤un并且v
[0153] 14、更新范围不变式,修改范围的下界,即v≤a≤un;
[0154] 15、如果u1≤a≤un并且v>un则转入步骤16;
[0155] 16、更新范围不变式,修改范围的上界,即u1≤a≤v。
[0156] S7、采用如下公式计算R’中边 在守护条件f(a)下迁移发生的概率,即参数-构件行为依赖概率,其中m为与边关联的构件行为,
[0157]
[0158] 其中,C(q1,q2)为R’生成C中构件行为交互序列时边(q1,q2)被访问的次数;C(q1)为R’生成C中构件行为交互序列时节点q1被访问的次数。
[0159] 根据上述方法,如图4所示,我们还提供了一种构件行为模型挖掘装置,包括程序动态分析器和基于带参概率自动机的构件行为模型推理模块。
[0160] 程序动态分析器:程序动态分析器从给定程序中采集特定构件的带参构件行为交互序列,形成带参构件行为交互序列集合;
[0161] 基于带参概率自动机的构件行为模型推理模块:以上述带参构件行为交互序列集合作为输入,采用本发明的方法推理出带参概率自动机形式的构件行为模型;
[0162] 包括:
[0163] 构件行为交互序列预处理子模块,用于合并具有不同参数值的相同构件行为交互序列,合并后的序列中,同一个参数a对应一个观察值集合B(a)=ai…an;
[0164] 构建树子模块,用于基于合并后的构件行为交互序列构建一棵树R,其中,树的节点代表构件行为对象的状态q,树的边代表该状态下可执行的构件行为m和参数值集合B(a);
[0165] 构建有限状态机子模块,用于合并树R中的等价节点获得有限状态机R’;
[0166] 参数不变式获取子模块,用于根据参数观察值集合B(a)归纳参数a的不变式f(a)作为有限状态机R’中对应边的守护条件;
[0167] 概率计算子模块,用于计算有限状态机R’中边 在守护条件f(a)下迁移发生的概率,即参数-构件行为依赖概率,
[0168]
[0169] 其中,C(q1,q2)为R’生成C中构件行为交互序列时边(q1,q2)被访问的次数;C(q1)为R’生成C中构件行为交互序列时节点q1被访问的次数,m为与边关联的构件行为;
[0170] 构件行为模型生成子模块,用于基于参数-构件行为依赖概率得到最终的带参概率自动机表示的构件行为模型,
[0171] 则所述带参概率自动机表示为一个7元组(Σ,Q,D,q0,QE,F,t),其中,[0172] Σ为非空的构件行为集合;
[0173] Q为非空有限状态集合;
[0174] D=D1×D2×…×Dn∪{φ}为n维参数空间;n表示用于约束构件行为的参数共有n个;
[0175] q0∈Q为唯一起始状态;
[0176] 为非空终止状态集合;
[0177] F为一个关于构件行为参数的布尔函数(即参数不变式)集合fi,fi:D→{0,1};
[0178] t:Q×Σ×F×Q→[0,1]为参数-构件行为依赖概率分布函数。
[0179] 实施例一
[0180] 本实施例提供了一种构件行为模型挖掘方法,本实施例中,目标构件设定为文件对象。文件对象的构件行为及参数信息如表1所示。
[0181] 表1文件对象构件行为及参数信息
[0182]
[0183] 使用文件对象的程序为其客户端程序。客户端程序在使用文件对象时需遵循其构件行为模型,即:必须首先打开一个文件(fopen),然后才能对该文件进行读(fread)或者写(fwrite)操作,最后必须关闭文件(fclose)。此外,上述构件行为之间的时序约束还有构件行为的参数有关,具体为:只有以只写模式(mode=’w’)打开的文件,才能进行写操作;只有以只读模式(mode=’r’)打开的文件,才能进行读操作。上述构件行为之间的时序约束及构件行为-参数之间的依赖关系构成了构件行为模型。该实施例以文件对象作为目标构件,对本发明的一种构件行为模型挖掘方法及装置进行说明。
[0184] 首先,采用程序动态分析技术从文件对象的客户端程序中采集带参数的构件行为交互序列。假设采集到的带参构件行为交互序列集合C中共包含如下4个元素:
[0185] 序列1:
[0186] 序列2:
[0187] 序列3:
[0188] 序列4:
[0189] 基于上述构件行为交互序列集合C,本发明的一种构件行为模型挖掘方法为:
[0190] 步骤1:合并上述序列集合C中具有不同参数值的相同构件行为交互序列。由于集合C中没有相同的构件行为交互序列,所以合并后的序列与合并前相同;
[0191] 步骤2:基于步骤1中合并后的构件行为交互序列集合构造树R,如图5所示;
[0192] 步骤3:合并步骤2中树R中的等价节点获得有限状态机R’,如图6所示;
[0193] 步骤4:根据参数观察值集合B(a)归纳出参数a的不变式f(a)作为R’中对应边的守护条件。如图7所示,边(q0,q12)有参数mode观察值集合B(mode)={w,w},应用基于模板演化的参数不变式学习方法可获得参数不变式mode=‘w’;同理,可获得边(q0,q1)上的参数不变式mode=‘r’。将上述不变式作为对应边迁移发生的守护条件得到如图7所示的有限状态机;
[0194] 步骤5:计算R’中特定守护条件下迁移发生的概率,有:
[0195] p(q0,q12,fopen,mode=’w’)=2/4=0.5
[0196] p(q0,q1,fopen,mode=’r’)=2/4=0.5
[0197] p(q12,q12,fwrite,T)=1/2=0.5
[0198] p(q12,q2,fwrite,T)=1/2=0.5
[0199] p(q1,q1,fread,T)=1/2=0.5
[0200] p(q1,q2,fread,T)=1/2=0.5
[0201] p(q2,q3,fclose,T)=4/4=1
[0202] 基于上述迁移发生的概率可得最终的带参概率自动机表示的构件行为模型,如图8所示。
[0203] 获得的构件行为模型可用于程序理解、程序文档自动生成以及软件漏洞检测等多个领域。以软件漏洞检测为例,基于构件行为模型的软件漏洞检测工作过程如下:
[0204] 步骤1:从构件的客户端程序中采集带参数的构件行为交互序列。假设获得构件行为交互序列为:
[0205]
[0206] 步骤2:根据构件行为模型验证上述构件行为交互序列是否合法,具体为:
[0207] 若图8所示的构件行为模型能产生该序列且产生该序列的路径上概率的乘积大于给定阈值则该序列为合法的构件行为交互序列,反之该序列中存在错误。
[0208] 显然,图8所示的构件行为模型不能产生上述序列且第一个不匹配的构件行为为fread,则说明fwrite之后不应该执行构件行为fread,所以上述构件行为交互序列中存在软件错误。
[0209] 应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈