CN110321458B - 一种基于控制流图的数据流分析方法及装置 - Google Patents
一种基于控制流图的数据流分析方法及装置 Download PDFInfo
- Publication number
- CN110321458B CN110321458B CN201910422869.8A CN201910422869A CN110321458B CN 110321458 B CN110321458 B CN 110321458B CN 201910422869 A CN201910422869 A CN 201910422869A CN 110321458 B CN110321458 B CN 110321458B
- Authority
- CN
- China
- Prior art keywords
- control flow
- condition
- state
- node
- constraint
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000005206 flow analysis Methods 0.000 title claims abstract description 28
- 238000010586 diagram Methods 0.000 claims abstract description 80
- 238000004458 analytical method Methods 0.000 claims abstract description 57
- 230000007704 transition Effects 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 17
- 230000008859 change Effects 0.000 claims description 14
- 238000004364 calculation method Methods 0.000 claims description 3
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010195 expression analysis Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供一种基于控制流图的数据流分析方法及装置,其中方法包括:对控制流图进行简化处理,简化后的控制流图包括控制流条件中的所有条件变量以及与所述条件变量有关的节点与边;遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件;若符合分析条件,则以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图;根据所述状态图生成循环摘要。本发明实施例具有准确、快速预测循环执行次数、生成循环摘要的优势。
Description
技术领域
本发明实施例涉及计算机技术领域,更具体地,涉及一种基于控制流图的数据流分析方法及装置。
背景技术
控制流图(Control Flow Graph,CFG)为一有向图,是一个过程或程序的抽象表现,在静态分析过程中被建立并维护为一个抽象数据结构。控制流图表示一个过程内所有基本块的可能执行流向,即一个程序执行过程中可能遍历的所有路径。建立程序控制流图使得程序抽象结构更为规范和可读,为后续进行数据流分析提供了极大的便利。
控制流图可由解析抽象语法树(abstract syntax tree,AST)转化得到,可以看作是比AST更细粒度的程序中间表示。通过以下两步即可完成从AST到CFG的转换:(1)用BasicBlock对象把属于一个基本块的AST节点收集到数组里,并且记录CFG的入边和出边。(2)连接源和目标BasicBlock形成CFG节点之间的边,并且记录下跳转的条件。
数据流分析指在控制流图的基础上通过迭代分析得到感兴趣的数据流结果,包括可达定义分析、活跃变量分析、可用表达式分析等。这些分析是建立在划分好基本块和流图的基础上,通过在控制流图中的迭代、传递和合并完成对流图中不动点状态的计算。现有的数据流区间分析方法处理循环是困难的,一般只能跳过或者模拟一定次数的运算。
发明内容
本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的基于控制流图的数据流分析方法及装置。
第一个方面,本发明实施例提供一种基于控制流图的数据流分析方法,包括:
对控制流图进行简化处理,简化后的控制流图包括控制流条件中的所有条件变量以及与所述条件变量有关的节点与边;
遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件;
若符合分析条件,则以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图;
根据所述状态图生成循环摘要;
其中,所述分析条件为条件变量在任意一次循环执行过程前后改变量为同一常量;所述状态图中记录两状态节点进行状态转移时的约束条件、触发条件以及条件变量在状态转移后的赋值。
第二个方面,本发明实施例提供一种基于控制流图的数据流分析装置,包括:
简化模块,用于对控制流图进行简化处理,简化后的控制流图包括控制流条件中的所有条件变量以及与所述条件变量有关的节点与边;
分析判断模块,用于遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件;
状态图构建模块,用于若符合分析条件,则以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图;
摘要生成模块,用于根据所述状态图生成循环摘要;
其中,所述分析条件为条件变量在任意一次循环执行过程前后改变量为同一常量;所述状态图中记录两状态节点进行状态转移时的约束条件、触发条件以及条件变量在状态转移后的赋值。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。
本发明实施例提供的基于控制流图的数据流分析方法及装置,通过对控制流图进行简化处理,并对是否满足分析条件进行判断,若符合分析条件,以简化后的控制流图中的控制流路径构建状态图,能够直观精确地显示出控制流图循环过程的信息,最终利用状态图得到控制流图的循环摘要。本发明实施例具有准确、快速预测循环执行次数、生成循环摘要的优势。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于控制流图的数据流分析方法的流程示意图;
图2为本发明的示例计算机代码的控制流图;
图3为本发明实施例的示例计算机代码的化简后的控制流图;
图4为本发明实施例根据示例计算机代码生成的状态图;
图5为本发明实施例提供的基于控制流图的数据流分析装置的结构示意图;
图6为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了克服现有技术的上述问题,本发明实施例提供一种控制流图的数据流分析方法,参见图1,图1为本发明实施例的基于控制流图的数据流分析方法的流程示意图,如图所示,该方法包括:
S101、对控制流图进行简化处理,简化后的控制流图包括控制流条件中的所有条件变量以及与所述条件变量有关的节点与边;
需要说明的是,由于本发明实施例的最终目的是为了精细求解循环执行次数,因此,首先获得计算机代码的控制流图,然后通过对控制流图进行简化处理,仅保留控制流条件中的条件变量有关的节点与边,能够剔除一些与控制流无关的信息,提高分析速度。
S102、遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件。
本发明实施例适合分析控制流较为简单的循环,即循环内所有控制流路径(简称路径)的控制条件中的变量,在任意一次循环执行过程前后改变量为同一常量。
S103、若符合分析条件,则以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图;其中,所述状态图中记录两状态节点进行状态转移时的约束条件、触发条件以及条件变量在状态转移后的赋值。
需要说明的是,通过对简化后的控制流图进行遍历,记录生成的所有控制流路径,以每条控制流路径作为状态节点构建状态图,显然状态图中的节点数量进一步减少,通过分析化简后的控制流图,确定状态节点间进行状态转换时的约束条件、触发条件以及条件变量在状态转移后的赋值。
S104、根据所述状态图生成循环摘要。
本发明实施例通过对控制流图进行简化处理,并对是否满足分析条件进行判断,若符合分析条件,以简化后的控制流图中的控制流路径构建状态图,能够直观精确地显示出控制流图循环过程的信息,最终利用状态图得到控制流图的循环摘要。本发明实施例具有准确、快速预测循环执行次数、生成循环摘要的优势。
下面以一个具体示例对本发明实施例的控制流图的数据流分析方法进行说明:
示例计算机代码为:
图2为本发明实施例的示例计算机代码的控制流图,图2中BBn表示第n个BasicBlock,BasicBlock是控制流图中的基本块,程序执行的最小单位。T表示true,F表示false。
通过对示例计算机代码进行分析可知,该代码可提取的控制流条件中的所有条件变量包括x、k、x-k、y和x-y,因此对控制流图进行简化处理,图3为本发明实施例的示例计算机代码的化简后的控制流图。T表示true,F表示false。
通过对化简后的控制流图进行分析,可知存在3条控制流路径:
p1:BB1→BB5→BB8→BB7→BB5
p2:BB1→BB5→BB6→BB7→BB5
p3:BB1→BB2
通过对每条控制流路径进行分析,可知在每条控制流路径的条件变量在人一次循环执行过程前后改变了均为同一常量,以第一条控制流路径为例,在第一条控制流路径中,Δx=1,Δk=0,Δ(x-k)=1,Δy=0,Δ(x-y)=1,显然均为定值。
以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图,图4为本发明实施例根据示例计算机代码生成的状态图,如图4所示,s1、s2和s3分别表示状态图的三个状态节点,每个状态节点中记录了对应的控制流路径以及各条件变量在每次执行控制路径前后的变量变化;e12表示由状态节点1转移至状态节点2的转移函数,也是状态图中的边(eage),包括状态转移时的约束条件、触发条件以及条件变量在状态转移后的赋值;e21和e13的含义与e12类似,在此不再赘述。
在获得状态图后,从状态图的起始节点开始,在所述状态图中遍历,依次记录3次状态转移代表的路径执行次数,直到找出到达终结节点的运行记录,将所述运行记录中各状态节点的运行次数之和作为所述控制流图的循环次数,即所有边中计算的执行次数之和。
在上述各实施例的基础上,作为一种可选实施例,对控制流图进行简化处理,具体为:
对所述控制流图中产生控制流分支的节点的判断条件进行递归遍历,记录循环控制条件需要的条件变量;删除所述控制流图中与所述条件变量无关的节点和边,获得所述简化后的控制流图。简化后的控制流图是仅关于循环执行次数的控制流图。
在上述各实施例的基础上,作为一种可选实施例,遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件,具体为:
从所述简化后的控制流图的循环入口进行深度优先遍历(Depth-FirstTraversal),记录生成的所有控制流路径;
在每一条控制流路径中,通过符号执行的方式记录所有条件遍历在执行所述控制流路径前后的变量变化;
根据所有控制流路径中条件变量的改变量是否都为可确定的定值,判断所述控制流图是否符合分析条件。
以上述的示例计算机代码为例,从循环入口开始,在精简的CFG中进行深度优先遍历,记录生成的不同路径。如果路径最终退出循环,标记为终止路径,其余在图中形成环路的路径标记为循环路径,共存在3条控制流路径:
p1:BB1→BB5→BB8→BB7→BB5
p2:BB1→BB5→BB6→BB7→BB5
p3:BB1→BB2
其中,p1和p2是循环路径,p3是终止路径。
在每一条控制流路径中进行检验,通过符号执行的方式记录所有条件表达式在执行路径前后的变量变化。如果所有路径中所有条件变量的改变量都为可确定的定值,即满足分析条件,否则该循环不满足本分析方法的分析条件,在示例计算机代码的3条控制流路径中,采用ΔVn表示第n条控制流路径前后的变量变化,则存在:
ΔV1:{Δx=1,Δk=0,Δ(x-k)=1,Δy=0,Δ(x-y)=1}
ΔV2:{Δx=0,Δk=0,Δ(x-k)=0,Δy=1,Δ(x-y)=-1}
ΔV3:{Δx=0,Δk=0,Δ(x-k)=0,Δy=0,Δ(x-y)=0}
显然,上述示例计算机代码适用于本发明实施例的数据流分析方法。
在上述各实施例的基础上,作为一种可选实施例,以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图,具体为:
为每条控制流路径建立一个状态节点,所述状态节点中记录控制流路径信息、控制流路径上的所有约束条件以及各条件变量在每次执行控制路径前后的变量变化;所述状态图的起始节点为循环的进入条件所在的节点,终结节点集合为终止路径所对应的状态节点的集合;
对于状态节点sa至状态节点sb的转移,根据循环分析条件的约束转移时需要执行状态sa的控制流路径pa的次数iab;
根据状态节点sa中记录的各条件变量在每次执行控制路径前后的变量变化,计算执行iab-1次后的条件变量的集合Vab′和执行iab次后的条件变量的集合Vab″,
根据集合Vab′更新状态节点sa的约束条件θa,获得新约束条件θa′,根据集合Vab″更新状态节点sb的约束条件θb,获得新约束条件θb′;
使用SMT求解器,根据新约束条件θa′和新约束条件θb′计算状态图中记录状态节点sa和状态节点sb进行状态转移时的约束条件和触发条件值。
SMT求解器为SMT(Satisfiability Modulo Theory)问题的自动化求解工具,它可以处理包含一些特定理论(定长位向量、线性算数运算、未解释函数等)的一阶谓词逻辑。SMT求解器它能可支持逻辑的可满足性,极大地提高了程序分析的精度和分析效率。
以上述示例计算机代码的控制流图为例对构建状态图的过程进行说明:
为每条路径建立一个状态节点,该节点包含信息有路径、路径约束(将路径上的所有条件使用∧连接)、变量变化(之前符号执行得出的每条路径执行后条件遍历的改变情况),:
s1:p1,θ1=x<y∧x<k,ΔP1
s2:p2,θ2=x<y∧x≥k,ΔP2
s3:p3,θ3=x≥y,ΔP3
状态图的起始节点为循环的进入条件所在的节点s1,终结节点集合为终止路径所对应状态节点的集合s3。
两个状态节点间的转移函数是需要在分析中填充的内容,包含转移产生的约束、转移的触发条件和条件变量在转移后的赋值三部分。在每个转移中引入一个变量i,表示从状态x到状态y转移前需要执行状态1共i次。
对于从状态s1到状态s2的转移,使用i12表示转移时需要执行s1的路径p1的次数。如果状态可以从s1到s2进行转移,即有当前满足s1的路径约束θ1,且在p1执行完i12次前都满足θ1,在执行完i12次后满足s2的路径约束θ2。
根据状态节点中的变量变化,计算p1执行i12-1次和i12次后的变量表示。将原始变量集合设为V1,执行i12-1次后的变量集合用V12′表示,执行i12次后的变量集合用V12″表示。
V′12={x′=x+i12-1,k′=k,(x-k)′=x+i12-1-k,y′=y,(x-y)′=x+i12-1-y}
V″12={x′=x+i12,k′=k,(x-k)′=x+i12-k,y′=y,(x-y)′=x+i12-y}
对于s1的约束θ1,在p1执行完i12次前都应当满足,即包括执行i12-1次后。将θ1中的变量进行替换,得到新约束θ1′。
对于s2的约束θ2,在p1执行完i12次后都应当满足。将θ2中的变量进行替换,得到新约束θ2′。
θ′1=θ1[V′12/V]=(x+i12-1<k)∧(x+i12-1<y)
θ′2=θ2[V″12/V]=(x+i12<k)∧(x+i12≥y)
使用SMT Solver求解包含i12的转移约束θ12:=θ1′∧θ2′,按照之前对循环分析条件的约束,必然可以能到i12的仅包含一个整数值的范围,即求得了i12的值:
θ12=(x+i12-1<k)∧(x+i12-1<y)∧(x+i12<k)∧(x+i12
≥y)
化简求解SMT:
y-x≤i12<y-x+1
即求得:
i12=y-x
将i12带入转移约束θ12并化简,得到转移发生时的触发条件φ12。将i12带入V12″,得到转移之后变量的取值。
图5为本发明实施例提供的基于控制流图的数据流分析装置的结构示意图,如图5所示,该控制流图的数据流分析装置包括:简化模块501、分析判断模块502、状态图构建模块503和摘要生成模块504,其中:
简化模块501,用于对控制流图进行简化处理,简化后的控制流图包括控制流条件中的所有条件变量以及与所述条件变量有关的节点与边;
分析判断模块502,用于遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件;
状态图构建模块503,用于若符合分析条件,则以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图;
摘要生成模块504,用于根据所述状态图生成循环摘要;
其中,所述分析条件为条件变量在任意一次循环执行过程前后改变量为同一常量;所述状态图中记录两状态节点进行状态转移时的约束条件、触发条件以及条件变量在状态转移后的赋值。
本发明实施例提供的控制流图的数据流分析装置,具体执行上述各控制流图的数据流分析方法实施例流程,具体请详见上述各控制流图的数据流分析方法实施例的内容,在此不再赘述。本发明实施例提供的控制流图的数据流分析装置,通过对控制流图进行简化处理,并对是否满足分析条件进行判断,若符合分析条件,以简化后的控制流图中的控制流路径构建状态图,能够直观精确地显示出控制流图循环过程的信息,最终利用状态图得到控制流图的循环摘要。本发明实施例具有准确、快速预测循环执行次数、生成循环摘要的优势。
图6为本发明实施例提供的电子设备的实体结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储在存储器630上并可在处理器610上运行的计算机程序,以执行上述各实施例提供的显著性检测方法,例如包括:对控制流图进行简化处理,简化后的控制流图包括控制流条件中的所有条件变量以及与所述条件变量有关的节点与边;遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件;若符合分析条件,则以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图;根据所述状态图生成循环摘要;其中,所述分析条件为条件变量在任意一次循环执行过程前后改变量为同一常量;所述状态图中记录两状态节点进行状态转移时的约束条件、触发条件以及条件变量在状态转移后的赋值。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的显著性检测方法,例如包括:对控制流图进行简化处理,简化后的控制流图包括控制流条件中的所有条件变量以及与所述条件变量有关的节点与边;遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件;若符合分析条件,则以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图;根据所述状态图生成循环摘要;其中,所述分析条件为条件变量在任意一次循环执行过程前后改变量为同一常量;所述状态图中记录两状态节点进行状态转移时的约束条件、触发条件以及条件变量在状态转移后的赋值。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种基于控制流图的数据流分析方法,其特征在于,包括:
对控制流图进行简化处理,简化后的控制流图包括控制流条件中的所有条件变量以及与所述条件变量有关的节点与边;
遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件;
若符合分析条件,则以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图;
根据所述状态图生成循环摘要;
其中,所述分析条件为条件变量在任意一次循环执行过程前后改变量为同一常量;所述状态图中记录两状态节点进行状态转移时的约束条件、触发条件以及条件变量在状态转移后的赋值;
所述以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图,具体包括:
为每条控制流路径建立一个状态节点,所述状态节点中记录控制流路径信息、控制流路径上的所有约束条件以及各条件变量在每次执行控制路径前后的变量变化;所述状态图的起始节点为循环的进入条件所在的节点,终结节点集合为终止路径所对应的状态节点的集合;
对于状态节点sa至状态节点sb的转移,根据循环分析条件的约束转移时需要执行状态sa的控制流路径pa的次数iab;
根据状态节点sa中记录的各条件变量在每次执行控制路径前后的变量变化,计算执行iab-1次后的条件变量的集合Vab′和执行iab次后的条件变量的集合Vab″;
根据集合Vab′更新状态节点sa的约束条件θa,获得新约束条件θa′,根据集合Vab″更新状态节点sb的约束条件θb,获得新约束条件θb′;
使用SMT求解器,根据新约束条件θa′和新约束条件θb′计算状态图中记录状态节点sa和状态节点sb进行状态转移时的约束条件和触发条件值。
2.根据权利要求1所述的数据流分析方法,其特征在于,所述对控制流图进行简化处理,具体为:
对所述控制流图中产生控制流分支的节点的判断条件进行递归遍历,记录循环控制条件需要的条件变量;
删除所述控制流图中与所述条件变量无关的节点和边,获得所述简化后的控制流图。
3.根据权利要求1所述的数据流分析方法,其特征在于,所述遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件,具体为:
从所述简化后的控制流图的循环入口进行深度优先遍历,记录生成的所有控制流路径;
在每一条控制流路径中,通过符号执行的方式记录所有条件遍历在执行所述控制流路径前后的变量变化;
根据所有控制流路径中条件变量的改变量是否都为可确定的定值,判断所述控制流图是否符合分析条件。
4.根据权利要求1所述的数据流分析方法,其特征在于,所述使用SMT求解器,根据新约束条件θa′和新约束条件θb′计算状态图中记录状态节点sa和状态节点sb进行状态转移时的约束条件和触发条件,具体为:
使用SMT求解器,根据新约束条件θa′和新约束条件θb′计算状态图中记录状态节点sa和状态节点sb进行状态转移时的约束条件θab;
将次数iab代入约束条件θab中,获得触发条件φab。
5.根据权利要求1所述的数据流分析方法,其特征在于,所述根据所述状态图生成循环摘要,具体为:
从所述状态图的起始节点开始,深度优先在所述状态图中遍历,依次记录每次状态转移代表的路径执行次数,直到找出到达终结节点的运行记录,将所述运行记录中各状态节点的运行次数之和作为所述控制流图的循环次数。
6.一种基于控制流图的数据流分析装置,其特征在于,包括:
简化模块,用于对控制流图进行简化处理,简化后的控制流图包括控制流条件中的所有条件变量以及与所述条件变量有关的节点与边;
分析判断模块,用于遍历所述简化后的控制流图中的所有控制流路径,以判断所述控制流图是否符合分析条件;
状态图构建模块,用于若符合分析条件,则以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图;
摘要生成模块,用于根据所述状态图生成循环摘要;
其中,所述分析条件为条件变量在任意一次循环执行过程前后改变量为同一常量;所述状态图中记录两状态节点进行状态转移时的约束条件、触发条件以及条件变量在状态转移后的赋值;
所述状态图构建模块以所述简化后的控制流图的每条控制流路径作为状态节点构建状态图,具体包括:
为每条控制流路径建立一个状态节点,所述状态节点中记录控制流路径信息、控制流路径上的所有约束条件以及各条件变量在每次执行控制路径前后的变量变化;所述状态图的起始节点为循环的进入条件所在的节点,终结节点集合为终止路径所对应的状态节点的集合;
对于状态节点sa至状态节点sb的转移,根据循环分析条件的约束转移时需要执行状态sa的控制流路径pa的次数iab;
根据状态节点sa中记录的各条件变量在每次执行控制路径前后的变量变化,计算执行iab-1次后的条件变量的集合Vab′和执行iab次后的条件变量的集合Vab″;
根据集合Vab′更新状态节点sa的约束条件θa,获得新约束条件θa′,根据集合Vab″更新状态节点sb的约束条件θb,获得新约束条件θb′;
使用SMT求解器,根据新约束条件θa′和新约束条件θb′计算状态图中记录状态节点sa和状态节点sb进行状态转移时的约束条件和触发条件值。
7.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至5中任意一项所述的控制流图的数据流分析方法。
8.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至5中任意一项所述的控制流图的数据流分析方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910422869.8A CN110321458B (zh) | 2019-05-21 | 2019-05-21 | 一种基于控制流图的数据流分析方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910422869.8A CN110321458B (zh) | 2019-05-21 | 2019-05-21 | 一种基于控制流图的数据流分析方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110321458A CN110321458A (zh) | 2019-10-11 |
CN110321458B true CN110321458B (zh) | 2021-10-15 |
Family
ID=68113168
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910422869.8A Active CN110321458B (zh) | 2019-05-21 | 2019-05-21 | 一种基于控制流图的数据流分析方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110321458B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111813675A (zh) * | 2020-07-08 | 2020-10-23 | 北京嘀嘀无限科技发展有限公司 | Ssa结构解析方法、装置、电子设备和存储介质 |
CN112286831A (zh) * | 2020-12-30 | 2021-01-29 | 中国电力科学研究院有限公司 | 多重循环的数据流分析方法、系统、设备及存储介质 |
CN114422385B (zh) * | 2022-03-28 | 2022-07-05 | 阿里云计算有限公司 | 网络系统测试用例的生成方法及系统 |
CN118502732A (zh) * | 2024-07-18 | 2024-08-16 | 杭州新中大科技股份有限公司 | 字节码程序的分析方法、装置、设备和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110051A (zh) * | 2010-12-31 | 2011-06-29 | 北京邮电大学 | 应用程序切片技术的静态缺陷检测方法 |
CN104391684A (zh) * | 2014-09-03 | 2015-03-04 | 洛阳理工学院 | 一种精确分析任务wcet的自动化方法 |
CN107516040A (zh) * | 2017-07-25 | 2017-12-26 | 中国人民解放军63928部队 | 一种基于数据控制流图的脆弱性特征分析和获取方法 |
CN107656863A (zh) * | 2016-11-03 | 2018-02-02 | 华东师范大学 | 一种基于关键点引导的数据流测试方法及其测试系统 |
EP3318976A1 (en) * | 2015-06-30 | 2018-05-09 | Omron Corporation | Data flow control device and data flow control method |
CN109446066A (zh) * | 2018-09-20 | 2019-03-08 | 北京大学 | C/c++程序中不可达代码的静态检测方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104794401B (zh) * | 2015-04-15 | 2018-01-16 | 南京大学 | 一种静态分析辅助的符号执行漏洞检测方法 |
CN105446881A (zh) * | 2015-11-26 | 2016-03-30 | 福建工程学院 | 一种程序不可达路径的自动检测方法 |
WO2017168497A1 (ja) * | 2016-03-28 | 2017-10-05 | 株式会社日立製作所 | 計算機システム及びストリームデータ処理システムの設定方法 |
CN109145603A (zh) * | 2018-07-09 | 2019-01-04 | 四川大学 | 一种基于信息流的Android隐私泄露行为检测方法和技术 |
-
2019
- 2019-05-21 CN CN201910422869.8A patent/CN110321458B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102110051A (zh) * | 2010-12-31 | 2011-06-29 | 北京邮电大学 | 应用程序切片技术的静态缺陷检测方法 |
CN104391684A (zh) * | 2014-09-03 | 2015-03-04 | 洛阳理工学院 | 一种精确分析任务wcet的自动化方法 |
EP3318976A1 (en) * | 2015-06-30 | 2018-05-09 | Omron Corporation | Data flow control device and data flow control method |
CN107656863A (zh) * | 2016-11-03 | 2018-02-02 | 华东师范大学 | 一种基于关键点引导的数据流测试方法及其测试系统 |
CN107516040A (zh) * | 2017-07-25 | 2017-12-26 | 中国人民解放军63928部队 | 一种基于数据控制流图的脆弱性特征分析和获取方法 |
CN109446066A (zh) * | 2018-09-20 | 2019-03-08 | 北京大学 | C/c++程序中不可达代码的静态检测方法及系统 |
Non-Patent Citations (2)
Title |
---|
基于值依赖分析的空指针解引用检测;马森等;《电子学报》;20150430;第43卷(第4期);第647-651页 * |
基于符号执行的Python攻击脚本分析平台;邱洋等;《计算机工程》;20161115;第42卷(第11期);第139-146页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110321458A (zh) | 2019-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110321458B (zh) | 一种基于控制流图的数据流分析方法及装置 | |
CN110096439B (zh) | 一种面向solidity语言的测试用例生成方法 | |
Bulychev et al. | Rewrite-based statistical model checking of WMTL | |
US20100275186A1 (en) | Segmentation for static analysis | |
Horváth et al. | Dynamic constraint satisfaction problems over models | |
CN110297765B (zh) | 软件可靠性早期评估方法 | |
CN114819163B (zh) | 量子生成对抗网络的训练方法、装置、介质及电子装置 | |
CN114428748A (zh) | 一种用于真实业务场景的模拟测试方法及系统 | |
Chatterjee et al. | Lower bounds for symbolic computation on graphs: Strongly connected components, liveness, safety, and diameter | |
CN116702157B (zh) | 一种基于神经网络的智能合约漏洞检测方法 | |
CN116629330B (zh) | 一种算子检测方法、装置以及计算机设备 | |
CN113128015B (zh) | 预估单振幅模拟量子计算所需资源的方法和系统 | |
KR102255470B1 (ko) | 인공신경망 모델의 검증 방법 및 장치 | |
Seufert et al. | Sequential Verification Using Reverse PDR. | |
Oh et al. | A Model Independent S/W Framework for Search‐Based Software Testing | |
WO2022074796A1 (ja) | 評価方法、評価装置、および評価プログラム | |
CN112699376A (zh) | 源代码逻辑漏洞检测方法、装置、计算机设备及存储介质 | |
CN109491892B (zh) | 一种项目环境的配置方法和装置 | |
CN109992507B (zh) | 基于模拟执行的程序模糊测试方法及装置 | |
JP2010238057A (ja) | テスト制約抽出装置、方法およびプログラム | |
Tigane et al. | Dynamic GSPNs: formal definition, transformation towards GSPNs and formal verification | |
CN111815442A (zh) | 一种链接预测的方法、装置和电子设备 | |
JP3600420B2 (ja) | 論理検証装置 | |
WO2024178567A1 (zh) | 一种软件测试用例生成方法及相关装置 | |
Jiang et al. | AL-SMC: Optimizing Statistical Model Checking by Automatic Abstraction and Learning. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |