CN110879708B - 一种基于抽象语法树和定理证明的局部敏感程序分析方法 - Google Patents
一种基于抽象语法树和定理证明的局部敏感程序分析方法 Download PDFInfo
- Publication number
- CN110879708B CN110879708B CN201911137082.3A CN201911137082A CN110879708B CN 110879708 B CN110879708 B CN 110879708B CN 201911137082 A CN201911137082 A CN 201911137082A CN 110879708 B CN110879708 B CN 110879708B
- Authority
- CN
- China
- Prior art keywords
- detected
- node
- nodes
- program
- theorem proving
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于抽象语法树和定理证明的局部敏感程序分析方法,包括:对程序代码构建出没有语法错误的抽象语法树AST;遍历程序代码的抽象语法树AST,收集待检测节点及待检测节点的相关节点,根据待检测节点及其相关节点信息,形成待检测节点的相关逻辑表达式,输入至定理证明器中;定理证明器通过逻辑表达式求解待检测节点,若求解获得的待检测节点值存在异常情况,则判定程序存在语义缺陷。本发明通过收集程序节点局部上下文和局部路径信息,避免某些错误的报警以及提高易用性,实现了对程序代码的语义缺陷检测,避免了传统的符号执行工具分析代码因为路径爆炸问题而耗时长的问题。
Description
技术领域
本发明涉及计算机信息安全领域中的程序代码检测领域,具体涉及一种基于抽象语法树和定理证明的局部敏感程序分析方法。
背景技术
在基于抽象语法树遍历的静态代码分析中,静态代码分析工具框架针对每个源代码文件生成的抽象语法树(AST)进行遍历,开发者可以根据规则的需求,创建对应的节点匹配器并进行注册,静态代码分析工具在遍历语法树时,发现符合节点匹配器的节点,则会将该节点保存在内存中,并通过回调函数通知客户端。开发者在完成了节点匹配器的注册后,在回调函数中实现报警机制,将对应节点的代码位置,报警内容输出到命令行。基于以上的框架,静态代码分析工具在处理程序中的语法问题时,是非常高效和精准的,但是涉及到路径敏感的语义问题,就无法进行处理。
在上述方法分析源代码文件时,由于遍历过程和代码执行过程不一致,另外遍历过程中不会对对象的状态进行记录,因此在匹配节点处无法对程序的语义进行分析,仅能从语法层面判断是否存在程序异常,因此基于抽象语法树的静态代码分析工具的机制仅能源代码文件的语法规则检测,而无法实现语义规则的检测。
而从程序分析的角度,很多程序的问题是需要在程序的语义层面去检测的,如果抛弃了这种语义而只仅从语法层面对每个源代码文件进行分析,就无法更全面的对程序进行检测,导致分析效果的大打折扣。而符号执行工具的运行性能比较低下,对于复杂程序往往无能为力,存在较高的误报和漏报率
发明内容
针对上述现有技术存在的问题,本发明提供了一种基于抽象语法树和定理证明的局部敏感程序分析方法,包括:
1.1、对程序代码进行预处理、词法分析以及语法分析,根据语法分析的结果构建出没有语法错误的抽象语法树AST;
1.2、遍历程序代码的抽象语法树AST,收集待检测节点及待检测节点的相关节点,根据待检测节点及其相关节点信息,形成待检测节点的相关逻辑表达式,输入至定理证明器中;
1.3、定理证明器通过逻辑表达式求解待检测节点,判断求解获得的待检测节点值是否存在异常情况;
1.4若求解获得的待检测节点值存在异常情况,则判定程序存在语义缺陷。
作为上述方案的进一步优化,所述步骤1.2中遍历程序代码的抽象语法树AST,对于函数中引起程序分支的节点,遍历方式为:新建遍历器,根据进入该分支的条件形成逻辑表达式,输入至定理证明器,然后遍历该分支节点下的所有语句,遍历完成后移除进入该分支的条件形成的逻辑表达式,并返回原遍历器中继续遍历。
作为上述方案的进一步优化,所述回到原遍历器中继续遍历的方法为:
在新建遍历器时,将输入至定理证明器中的逻辑表达式的栈顶指针标记,当遍历器遍历完成时,进行退栈操作,直至标记的位置。
作为上述方案的进一步优化,对于引起程序分支的节点为进入循环体的条件时,在所述遍历该分支节点下的所有语句过程中,将所有可能提前退出循环体的约束条件,形成逻辑表达式并输入至定理证明器。
作为上述方案的进一步优化,所述步骤1.2中遍历程序代码的抽象语法树AST,还包括收集变量的赋值语句,在整个遍历过程中遇到包含所述赋值语句相关变量的求解节点时,将该变量的赋值语句转换为逻辑表达式,输入至定理证明器后,再对该节点进行求解。
作为上述方案的进一步优化,所述步骤1.3中,判断求解获得的待检测节点值是否存在异常情况的具体方法为:
6.1、根据待检测节点的语义,获取可能出现的异常类型;
6.2、将输入至定理证明器的逻辑表达式代入异常类型所对应的条件,进行求解获取待检测节点是否满足异常类型所对应的条件;
6.3、基于步骤6.2,若求解结果满足异常类型所对应的条件,则判定待检测节点存在该类型的异常。
作为上述方案的进一步优化,所述异常类型包含数学运算异常,数组下标越界异常,访问对象为空异常,循环约束条件恒真恒假异常。
作为上述方案的进一步优化,所述循环约束条件恒真恒假异常的判断方法具体为:
8.1、第一次求解循环约束条件,若循环约束条件满足恒真恒假异常,则进行步骤8.2,否则循环约束条件不存在恒真恒假异常;
8.2、第二次求解循环约束条件,将遍历器遍历循环体内的代码生成的所有逻辑表达式与所述循环约束条件结合,进行求解判断;
8.3、若第二次求解循环约束条件的结果满足恒真恒假异常,则判定循环约束条件存在恒真恒假异常,否则判定循环约束条件不存在恒真恒假异常。
作为上述方案的进一步优化,所述步骤1.4中,在判定程序存在语义缺陷后,立即报警,并停止对包含错误的路径以及其子路径的遍历。
本发明的一种基于抽象语法树和定理证明的局部敏感程序分析方法,具备如下有益效果:
1.本发明的一种基于抽象语法树和定理证明的局部敏感程序分析方法,在遍历抽象语法树节点时,和定理证明器结合使用,在获取到需要检测的节点的逻辑表达式后,将逻辑表达式输入到定理证明器中,通过定理证明器求解,验证该节点是否存在语义缺陷,实现了对程序语义方面的检测,而且避免了符号执行工具效率低的问题。
2.本发明的一种基于抽象语法树和定理证明的局部敏感程序分析方法,在遍历过程中,对于遇到遍历过程和代码执行过程不一致的分支节点时,采用新建遍历器的方法,对分支节点下的所有子节点单独遍历,形成局部的语义分析过程;另外对新建遍历器遍历过程中产生逻辑表达式的栈顶指针进行标记,便于新建遍历器完成局部代码遍历后,回到原遍历器继续遍历,实现了一种局部路径敏感的程序分析方法,缩短程序分析用时,在较短的时间内,得到有效的分析结果。
附图说明
图1为本发明一种基于抽象语法树和定理证明的局部敏感程序分析方法的整体流程框图;
图2为本发明一种基于抽象语法树和定理证明的局部敏感程序分析方法的在遍历过程中遇到引起程序分支的节点的遍历流程框图;
图3为本发明一种基于抽象语法树和定理证明的局部敏感程序分析方法的在遍历过程中遇到赋值语句的处理方法流程框图;
实施方式
下面结合附图和具体实施例对本发明的技术方案进行进一步说明。
本发明提供的一种基于抽象语法树和定理证明的局部敏感程序分析方法,包括:
对程序代码进行预处理、词法分析以及语法分析,根据语法分析的结果构建出没有语法错误的抽象语法树AST;
遍历程序代码的抽象语法树AST,收集待检测节点及待检测节点的相关节点,根据待检测节点及其相关节点信息,形成待检测节点的相关逻辑表达式,输入至定理证明器中;
在遍历过程中,首先确定需要检测的节点,然后将待检测节点及其相关节点信息共同收集分析,转换出待检测节点的相关逻辑表达式,将相关逻辑表达式输入定理证明器中,定理证明器通过相关逻辑表达式对该节点信息求解,并根据逻辑表达式中的约束信息判断该节点是否存在语义缺陷。
由于函数中含有导致程序执行过程中产生判断和跳转的节点,比如函数调用语句、if判断语句、while循环语句、for循环语句、do…while语句及三元运算符等,会导致代码文件的执行路径与AST遍历路径不一致,在这种情况下,基于抽象语法树的静态代码分析过程只能分析语法是否存在缺陷,不能对程序执行过程中出现的语义缺陷进行检测。
而传统的符号执行工具,虽然能够检测程序语义上的缺陷,但是程序中的分支节点导致路径的分裂,随着程序分支数量的增多,分析时路径数会迅猛增长,造成路径爆炸,使得耗时大大提高。
考虑到引起程序分支的节点导致代码文件的执行路径与AST遍历路径不一致,但是在每个分支节点下的局部程序代码内部,执行的顺序和遍历的顺序基本一致,结合抽象语法树的静态代码分析工具的框架和符号执行工具的工作原理,遍历程序代码的抽象语法树AST的步骤中,对于函数中引起程序分支的节点,遍历方式为:新建遍历器,根据进入该分支的条件形成逻辑表达式,输入至定理证明器,然后遍历该分支节点下的所有语句,遍历完成后移除进入该分支的条件形成的逻辑表达式,并返回原遍历器中继续遍历。
本实施例中,采用新建遍历器对分支节点下的程序代码进行遍历,进行局部的语义分析。下面以条件判断语句、for循环语句、while循环语句和do-while循环语句为例说明对程序分支节点的遍历方式:
a)条件判断语句:
i.获取条件表达式,并翻译为对应的逻辑表达式;
ii.新建遍历器,将约束逻辑表达式输入,同时继续对then分支子语句块进行遍历;
iii.新建遍历器,将得到的约束逻辑表达式取反后再输入,同时继续对else分支子语句块进行遍历。
b)for循环语句:
i.根据初始化语句,条件表达式,迭代语句,获得约束条件,并翻译为对应的逻辑表达式;
ii.新建遍历器,将约束逻辑表达式输入,继续对循环体语句进行遍历。
c)while循环语句,do-while循环语句:
i.获取条件表达式,并翻译为对应的逻辑表达式;
ii.新建遍历器,将约束逻辑表达式输入,继续对循环体语句进行遍历。
本实施例中对程序分支节点的遍历方式,在单个函数内进行语法树的遍历,避免将遍历过程延续至函数外的代码,继而从整体上避免了路径数量的快速增长。而且仅针对语法树上的关键分支节点如条件判断语句、for循环语句、while循环语句和do-while循环语句等进行约束条件到逻辑表达式的翻译,降低了局部路径分裂的层数。
为了优化在循环体中的信息收集过程,对于引起程序分支的节点为进入循环体的条件时,在所述遍历该分支节点下的所有语句过程中,即遍历循环体时,将所有可能提前退出循环体的约束条件,比如break,continue,return语句等语句,形成逻辑表达式并输入至定理证明器。再对循环体内的待求解节点进行求解,提高求解精确度,避免某些错误的报警。
为了在新建遍历器遍历完成分支节点下的程序代码后,能够回到原遍历器继续进行遍历,采取的方法为:在新建遍历器时,将输入至定理证明器中的逻辑表达式的栈顶指针标记,当遍历器遍历完成时,进行退栈操作,直至标记的位置。
本实施例在新建遍历器遍历过程中,程序分支条件的逻辑表达式输入到定理证明器中时,记录栈顶指针,新建遍历器继续遍历该分支节点下的所有语句,遍历完成后,进行退栈操作,直至记录的栈顶指针位置,从而回到原遍历器继续遍历,这样做,既可以保证输入定理证明器的逻辑表达式的正确性,又可以高效的在路径之间进行回溯,使得遍历过程更快速流畅。
为了优化待检测节点及相关节点的信息收集过程,在遍历程序代码的抽象语法树AST的步骤中,还包括收集变量的赋值语句,在整个遍历过程中遇到包含所述赋值语句相关变量的求解节点时,将该变量的赋值语句转换为逻辑表达式,输入至定理证明器后,再对该节点进行求解。
在遍历过程中,对于遇到的赋值语句,先保存在程序缓存中,当整个遍历节点的过程中,遇到含有变量的待测节点,在程序缓存中查找是否存在包含该变量的赋值语句,如果存在,则将该赋值语句信息,转换成逻辑表达式,并与待测节点的逻辑表达式一同输入定理证明器,进行待测节点的求解,这样可以提高约束条件求解的准确度,使分析结果更为精确。
在对抽象语法树AST遍历后,根据待检测节点及其相关节点信息,定理证明器通过逻辑表达式求解待检测节点,判断求解获得的待检测节点值是否存在异常情况,若求解获得的待检测节点值存在异常情况,则判定程序存在语义缺陷。
上述判断求解获得的待检测节点值是否存在异常情况的具体方法为:
第一步、根据待检测节点的语义,获取可能出现的异常类型;
第二步、将输入至定理证明器的逻辑表达式代入异常类型所对应的条件,进行求解获取待检测节点是否满足异常类型所对应的条件;
第三步、基于第二步,若求解结果满足异常类型所对应的条件,则判定待检测节点存在该类型的异常。
常见的异常类型包含数学运算异常,数组下标越界异常,访问对象为空异常,循环约束条件恒真恒假异常,具体的对上述异常情况举例说明,例如:
A.数学运算异常,比如整数溢出异常,除数为0异常;
B.数组下标越界异常;
C.在循环约束条件中,表达式恒真恒假的异常;
D.在对指针进行解引用时,使用定理证明器求解指针是否为空,存在指针为空的可能性时,则为空指针异常。
在数组下标越界异常的判断过程中,首先通过数组定义获取数组的长度,然后获取下标表达式进行判断:
(1)若下标表达式为常量,则直接判断该常量值是否超出数组长度;
(2)若下标表达式为循环语句的循环变量时,则获取循环变量的取值范围,并判断其是否超出数组长度,若超出长度,则在循环体中进一步确认代码是否会在下标变量获取到越界值前终止循环;
(3)若下标表达式为无法利用局部符号执行技术求解的表达式时,如:函数调用表达式时,则放弃对该节点的求解;
(4)若下标表达式为其他可以利用局部符号执行技术求解的表达式时,则通过定理证明器(已将局部路径中收集到的约束条件转换为逻辑表达式,输入至定理证明器)求解该表达式是否存在越界的可能性,若存在,则判定程序存在语义缺陷。
在循环约束条件恒真恒假异常的判断过程中,为了避免循环体内代码对循环约束条件相关变量的副作用所引起的误报,对循环约束条件进行二次求解,判断方法具体为:
a、第一次求解循环约束条件,若循环约束条件满足恒真恒假异常,则进行步骤b,否则循环约束条件不存在恒真恒假异常;
b、第二次求解循环约束条件,将遍历器遍历循环体内的代码生成的所有逻辑表达式与所述循环约束条件结合,进行求解判断;
c、若第二次求解循环约束条件的结果满足恒真恒假异常,则判定循环约束条件存在恒真恒假异常,否则判定循环约束条件不存在恒真恒假异常。
在判定程序存在语义缺陷后,立即报警,并停止对包含错误的路径以及其子路径的遍历,这样可以避免由当前发现的程序错误引发的后续报警,使分析报告更简明,同时节省分析时间。
本发明不局限于上述具体的实施方式,本领域的普通技术人员从上述构思出发,不经过创造性的劳动,所做出的种种变换,均落在本发明的保护范围之内。
Claims (7)
1.一种基于抽象语法树和定理证明的局部敏感程序分析方法,其特征在于:包括:
1.1、对程序代码进行预处理、词法分析以及语法分析,根据语法分析的结果构建出没有语法错误的抽象语法树AST;
1.2、遍历程序代码的抽象语法树AST,收集待检测节点及待检测节点的相关节点,根据待检测节点及其相关节点信息,形成待检测节点的相关逻辑表达式,输入至定理证明器中;
1.3、定理证明器通过逻辑表达式求解待检测节点,判断求解获得的待检测节点值是否存在异常情况;
1.4若求解获得的待检测节点值存在异常情况,则判定程序存在语义缺陷;
所述步骤1.2中遍历程序代码的抽象语法树AST,对于函数中引起程序分支的节点,遍历方式为:新建遍历器,根据进入该分支的条件形成逻辑表达式,输入至定理证明器,然后遍历该分支节点下的所有语句,遍历完成后移除进入该分支的条件形成的逻辑表达式,并返回原遍历器中继续遍历;
所述回到原遍历器中继续遍历的方法为:
在新建遍历器时,将输入至定理证明器中的逻辑表达式的栈顶指针标记,当遍历器遍历完成时,进行退栈操作,直至标记的位置。
2.根据权利要求1所述的一种基于抽象语法树和定理证明的局部敏感程序分析方法,其特征在于:对于引起程序分支的节点为进入循环体的条件时,在所述遍历该分支节点下的所有语句过程中,将所有可能提前退出循环体的约束条件,形成逻辑表达式并输入至定理证明器。
3.根据权利要求1所述的一种基于抽象语法树和定理证明的局部敏感程序分析方法,其特征在于:所述步骤1.2中遍历程序代码的抽象语法树AST,还包括收集变量的赋值语句,在整个遍历过程中遇到包含所述赋值语句相关变量的求解节点时,将该变量的赋值语句转换为逻辑表达式,输入至定理证明器后,再对该节点进行求解。
4.根据权利要求1所述的一种基于抽象语法树和定理证明的局部敏感程序分析方法,其特征在于:所述步骤1.3中,判断求解获得的待检测节点值是否存在异常情况的具体方法为:
6.1、根据待检测节点的语义,获取可能出现的异常类型;
6.2、将输入至定理证明器的逻辑表达式代入异常类型所对应的条件,进行求解获取待检测节点是否满足异常类型所对应的条件;
6.3、基于步骤6.2,若求解结果满足异常类型所对应的条件,则判定待检测节点存在该类型的异常。
5.根据权利要求4所述的一种基于抽象语法树和定理证明的局部敏感程序分析方法,其特征在于:所述异常类型包含数学运算异常,数组下标越界异常,访问对象为空异常,循环约束条件恒真恒假异常。
6.根据权利要求5所述的一种基于抽象语法树和定理证明的局部敏感程序分析方法,其特征在于:所述循环约束条件恒真恒假异常的判断方法具体为:
8.1、第一次求解循环约束条件,若循环约束条件满足恒真恒假异常,则进行步骤8.2,否则循环约束条件不存在恒真恒假异常;
8.2、第二次求解循环约束条件,将遍历器遍历循环体内的代码生成的所有逻辑表达式与所述循环约束条件结合,进行求解判断;
8.3、若第二次求解循环约束条件的结果满足恒真恒假异常,则判定循环约束条件存在恒真恒假异常,否则判定循环约束条件不存在恒真恒假异常。
7.根据权利要求1所述的一种基于抽象语法树和定理证明的局部敏感程序分析方法,其特征在于:所述步骤1.4中,在判定程序存在语义缺陷后,立即报警,并停止对包含错误的路径以及其子路径的遍历。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911137082.3A CN110879708B (zh) | 2019-11-19 | 2019-11-19 | 一种基于抽象语法树和定理证明的局部敏感程序分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911137082.3A CN110879708B (zh) | 2019-11-19 | 2019-11-19 | 一种基于抽象语法树和定理证明的局部敏感程序分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110879708A CN110879708A (zh) | 2020-03-13 |
CN110879708B true CN110879708B (zh) | 2023-05-02 |
Family
ID=69729346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911137082.3A Active CN110879708B (zh) | 2019-11-19 | 2019-11-19 | 一种基于抽象语法树和定理证明的局部敏感程序分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110879708B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111651198B (zh) * | 2020-04-20 | 2021-04-13 | 北京大学 | 代码摘要自动化生成方法及装置 |
CN112114792B (zh) * | 2020-09-14 | 2023-09-22 | 中国船舶重工集团公司第七0九研究所 | 通用c/c++结构化对象转换为json对象的代码生成方法与系统 |
CN115408595B (zh) * | 2022-11-03 | 2023-03-24 | 博和利统计大数据(天津)集团有限公司 | 数据抓取引擎开发方法、执行方法、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106940654A (zh) * | 2017-02-15 | 2017-07-11 | 南京航空航天大学 | 源代码中内存错误的自动检测和定位方法 |
CN108536581A (zh) * | 2018-03-08 | 2018-09-14 | 华东师范大学 | 一种针对源代码的运行时形式化验证方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100153933A1 (en) * | 2008-12-17 | 2010-06-17 | Karsten Bohlmann | Path Navigation In Abstract Syntax Trees |
-
2019
- 2019-11-19 CN CN201911137082.3A patent/CN110879708B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106940654A (zh) * | 2017-02-15 | 2017-07-11 | 南京航空航天大学 | 源代码中内存错误的自动检测和定位方法 |
CN108536581A (zh) * | 2018-03-08 | 2018-09-14 | 华东师范大学 | 一种针对源代码的运行时形式化验证方法及系统 |
Non-Patent Citations (1)
Title |
---|
高传平 ; 谈利群 ; 宫云战 ; .基于抽象语法树的代码静态自动测试方法研究.北京化工大学学报(自然科学版).2007,(第S1期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN110879708A (zh) | 2020-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110879708B (zh) | 一种基于抽象语法树和定理证明的局部敏感程序分析方法 | |
CN110059006B (zh) | 代码审计方法及装置 | |
CN111240687A (zh) | 源代码静态分析装置 | |
CN111240982A (zh) | 源代码静态分析方法 | |
US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
JP4693044B2 (ja) | ソースコード脆弱性検査装置 | |
CN109857641B (zh) | 对程序源文件进行缺陷检测的方法及装置 | |
CN104573503B (zh) | 一种内存访问溢出的检测方法及装置 | |
CN102231134A (zh) | 基于静态分析的冗余代码缺陷检测方法 | |
CN116049831A (zh) | 一种基于静态分析和动态分析的软件漏洞检测方法 | |
US10891117B2 (en) | Method and system for using subroutine graphs for formal language processing | |
CN102662825B (zh) | 一种面向堆操作程序的内存泄漏检测方法 | |
CN112988163B (zh) | 编程语言智能适配方法、装置、电子设备和介质 | |
CN117113347A (zh) | 一种大规模代码数据特征提取方法及系统 | |
CN114911711A (zh) | 一种代码缺陷分析方法、装置、电子设备及存储介质 | |
Negrini et al. | Twinning automata and regular expressions for string static analysis | |
CN113626823A (zh) | 一种基于可达性分析的组件间交互威胁检测方法及装置 | |
CN111966578A (zh) | 一种安卓兼容性缺陷修复效果的自动化评估方法 | |
CN117171741A (zh) | 代码缺陷分析方法及装置 | |
CN109032946B (zh) | 一种测试方法和装置、计算机可读存储介质 | |
CN114912110B (zh) | 一种Node.js代码安全检测方法及系统 | |
CN116595533A (zh) | 一种针对Java Web应用的注入型漏洞检测方法及系统 | |
Xu et al. | Software Defect Prediction for Specific Defect Types based on Augmented Code Graph Representation | |
CN113946339A (zh) | 应用工程文件的处理方法、装置、电子设备及可读介质 | |
Grigorev et al. | String-embedded language support in integrated development environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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 |