CN109684838B - 一种针对以太坊智能合约的静态代码审计***及方法 - Google Patents
一种针对以太坊智能合约的静态代码审计***及方法 Download PDFInfo
- Publication number
- CN109684838B CN109684838B CN201811404851.7A CN201811404851A CN109684838B CN 109684838 B CN109684838 B CN 109684838B CN 201811404851 A CN201811404851 A CN 201811404851A CN 109684838 B CN109684838 B CN 109684838B
- Authority
- CN
- China
- Prior art keywords
- word
- file
- name
- code
- function
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Machine Translation (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种在区块链的以太坊平台上针对智能合约的静态代码审计***及方法,属于信息安全技术领域。本发明能够检测以太坊平台上使用Solidity语言编写的智能合约上存在的安全威胁,定位到具***置,阐明危害并给出相应的解决方法。本发明方法:首先,用户将待检测的项目目录或者单个文件的路径输入***,***对输入内容进行预处理操作,将整个项目复制到临时工作目录中并删除其中的Solidity文件中的注释内容;其次,***将通过词法分析和语法分析等操作将每一个Solidity文件都解析成语法树的形式;然后,***将语法树结构与预先制定的逻辑匹配特征进行静态特征匹配,得到匹配结果;最后,***将匹配后的结果分类并汇总,生成报告文件,即为检测结果。
Description
技术领域
本发明属于信息安全技术领域,具体涉及一种在区块链的以太坊平台上针对智能合约的静态代码审计***及方法。
背景技术
区块链技术狭义来讲,是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
以太坊是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币提供去中心化的虚拟机来处理点对点合约。
智能合约是执行合约条款的计算机交易协议。它本质上就是一段可以执行的代码,当用户访问到该地址上时,智能合约将会自动运行。智能合约是公开的,区块链上的所有用户都可以看到基于区块链的智能合约。
目前已有不少基于区块链的以太坊平台上的智能合约应用,如社会经济平台的Backfeed、去中心化预测市场Augur和智能电网TransActive Grid等,然而在不少应用的开发过程中,设计者只关注其功能性而未考虑其安全问题,导致应用存在有安全隐患,又由于智能合约的内容是公开的,任何人都可以分析其源码从而找到漏洞。
发明内容
本发明的目的是克服上述现有技术的缺陷,提供一种在区块链的以太坊平台上针对智能合约的静态代码审计***及方法。
本发明所提出的技术问题是这样解决的:
一种在区块链的以太坊平台上针对智能合约的静态代码审计***,包括预处理模块、语法树生成模块、静态特征匹配模块和报告生成模块;
预处理模块:用于检测用户输入的合法性,将项目整体复制到临时工作目录,删除Solidity文件中的注释部分;
语法树生成模块:用于对预处理后的文件进行词法分析和语法分析,生成语法树;
静态特征匹配模块:用于将语法树与预先制定的逻辑匹配规则相匹配,检查是否命中,若命中匹配则记录对应的代码信息;
报告生成模块:用于分类并汇总匹配成功的代码信息,生成报告结果文件。
一种在区块链的以太坊平台上针对智能合约的静态代码审计方法,包括以下步骤:
步骤1.***预处理:
***对用户的输入进行合法性检测,然后将项目整体复制到临时工作目录中,并将其中的Solidity文件中的注释部分删除;
步骤2.语法树生成:
针对每一个Solidity代码文件,首先处理其引用文件,将引用的部分内容复制到当前文件中,然后进行词法分析,把每一个合法的词汇都提取出来,接着对词汇进行再处理操作,将其中的变量和常量封装成对应的结构类型,最后进行语法分析,通过下推自动机等技术将代码表达式转化成语法树的形式;
步骤3.静态特征匹配:
***将对每一个代码文件对应的语法树进行特征匹配,通过遍历语法树的每一个分支,与预先制定的逻辑规则相匹配,如果匹配成功,则可以定位到具体的表达式上;
步骤4.检测报告生成:
***将匹配得到的结果首先按照文件进行分类,在每个文件中再按照威胁的类型对结果再分类,对于每个发现的威胁给出具体的代码位置、危害和解决方式;最终,***汇总所有的结果并生成一个整体的报告。
本发明的有益效果是:
本发明提出一种在区块链的以太坊平台上针对智能合约的静态代码审计***与方法,利用下推自动机等技术,实现了在区块链的以太坊平台上针对Solidity语言编写的智能合约的静态代码审计***,能够找出并分析智能合约上存在的安全威胁。本发明具有如下特点:使用下推自动机技术,实现了从代码文件到语法树的转换,用清晰的逻辑层次结构来表示抽象的代码内容。利用静态特征匹配技术,能够随时增加、修改或删除制定的逻辑规则,使***更加灵活可扩展。通过匹配能够检测到智能合约存在的安全问题,降低了应用的安全风险。
附图说明
图1为本发明的***结构示意图。
具体实施方式
下面结合附图和实施例对本发明进行进一步的说明。
本实施例提供一种在区块链的以太坊平台上针对智能合约的静态代码审计***,其结构示意图如图1所示,包括预处理模块、语法树生成模块、静态特征匹配模块和报告生成模块;
预处理模块:用于检测用户输入的合法性,将项目整体复制到临时工作目录,删除Solidity文件中的注释部分;
语法树生成模块:用于对预处理后的文件进行词法分析和语法分析,生成语法树;
静态特征匹配模块:用于将语法树与预先制定的逻辑匹配规则相匹配,检查是否命中,若命中匹配则记录对应的代码信息;
报告生成模块:用于分类并汇总匹配成功的代码信息,生成报告结果文件。
一种在区块链的以太坊平台上针对智能合约的静态代码审计方法,包括以下步骤:
步骤1.***预处理:***对用户的输入进行合法性检测,然后将项目整体复制到临时工作目录中,并将其中的Solidity文件中的注释部分删除,其具体包括以下步骤:
步骤1-1.用户输入待审计的智能合约项目目录或者单个代码文件的路径PATH,***检测首先检测PATH是否合法,如果PATH非法则警告提示,如果PATH合法则进入步骤1-2;
步骤1-2.***定位到PATH所在位置,将整个目录或文件全部复制到临时工作目录WORK中;
步骤1-3.遍历工作目录WORK,找到以sol为后缀名的Solidity代码文件,把文件中的注释部分全部删除;
步骤2.语法树生成:针对每一个Solidity代码文件,首先处理其引用文件,将引用的部分内容复制到当前文件中,然后进行词法分析,把每一个合法的词汇都提取出来,接着对词汇进行再处理操作,将其中的变量和常量封装成对应的结构类型,最后进行语法分析,通过下推自动机等技术将代码表达式转化成语法树的形式;具体包括以下步骤:
步骤2-1.***维护一个待解析文件列表Lista和一个已解析文件列表Listb,最初将所有的Solidity代码文件全部放入Lista中,Listb置空;
步骤2-2.检查Lista中是否有文件,若有则依次将其取出并对其进行步骤2-3的操作,否则进入步骤2-8;
步骤2-3.对于任一Solidity代码文件,***首先检查Solidity代码文件是否在已解析文件列表中,若在则进入步骤2-2,否则进入步骤2-4;
步骤2-4.检查文件是否存在“import”关键词,若存在则确定Solidity代码文件有引用文件,***通过“import”关键词后的路径来定位得到引用文件的路径,将引用关系记录下来,然后针对引用文件进入步骤2-3操作;如果不存在引用文件则进入步骤2-5;
步骤2-5.***利用有限自动机技术,对代码内容进行词法分析:
对于一个字符Ci,下标i为字符在代码内容中的位置,如果它是“(”、“)”、“{”、“}”等界限制词,则将其单独提取出来;
***将提取出来的单词以名称name的形式保存,***在判断过程中同时也通过检测换行符来确定每个单词所在的行号,最终生成单词结构word,它由word的名称namew和行号nw的二元组(namew,nw)表示;
步骤2-6.***对词法分析生成的二元组结构word进行再处理操作:
对于一个二元组wordt,下标t表示第t个二元组,首选判断其单词名称namew是否为Solidity语言的基本类型,如果是则继续判断之后的word结构,使其中的namew值的排列能够满足solidity的变量声明结构,直到wordt-wordt+j无法再构成一个合法的变量声明,j为正整数,然后将wordt-wordt+j-1封装成一个由基本类型typev、限制关键词restrictionv、变量名称namev和行号nv组成的四元组变量var,其表达式为(typev,restrictionv,namev,nv),同时将原来的单词结构wordt替换为var,并删除从wordt+1到wordt+j-1的单词结构;如果wordt中的名称namew为字符串或数字常量,则将其直接封装为一个由类型typec(字符串或数字)、内容contentc和行号nc组成的三元组结构constant,其表达式为(typec,contentc,nc),然后将原wordt替换为constant;对于其他的namew值则保持不变;
步骤2-7.***对生成的word、var和constant结构进行语法分析:
Solidity语言的最外层结构主要为contract(合约)、library(库)和interface(接口),***将其统称为mainBlock;***首先找到“contract”、“library”和“interface”关键词,然后创建相应的类型结构:
对于一个二元组wordt,如果其名称namew为contract、library或interface,则创建mainBlock结构,然后根据后续的word、var和constant结构依次确定其类型typemb、名称namemb和继承关系basemb,直到出现一个wordkk,kk为正整数,其中的名称namew为界符“{”;
然后以界符“{”和“}”为边界,对其中的内容继续解析,在此阶段主要的结构为State Variables(变量表达式)、Functions(函数)、Function Modifiers(函数调节器)、Events(事件)、Struct Types(结构类型)和Enum Types(枚举类型);
***采用下推自动机的技术,根据Solidity语言制定的规约规则将变量、常量和运算、赋值或比较符号规约成变量表达式;
对于函数类型,***将根据Solidity的函数定义规则,依次检测其名称namef、参数paramf、限制词restrictionf和返回值returnf,然后再以界符“{”和“}”为边界,对其中的表达式内容进行解析,解析过程同变量表达式,最后得到表达式集合expListf,并将其添加到函数结构中;如果函数声明后的内容不是界符“{”而是分号“;”,则该函数为抽象函数,函数解析结束;函数解析结束后,将生成的函数结构添加到mainBlock中;
对于函数调节器,***将根据Solidity的函数调节器定义规则,依次检测其名称namem和参数paramm,然后再以界符“{”和“}”为边界,对其中的表达式内容进行解析,解析过程同变量表达式,最后得到表达式集合expListm,然后将其添加到函数调节器结构中;函数调节器解析结束后,将生成的函数调节器结构添加到mainBlock中;
对于事件类型,***将根据Solidity的事件定义规则依次检测其名称namee和参数parame,并将生成的事件结构添加到mainBlock中;
对于结构类型,***将根据Solidity的结构定义规则将依次检测其名称names和其中的变量values,并将生成的结构添加到mainBlock中;
对于枚举结构,***将将根据Solidity的枚举定义规则依次检测其名称nameenum和其中枚举的对象valueenum,并将生成的枚举结构添加到mainBlock中;
通过上述解析操作,***将会生成一个或若干个语法树,此时该代码文件已解析完成,将其放入已解析文件列表Listb中,同时在未解析文件列表Lista中将Solidity代码文件删除,返回步骤2-2;
步骤2-8.所有的代码文件已经全部解析为语法树的形式,***将进入静态特征匹配阶段;
步骤3.静态特征匹配:
***将对每一个代码文件对应的语法树进行特征匹配,通过遍历语法树的每一个分支,与预先制定的逻辑规则相匹配,如果匹配成功,则可以定位到具体的表达式上;
步骤4.检测报告生成:
***将匹配得到的结果首先按照文件进行分类,在每个文件中再按照威胁的类型对结果再分类,对于每个发现的威胁给出具体的代码位置、危害和解决方式;最终,***汇总所有的结果并生成一个整体的报告。
Claims (1)
1.一种在区块链的以太坊平台上针对智能合约的静态代码审计方法,其特征在于,包括以下步骤:
步骤1.***预处理:
***对用户的输入进行合法性检测,然后将项目整体复制到临时工作目录中,并将其中的Solidity文件中的注释部分删除;
步骤1-1.用户输入待审计的智能合约项目目录或者单个代码文件的路径PATH,***检测首先检测PATH是否合法,如果PATH非法则警告提示,如果PATH合法则进入步骤1-2;
步骤1-2.***定位到PATH所在位置,将整个目录或文件全部复制到临时工作目录WORK中;
步骤1-3.遍历工作目录WORK,找到以sol为后缀名的Solidity代码文件,把文件中的注释部分全部删除;
步骤2.语法树生成:
针对每一个Solidity代码文件,首先处理其引用文件,将引用的部分内容复制到当前文件中,然后进行词法分析,把每一个合法的词汇都提取出来,接着对词汇进行再处理操作,将其中的变量和常量封装成对应的结构类型,最后进行语法分析,通过下推自动机等技术将代码表达式转化成语法树的形式;
步骤2-1.***维护一个待解析文件列表Lista和一个已解析文件列表Listb,最初将所有的Solidity代码文件全部放入Lista中,Listb置空;
步骤2-2.检查Lista中是否有文件,若有则依次将其取出并对其进行步骤2-3的操作,否则进入步骤2-8;
步骤2-3.对于任一Solidity代码文件,***首先检查Solidity代码文件是否在已解析文件列表中,若在则进入步骤2-2,否则进入步骤2-4;
步骤2-4.检查文件是否存在“import”关键词,若存在则确定Solidity代码文件有引用文件,***通过“import”关键词后的路径来定位得到引用文件的路径,将引用关系记录下来,然后针对引用文件进入步骤2-3操作;如果不存在引用文件则进入步骤2-5;
步骤2-5.***利用有限自动机技术,对代码内容进行词法分析:
对于一个字符Ci,下标i为字符在代码内容中的位置,如果它是“(”、“)”、“{”、“}”界限制词,则将其单独提取出来;
***将提取出来的单词以名称name的形式保存,***在判断过程中同时也通过检测换行符来确定每个单词所在的行号,最终生成单词结构word,它由word的名称namew和行号nw的二元组(namew,nw)表示;
步骤2-6.***对词法分析生成的二元组结构word进行再处理操作:
对于一个二元组wordt,下标t表示第t个二元组,首选判断其单词名称namew是否为Solidity语言的基本类型,如果是则继续判断之后的word结构,使其中的namew值的排列能够满足solidity的变量声明结构,直到wotdt-wordt+j无法再构成一个合法的变量声明,j为正整数,然后将wotdt-wordt+j-1封装成一个由基本类型typev、限制关键词restrictionv、变量名称namev和行号nv组成的四元组变量var,其表达式为(typev,restrictionv,namev,nv),同时将原来的单词结构wordt替换为var,并删除从wordt+1到wordt+j-1的单词结构;如果wordt中的名称namew为字符串或数字常量,则将其直接封装为一个由类型typec、内容contentc和行号nc组成的三元组结构constant,其表达式为(typec,contentc,nc),然后将原wordt替换为constant;对于其他的namew值则保持不变;
步骤2-7.***对生成的word、var和constant结构进行语法分析:
***首先找到“contract”、“library”和“interface”关键词,然后创建相应的类型结构:
对于一个二元组wordt,如果其名称namew为contract、library或interface,则创建mainBlock结构,然后根据后续的word、var和constant结构依次确定其类型typemb、名称namemb和继承关系basemb,直到出现一个wordkk,kk为正整数,其中的名称namew为界符“{”;
然后以界符“{”和“}”为边界,对其中的内容继续解析,在此阶段主要的结构为StateVariables、Functions、Function Modifiers、Events、Struct Types和Enum Types;
***采用下推自动机的技术,根据Solidity语言制定的规约规则将变量、常量和运算、赋值或比较符号规约成变量表达式;
对于函数类型,***将根据Solidity的函数定义规则,依次检测其名称namef、参数paramf、限制词restrictionf和返回值returnf,然后再以界符“{”和“}”为边界,对其中的表达式内容进行解析,解析过程同变量表达式,最后得到表达式集合expListf,并将其添加到函数结构中;如果函数声明后的内容不是界符“{”而是分号“;”,则该函数为抽象函数,函数解析结束;函数解析结束后,将生成的函数结构添加到mainBlock中;
对于函数调节器,***将根据Solidity的函数调节器定义规则,依次检测其名称namem和参数paramm,然后再以界符“{”和“}”为边界,对其中的表达式内容进行解析,解析过程同变量表达式,最后得到表达式集合expListm,然后将其添加到函数调节器结构中;函数调节器解析结束后,将生成的函数调节器结构添加到mainBlock中;
对于事件类型,***将根据Solidity的事件定义规则依次检测其名称namee和参数parame,并将生成的事件结构添加到mainBlock中;
对于结构类型,***将根据Solidity的结构定义规则将依次检测其名称names和其中的变量values,并将生成的结构添加到mainBlock中;
对于枚举结构,***将将根据Solidity的枚举定义规则依次检测其名称nameenum和其中枚举的对象valueenum,并将生成的枚举结构添加到mainBlock中;
通过上述解析操作,***将会生成一个或若干个语法树,此时该代码文件已解析完成,将其放入已解析文件列表Listb中,同时在未解析文件列表Lista中将Solidity代码文件删除,返回步骤2-2;
步骤2-8.所有的代码文件已经全部解析为语法树的形式,***将进入静态特征匹配阶段;
步骤3.静态特征匹配:
***将对每一个代码文件对应的语法树进行特征匹配,通过遍历语法树的每一个分支,与预先制定的逻辑规则相匹配,如果匹配成功,则可以定位到具体的表达式上;
步骤4.检测报告生成:
***将匹配得到的结果首先按照文件进行分类,在每个文件中再按照威胁的类型对结果再分类,对于每个发现的威胁给出具体的代码位置、危害和解决方式;最终,***汇总所有的结果并生成一个整体的报告。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811404851.7A CN109684838B (zh) | 2018-11-23 | 2018-11-23 | 一种针对以太坊智能合约的静态代码审计***及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811404851.7A CN109684838B (zh) | 2018-11-23 | 2018-11-23 | 一种针对以太坊智能合约的静态代码审计***及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109684838A CN109684838A (zh) | 2019-04-26 |
CN109684838B true CN109684838B (zh) | 2020-03-27 |
Family
ID=66185579
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811404851.7A Active CN109684838B (zh) | 2018-11-23 | 2018-11-23 | 一种针对以太坊智能合约的静态代码审计***及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109684838B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309660A (zh) * | 2019-07-09 | 2019-10-08 | 佛山市伏宸区块链科技有限公司 | 一种智能合约代码的自动化审计***及方法 |
CN110688151B (zh) * | 2019-09-24 | 2022-03-29 | 暨南大学 | 一种面向以太坊Solidity智能合约的安全翻译与解析方法 |
CN110727948B (zh) * | 2019-10-11 | 2021-10-29 | 腾讯科技(深圳)有限公司 | 智能合约审计方法、装置、计算机设备及存储介质 |
CN111125697B (zh) * | 2019-11-14 | 2022-03-04 | 北京理工大学 | 基于缺陷摘要的智能合约缺陷可触发性检测方法及*** |
CN111666216B (zh) * | 2020-06-05 | 2024-01-23 | 中国银行股份有限公司 | 一种智能合约分析方法及装置 |
CN112256271B (zh) * | 2020-10-19 | 2022-11-29 | 中国科学院信息工程研究所 | 一种基于静态分析的区块链智能合约安全检测*** |
CN113190234B (zh) * | 2021-05-21 | 2023-04-07 | 电子科技大学 | 针对区块链智能合约函数签名自动化恢复的方法及*** |
CN113190330B (zh) * | 2021-05-26 | 2022-06-24 | 电子科技大学 | 一种区块链威胁感知***及方法 |
CN117688564B (zh) * | 2024-02-01 | 2024-05-03 | 山东大学 | 一种用于智能合约事件日志的检测方法、装置和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266550A (zh) * | 2007-12-21 | 2008-09-17 | 北京大学 | 一种恶意代码检测方法 |
CN101976319A (zh) * | 2010-11-22 | 2011-02-16 | 张平 | 基于行为特征的BIOS固件Rootkit检测方法 |
CN102799524A (zh) * | 2012-07-03 | 2012-11-28 | 天津大学 | 一种浏览器扩展的缺陷检测方法 |
CN105303109A (zh) * | 2015-09-22 | 2016-02-03 | 电子科技大学 | 一种恶意代码情报检测分析方法及*** |
CN107643984A (zh) * | 2017-10-18 | 2018-01-30 | 百度在线网络技术(北京)有限公司 | 用于输出信息的方法和装置 |
CN108595185A (zh) * | 2018-04-11 | 2018-09-28 | 暨南大学 | 一种将以太坊智能合约转换成超级账本智能合约的方法 |
-
2018
- 2018-11-23 CN CN201811404851.7A patent/CN109684838B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266550A (zh) * | 2007-12-21 | 2008-09-17 | 北京大学 | 一种恶意代码检测方法 |
CN101976319A (zh) * | 2010-11-22 | 2011-02-16 | 张平 | 基于行为特征的BIOS固件Rootkit检测方法 |
CN102799524A (zh) * | 2012-07-03 | 2012-11-28 | 天津大学 | 一种浏览器扩展的缺陷检测方法 |
CN105303109A (zh) * | 2015-09-22 | 2016-02-03 | 电子科技大学 | 一种恶意代码情报检测分析方法及*** |
CN107643984A (zh) * | 2017-10-18 | 2018-01-30 | 百度在线网络技术(北京)有限公司 | 用于输出信息的方法和装置 |
CN108595185A (zh) * | 2018-04-11 | 2018-09-28 | 暨南大学 | 一种将以太坊智能合约转换成超级账本智能合约的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109684838A (zh) | 2019-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109684838B (zh) | 一种针对以太坊智能合约的静态代码审计***及方法 | |
US20220091827A1 (en) | Pruning Engine | |
CN110737899B (zh) | 一种基于机器学习的智能合约安全漏洞检测方法 | |
Schäfer et al. | Mining framework usage changes from instantiation code | |
CN111459799B (zh) | 一种基于Github的软件缺陷检测模型建立、检测方法及*** | |
CN107203468B (zh) | 一种基于ast的软件版本演化对比分析方法 | |
CN106843840B (zh) | 一种基于相似度分析的源代码版本演化注释复用方法 | |
Nichols et al. | Syntax-based improvements to plagiarism detectors and their evaluations | |
Ren et al. | Making smart contract development more secure and easier | |
Solanki et al. | Comparative study of software clone detection techniques | |
Meng et al. | [Retracted] A Deep Learning Approach for a Source Code Detection Model Using Self‐Attention | |
Chen et al. | Clone detection in Matlab Stateflow models | |
Nasirloo et al. | Semantic code clone detection using abstract memory states and program dependency graphs | |
CN117940894A (zh) | 用于检测代码克隆的***和方法 | |
Ren et al. | Scstudio: a secure and efficient integrated development environment for smart contracts | |
CN113885876A (zh) | 一种参数校验方法、装置、存储介质及计算机*** | |
CN110989991B (zh) | 检测应用程序中源代码克隆开源软件的方法及*** | |
CN115391785A (zh) | 一种软件漏洞的风险检测方法、装置以及设备 | |
Yang et al. | Pruning the ast with hunks to speed up tree differencing | |
Nguyen et al. | Using topic model to suggest fine-grained source code changes | |
Karthik et al. | A collaborative method for code clone detection using a deep learning model | |
CN102681830B (zh) | 一种比较程序文本的方法和设备 | |
Ul Ain et al. | A model-driven approach for token based code clone detection techniques-an introduction to UMLCCD | |
Kaur et al. | Review on Software Cloning and Clone Detection | |
US10997056B1 (en) | Generation of explanatory and executable repair examples |
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 |