-
公开(公告)号:CN108829438B
公开(公告)日:2020-04-07
申请号:CN201810727406.8
申请日:2018-07-05
Applicant: 南京大学
Abstract: 本发明基于深度学习与程序合成的C/C++程序缺陷自动修复方法,输入带有缺陷的C/C++程序、错误定位信息、程序需要满足的规约以及满足相同规约正确程序集,通过学习正确程序中的书写结构,建立一个正确书写结构模型;根据错误定位信息,将错误点之前的代码结构作为模型的输入,预测错误点的书写结构,扩展成修复候选项集,并组织成选择表达式的形式;使用程序合成方法,将带有选择表达式的程序和该程序需要满足的规约转化为逻辑表达式,使用约束求解器,在设定的时间内进行求解;根据每个选择表达式的选项,输出最终的C/C++代码,得到修复后程序。本方法在多项式的时间复杂度内修复C/C++程序常见缺陷,保证修复后程序正确性。
-
公开(公告)号:CN106055318B
公开(公告)日:2019-04-12
申请号:CN201610343482.X
申请日:2016-05-23
Applicant: 南京大学
Abstract: 本发明公开了一种智能家居物联网系统验证与修复的方法和装置。本发明通过智能家居设备描述信息和IFTTT规则构建混成自动机模型,然后通过对混成自动机模型的路径分析,找出可能到达系统不安全的路径,然后将这些可达路径编码成SMT约束进行求解,如果存在可达路径对应的SMT约束可解,则根据可解的SMT约束对IFTTT规则This部分中实数型条件值进行修正。修正的方法是通过将可解的SMT约束中的对应的IFTTT规则This部分中实数型条件值参数化后并将整个SMT约束取反,然后消去量词后进行求解,将可解值替换This部分中实数型条件值。
-
公开(公告)号:CN108804332A
公开(公告)日:2018-11-13
申请号:CN201810613423.9
申请日:2018-06-14
Applicant: 南京大学
IPC: G06F11/36
CPC classification number: G06F11/366
Abstract: 本发明公开一种基于机器学习的C程序内存泄漏智能化检测方法,分为三个阶段:模型构建阶段,根据已有的内存泄漏构建两个数据集,分别从两个数据中提取内存泄漏特征,将内存泄漏特征输入机器学习的分类器进行训练,交叉验证,修改分类器类型及参数,选取分类准确率最高的作为分类器模型来检测内存泄漏。程序分析与特征获取阶段,对源程序进行预分析,获取所有的内存分配点o,然后进行指针分析,构建从o开始的VFG(ValueFlowGraph),提取VFG中每条路径对应的内存泄漏特征。缺陷检测与报告阶段,将程序分析与特征获取阶段的内存泄漏特征输入到模型构建阶段的分类器模型中进行检测,判断从o开始的路径中是否存在内存泄漏,得到内存泄漏报告。
-
公开(公告)号:CN105512285B
公开(公告)日:2018-11-06
申请号:CN201510892012.4
申请日:2015-12-07
Applicant: 南京大学
IPC: G06F17/30
Abstract: 本发明是一种基于机器学习的自适应网络爬虫方法,由于目前的网络爬虫程序的编写需要软件开发人员通过查询繁琐的页面代码并研究规则,没有自适应的程序自动引导爬虫进行工作。同时,在电子商务领域也并没有这种触及。因此要解决的技术问题是通过机器学习技术对大量数据进行挖掘,从而定位到某一未知网页上与该内容相关的信息。使用机器学习与数据挖掘方法来解决这一问题,主要的技术步骤为:获取数据、特征提取、异构数据归一化、训练数据构建、自适应训练、学习方法验证以及自适应模式生成,用于对所爬取网站的页面代码提取位置特征并进行自适应训练,对电子商务领域的自适应网络爬虫的研究起到了一定的作用。
-
公开(公告)号:CN105809039B
公开(公告)日:2018-07-27
申请号:CN201610122116.1
申请日:2016-03-04
Applicant: 南京大学
Abstract: 本发明是种缓冲区溢出漏洞自动修复方法,基于缓冲区溢出模型,自动修复程序中已知的缓冲区溢出漏洞。首先读取并解析已经通过确认过的缓冲区溢出信息文件,该文件包含缓冲区溢出漏洞的源文件名、溢出漏洞代码所在的行号、溢出漏洞代码所使用的API,根据缓冲区溢出漏洞的位置信息得到缓冲区溢出漏洞修复的位置,根据缓冲区溢出漏洞代码所使用的API,以及缓冲区溢出模型得到相应的缓冲区溢出漏洞修复策略;定位到缓冲区溢出漏洞代码的位置,提取函数调用的参数信息;根据提取出的函数调用的参数信息和使用的API,构造出修复代码插桩到源代码中完成修复。
-
公开(公告)号:CN108170466A
公开(公告)日:2018-06-15
申请号:CN201711394256.5
申请日:2017-12-21
Applicant: 南京大学
Abstract: 本发明公开一种基于程序合成的C/C++程序缺陷自动修复方法,输入带有缺陷的C/C++程序,根据常见的程序缺陷和缺陷程序的类型,设置重写规则,重写规则包括缺陷模式和修复选项。之后将缺陷模式与缺陷程序的语法树进行匹配。若不存在任何匹配的重写规则,则表明无法修复该程序的缺陷。若存在匹配的重写规则,则将匹配的语法树子树替换为选择表达式。之后使用程序合成方法,根据该程序需要满足的规约,得到每个选择表达式的选项。程序合成方法将带有选择表达式的程序和该程序需要满足的规约转化为逻辑表达式,之后使用约束求解器,在设定的时间内进行求解,代入每个选择表达式的选项,将语法树输出为C/C++代码,得到修复后的程序。
-
公开(公告)号:CN107766253A
公开(公告)日:2018-03-06
申请号:CN201711114228.3
申请日:2017-11-13
Applicant: 南京大学
IPC: G06F11/36
CPC classification number: G06F11/3684 , G06F11/3688
Abstract: 本发明公开了一种基于模型变更的自动维护测试脚本的方法,其特征在于,包括:步骤1、建模,使用建模工具抽取出移动应用的状态转移关系,根据状态转移关系创建事件序列模型EMS(Event Sequence Model,ESM)来描述应用的行为,事件序列模型ESM描述了应用的状态信息以及每一个界面上的控件信息;其中状态是界面,其每一个界面的名称是唯一确定的,如果界面的名称改变了,则原来的界面被删除了,新增了一个新的界面,且原界面中的控件转移到了这个新增的界面中;步骤2、如果当前为应用的初始版本,自动生成测试脚本:步骤3、对于非初始版本的应用,直接通过维护上一版本的测试脚本获得。
-
公开(公告)号:CN105224736B
公开(公告)日:2018-02-16
申请号:CN201510606520.1
申请日:2015-09-22
Applicant: 南京大学
IPC: G06F17/50
Abstract: 本发明公开了一种基于约束求解的智能电网系统鲁棒性验证方法。本发明通过模拟输电线路失效的情形,分析每一种输电线路失效的情形下电网是否安全。分析电网是否安全的过程步骤如下:首先构建SAT约束编码,然后由SAT求解器求解,根据求解得到的解构建SMT约束编码,最后通过SMT求解器求解。假如SMT求解器不可解,则重新通过SAT求解器求解一组新的解构建SMT约束编码,直到SAT求解器也不可解。当SAT求解器不可解时,表示该种输电线路失效的情形下电网不安全,当SMT求解器可解,表示该种输电线路失效的情形下,电网安全。本发明能够快速对大规模的电网系统进行完备的鲁棒性验证,有效节约时间和人力成本。
-
公开(公告)号:CN107180193A
公开(公告)日:2017-09-19
申请号:CN201710480725.9
申请日:2017-06-22
Applicant: 南京大学
IPC: G06F21/56
Abstract: 本发明公开了一种将程序代码转换成数据约束的方法和装置。该方法首先将程序代码转换成中间指令集,然后将中间指令集进行细化拆分,细化拆分时将原变量定义指令中涉及的复杂类型的变量细化拆分成多个简单类型的变量,然后将简单类型的变量再进一步细化成简单类型的地址指针变量和简单类型的指针指向变量,最后再将相应的变量定义指令细化拆分成针对简单类型的地址指针变量和简单类型的指针指向变量的内存分配指令和初始化数据存储指令,然后提取细化拆分后的中间指令集中的存取指令、算术指令和比较指令作为数据约束。
-
公开(公告)号:CN106844339A
公开(公告)日:2017-06-13
申请号:CN201710012347.1
申请日:2017-01-09
Applicant: 南京大学
Abstract: 本发明公开了一种基于词向量的多平台控件对应方法,包括如下步骤:寻找与控件、UI设计、页面布局文件相关的英文文档组成词向量的训练集;使用stanford工具对英文文档进行分词得到单词序列;对得到的单词序列使用word2vec进行词向量训练,得到每个单词的向量表示;找到平台网站上的控件描述文本;将这些描述文本分词之后训练得到词向量,进而转化为句向量;计算每两个向量之间的距离,选出相似控件。本发明根据官方的空间描述找到的多平台控件对应关系可以减少同一平台上版本更替所需要修改的代码,并且会在跨平台代码转化中的UI部分起到相当大的推荐作用。还有,本发明的思路会对其他的工程设计尤其是API对应有着借鉴意义。
-
-
-
-
-
-
-
-
-