基于图卷积神经网络的C+抽象信息恢复方法.pdf

上传人:zhu****_FC 文档编号:10676898 上传时间:2021-08-08 格式:PDF 页数:11 大小:760.57KB
收藏 版权申诉 举报 下载
基于图卷积神经网络的C+抽象信息恢复方法.pdf_第1页
第1页 / 共11页
基于图卷积神经网络的C+抽象信息恢复方法.pdf_第2页
第2页 / 共11页
基于图卷积神经网络的C+抽象信息恢复方法.pdf_第3页
第3页 / 共11页
文档描述:

《基于图卷积神经网络的C+抽象信息恢复方法.pdf》由会员分享,可在线阅读,更多相关《基于图卷积神经网络的C+抽象信息恢复方法.pdf(11页完成版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 201911403402.5 (22)申请日 2019.12.31 (71)申请人 中山大学 地址 510275 广东省广州市海珠区新港西 路135号 (72)发明人 金舒原王剑儒 (74)专利代理机构 深圳市创富知识产权代理有 限公司 44367 代理人 吴族平 (51)Int.Cl. G06F 8/20(2018.01) G06F 8/41(2018.01) G06N 3/04(2006.01) G06N 3/08(2006.01) (54)发明名称 一种基于图卷积神经网络的。

2、C+抽象信息恢 复方法 (57)摘要 本发明公开了一种基于图卷积神经网络的C +抽象信息恢复方法, 所述方法包括: 首先使用 二进制分析工具提取出基本事实, 推理使用; 对 于确定性的规则, 直接推理得出结论; 对于步骤B 不能确定的结论, 使用图卷积网络处理得出结 论; 对于用图卷积网络处理得出的结论, 再额外 设置一致性检查规则, 若不能通过检查, 则需要 再从步骤C中取出第二个结论再进行尝试, 直到 可以通过推理得出一致性检查为止。 本发明有益 效果在于, 图卷积神经网络(GCN)可应用于图的 顶点的属性预测, 把假设推理的规则抽象成图的 顶点和边, 就可以使用图卷积神经网络的属性预 测。

3、代替Prolog的假设推理, 从而达到更高的速度 和准确率。 权利要求书1页 说明书6页 附图3页 CN 111176623 A 2020.05.19 CN 111176623 A 1.一种基于图卷积神经网络的C+抽象信息恢复方法, 其特征在于, 所述方法包括: A首先使用二进制分析工具提取出基本事实, 推理使用; B对于确定性的规则, 直接推理得出结论; C对于步骤B不能确定的结论, 使用图卷积网络处理得出结论; D对于用图卷积网络处理得出的结论, 再额外设置一致性检查规则, 若不能通过检查, 则需要再从步骤C中取出第二个结论再进行尝试, 直到可以通过推理得出一致性检查为止。 2.根据权利要。

4、求1所述的基于图卷积神经网络的C+抽象信息恢复方法, 其特征在于, 所述二进制分析工具为pharos。 3.根据权利要求1所述的基于图卷积神经网络的C+抽象信息恢复方法, 其特征在于, 所述推理的工具为Prolog。 4.根据权利要求1所述的基于图卷积神经网络的C+抽象信息恢复方法, 其特征在于, 所述步骤C中还包括: C1首先使用编译工具编译用于训练的二进制代码, 得到程序数据库文件; C2解析步骤C1获得的程序数据库文件, 得到程序中包含的所有C+类, 包括类的成员变 量, 成员函数, 和/或类的虚函数表的偏移量; C3以步骤C2得到的C+类型信息作为标签, 对图卷积网络进行训练。 5.根。

5、据权利要求4所述的基于图卷积神经网络的C+抽象信息恢复方法, 其特征在于, 所述编译工具为Microsoft C+Compiler。 权利要求书 1/1 页 2 CN 111176623 A 2 一种基于图卷积神经网络的C+抽象信息恢复方法 技术领域 0001 本发明涉及网络安全技术领域, 特别涉及二进制可执行文件的逆向工程技术, 具 体的说, 一种基于图卷积神经网络的C+抽象信息恢复方法。 背景技术 0002 软件逆向工程是研究闭源软件行为的重要方式。 通过逆向工程, 我们可以恢复出 闭源软件中的一些算法、 协议和应用程序接口, 进而了解一个软件内部是否包含恶意代码 或者是否存在漏洞。 00。

6、03 C+是目前主流的面向对象编程语言之一, 同时具有能与C语言媲美的运行效率和 面向对象编程语言的高开发效率, 许多注重性能的软件都使用C+作为主要开发语言。 C+ 继承自C, 因此也存在类似C语言的一些内存安全问题, 比如常见的缓冲区出, 空指针解引用 和Use-After-Free等。 要分析由C+编译成的二进制可执行文件中Use-After-Free漏洞, 则 要先知道C+对象是如何被构造的; 要分析由C+编译成的二进制可执行文件是否包含恶意 代码, 也要先通过C+抽象信息(即C+的类、 对象、 类的方法、 成员变量、 类之间的继承关系 等)来分析程序逻辑。 因此, 恢复出C+的抽象信。

7、息在二进制可执行文件的逆向工程中具有 十分重要的意义。 0004 然而, 在二进制可执行文件的逆向工程中, 由C+编译成的二进制可执行文件的分 析难度比由C编译成的二进制可执行文件大得多, 因为由C+编译成的二进制可执行文件在 运行过程中并不需要知道C+的抽象信息, 所以这些信息在编译的过程中大部分都被丢弃 了。 如何准确地恢复出这些C+的抽象信息, 成为二进制可执行文件的逆向工程中的一个热 点问题。 0005 软件逆向工程是研究闭源软件行为的重要方式。 通过逆向工程, 我们可以恢复出 闭源软件中的一些算法、 协议和应用程序接口(API), 进而可以了解一个软件内部是否包含 恶意代码, 或者漏。

8、洞(比如常见的栈溢出、 堆溢出和Use-After-Free等)。 在法律允许的情况 下, 我们还可以通过逆向工程恢复出闭源软件中的一些算法、 协议和应用程序接口(API)。 增加一句话或者2句话说明对于C+编写的软件恢复的重要意义。 0006 C+是目前主流的面向对象编程语言之一, 许多注重性能的软件都使用C+作为主 要开发语言。 在二进制可执行文件的逆向工程中, 由C+编译成的二进制文件的分析难度通 常比由C编译成的二进制文件大得多, 这是因为C+引入了类与对象等面向对象(OO)编程的 概念, 而这些信息在编译的过程中大部分都丢失了。 要正确地理解由C+编译成的二进制文 件的行为, 就要先。

9、从二进制文件中恢复出C+的类、 对象等面向对象编程相关的属性信息/ 题目是C+对象恢复,这里说的是属性恢复, 需要保持一致, 你需要确认到底想做什么, 再修 改题目和这里, 令它们保持一致。 0007 对XXX的恢复技术中, 目前现有的技术的方法主要包括XXXX。 这些方法主要是通过 分析C+虚函数表和程序的控制流来实现(来实现什么需补充)。 但是这些技术都要通过分 析C+虚函数表得到一些基本信息, 所以对于没有虚函数的类, 分析起来比较困难。 较新的 说明书 1/6 页 3 CN 111176623 A 3 方法使用了符号分析的方法得到一些二进制代码内的一些C+基本事实, 再基于Prolog。

10、规 则进行推理分析, 最终从而恢复出对象的具体属性。 符号分析可以较准确地得到C+中对象 的创建、 修改、 维护等操作, 但是在Prolog推理分析中, 对于含义比较模糊的属性, Prolog会 先作出一个假设推理, 再对结论进行验证。 这个过程需要大量的计算, 并且准确率不高。 / 这段主要是将已有的技术分成几类, 开头先概括, 最后说明你想做的方法主要是在哪个方 面, 跟专利的题目相一致。 目前已有的方法主要包括: 分析C+的运行时类型识别(RTTI)信 息、 分析C+虚函数表和程序的控制流等。 0008 1、 分析C+的RTTI信息 0009 C+的对象具有多态性, 其基类的指针就可以指。

11、向任何派生类的对象。 为了确定基 类的指针到底指向了哪个派生类的对象, 需要使用运行时类型识别(RTTI)功能。 C+的RTTI 功能主要服务于两个关键字: typeid和dynamic_cast。 为了使用RTTI, 编译器会在二进制代 码中加入特定的数据结构, 里面包含了C+类名及其继承关系, 因此, 直接分析二进制代码 中的RTTI结构体就可以恢复出。 但是, C+的RTTI功能经常被错误地使用, 并且需要使用 typeid和dynamic_cast这两个关键字的场合也不多, 所以现代应用程序基本上默认不使用 RTTI, 基于RTTI的分析方法不能很好发挥作用。 0010 2、 分析C+。

12、虚函数表和程序的控制流 0011 此方法通过分析虚函数表跟踪对象指针、 分析程序控制流、 C+异常处理函数来得 到C+抽象信息。 但是这个方法是基于分析C+虚函数表的, 而非多态类(即没有虚函数的 类)没有虚函数表, 因此无法分析非多态类的继承关系。 0012 3、 基于Prolog规则进行推理分析 0013 基于Prolog规则进行推理分析综合了以上两种方法的优点, 并使用了简单的静态 符号执行来分析, 得到二进制代码内的一些C+基本事实, 再基于Prolog规则进行推理分 析, 最终恢复出C+抽象信息。 静态符号执行分析可以较准确地得到C+中对象的创建、 修 改、 维护等操作, 同时Pro。

13、log推理的方法更具有全局性, 可以通过跟踪程序数据流来推理得 到非多态类的信息。 0014 在Prolog推理分析中, 对于含义比较模糊的抽象信息, 则先作出一个假设推理, 再 对结论进行验证。 如果验证不通过, 则要进行回溯。 回溯的原理是添加更多的规则以排除不 合理的解, 这个过程的计算复杂度非常高, 对内存消耗也非常大, 并且准确率不高。 发明内容 0015 本发明的目的在于解决C+抽象信息恢复过程中含义比较模糊的抽象信息恢复的 速度、 准确率上的问题。 图卷积神经网络(GCN)可应用于图的顶点的属性预测, 把假设推理 的规则抽象成图的顶点和边, 就可以使用图卷积神经网络的属性预测代替。

14、Prolog的假设推 理, 从而达到更高的速度和准确率。 0016 为了实现上述目的, 本发明采用如下技术方案: 0017 一种基于图卷积神经网络的C+抽象信息恢复方法, 所述方法包括: 0018 A首先使用二进制分析工具提取出基本事实, 推理使用; 0019 B对于确定性的规则, 直接推理得出结论; 0020 C对于步骤B不能确定的结论, 使用图卷积网络处理得出结论; 说明书 2/6 页 4 CN 111176623 A 4 0021 D对于用图卷积网络处理得出的结论, 再额外设置一致性检查规则, 若不能通过检 查, 则需要再从步骤C中取出第二个结论再进行尝试, 直到可以通过推理得出一致性检。

15、查为 止。 0022 优选地, 所述二进制分析工具为pharos。 0023 优选地, 所述推理的工具为Prolog。 0024 优选地, 所述步骤C中还包括: 0025 C1首先使用编译工具编译用于训练的二进制代码, 得到程序数据库文件; 0026 C2解析步骤C1获得的程序数据库文件, 得到程序中包含的所有C+类, 包括类的成 员变量, 成员函数, 和/或类的虚函数表的偏移量; 0027 C3以步骤C2得到的C+类型信息作为标签, 对图卷积网络进行训练。 0028 优选地, 所述编译工具为Microsoft C+Compiler。 0029 相较于基于prolog的分析方法, 本发明提出的。

16、技术方案, 具有以下优势: 0030 第一, 使用图卷积网络进行预测意味着不需要太多的专业领域知识, 因为图卷积 网络在训练过程中可以自动学习规则; 0031 第二, 相对于Prolog的假设推理算法, 图卷积网络的计算复杂度更低, 且图卷积网 络的实现可以充分利用现代计算机硬件的并行计算特性, 达到更快的速度; 0032 第三, Prolog的假设推理算法每次都进行随机猜测, 而图卷积网络可以根据训练 数据的规律进行预测, 准确性更高。 附图说明 0033 图1为本发明的抽象信息恢复的流程示意图; 0034 图2为本发明步骤C2中待处理的源代码示意图; 0035 图3为本发明获得的汇编代码示。

17、意图; 0036 图4为本发明读取PDB文件得到的结果示意图; 0037 图5为通过本发明恢复后的图卷积网络由结点和有向边组成的结果示意图。 具体实施方式 0038 以下将结合附图对本发明作进一步的描述, 需要说明的是, 以下实施例以本技术 方案为前提, 给出了详细的实施方式和具体的操作过程, 但本发明的保护范围并不限于本 实施例。 0039 如图1所示, 本发明为一种基于图卷积神经网络的C+抽象信息恢复方法, 所述方 法包括: 0040 A首先使用二进制分析工具提取出基本事实, 推理使用; 0041 B对于确定性的规则, 直接推理得出结论; 0042 C对于步骤B不能确定的结论, 使用图卷积。

18、网络处理得出结论; 0043 D对于用图卷积网络处理得出的结论, 再额外设置一致性检查规则, 若不能通过检 查, 则需要再从步骤C中取出第二个结论再进行尝试, 直到可以通过推理得出一致性检查为 止。 0044 优选地, 所述二进制分析工具为pharos。 说明书 3/6 页 5 CN 111176623 A 5 0045 优选地, 所述推理的工具为Prolog。 0046 优选地, 所述步骤C中还包括: 0047 C1首先使用编译工具编译用于训练的二进制代码, 得到程序数据库文件; 0048 C2解析步骤C1获得的程序数据库文件, 得到程序中包含的所有C+类, 包括类的成 员变量, 成员函数,。

19、 和/或类的虚函数表的偏移量; 0049 C3以步骤C2得到的C+类型信息作为标签, 对图卷积网络进行训练。 0050 优选地, 所述编译工具为Microsoft C+Compiler。 0051 实施例 0052 步骤A, 首先使用二进制分析工具(pharos)分析提取出基本事实, 供Prolog推理使 用。 0053 基本事实具有以下类型。 0054 0055 0056 基本事实示例: 说明书 4/6 页 6 CN 111176623 A 6 0057 0058 步骤B), 对于确定性的规则, 直接使用Prolog推理分析得出结论。 0059 步骤C), 对于步骤B不能确定的结论(例如, 。

20、有时候会出现一个method运用步骤B中 的规则并不能确定它是一个类的构造函数, 也不能确定它不是类的构造函数), 则运用图卷 积网络进行预测。 0060 步骤C1, 首先使用编译工具(Microsoft C+Compiler)编译用于训练的二进制代 码, 得到程序数据库(Program Data Base, PDB)文件。 0061 步骤C2, 解析程序数据库(PDB)文件, 得到二进制文件中OO类型信息, 包括C+类和 它的成员变量, 成员函数, 和/或类的虚函数表的偏移量(如果存在的话)等。 0062 PDB文件格式并未公开, 但可以使用微软提供的cvdump工具来读取其中的信息。 图 。

21、2为待处理的源代码。 0063 编译源代码得到二进制可执行文件, 再使用反汇编工具分析, 得到的汇编代码 (CMFCApplication1Dlg:OnBnClickedOk()部分)如图3所示。 0064 使用命令 “cvdump-s” 读取PDB文件得到的结果, 如图4所示。 0065 步骤C3, 以步骤C2得到的C+类型信息作为标签, 对图卷积网络进行训练。 其中, 标 签类别如下表所示: 说明书 5/6 页 7 CN 111176623 A 7 0066 0067 0068 图卷积网络由结点和有向边组成。 如下图5所示, 结点共有两类, 圆形表示基本事 实的类型(比如类的方法、 类的对。

22、象、 偏移量等), 矩形表示的是基本事实。 基本事实在 Prolog语言的表示形式为Fact(a,b,c), 若类型与基本事实存在关系, 则用一条有向边将它 们连接起来。 考虑到Fact(a,b,c)中a, b, c的顺序, 需要给每条有向边加上权值, 第n个参数 的权值为n。 0069 给类型贴上标签, 训练好图卷积网络后, 就可以用于预测了。 0070 步骤D, 因为图卷积网络处理得出的结论并不完全准确, 所以还需要再额外设置一 致性检查规则进行检查。 若不能通过检查, 则回到传统的Prolog假设推理得出结论, 并再次 进行一致性检查, 直到通过检查为止。 0071 对于本领域的技术人员来说, 可以根据以上的技术方案和构思, 给出各种相应的 改变和变形, 而所有的这些改变和变形, 都应该包括在本发明权利要求的保护范围之内。 说明书 6/6 页 8 CN 111176623 A 8 图1 图2 说明书附图 1/3 页 9 CN 111176623 A 9 图3 说明书附图 2/3 页 10 CN 111176623 A 10 图4 图5 说明书附图 3/3 页 11 CN 111176623 A 11 。

展开阅读全文
内容关键字: 基于 图卷 神经网络 抽象 信息 恢复 方法
关于本文
本文标题:基于图卷积神经网络的C+抽象信息恢复方法.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/10676898.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1