安全公司报告
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210284682.8 (22)申请日 2022.03.22 (71)申请人 南京大学 地址 210023 江苏省南京市栖霞区仙林大 道163号 (72)发明人 张天 潘敏学 陈佳一  (74)专利代理 机构 南京知识律师事务所 32 207 专利代理师 张苏沛 (51)Int.Cl. G06F 8/41(2018.01) G06F 8/30(2018.01) G06F 40/30(2020.01) (54)发明名称 基于c和c++软件的依赖结构的文件特征表 示方法 (57)摘要 本发明公开一种基于c和c++软件的依赖结 构的文件特征表示方法, 该方法包括文件依赖图 提取、 随机游走采样和模型训练三个步骤: 使用 clang和llvm分析技术, 构造c和c++软件的层 次 化的文件依赖图; 使用随机游走策略, 在文件依 赖图上采集节点序列集合; 构造图表示学习模 型, 并基于节点序列集合对模型进行训练, 从而 获得文件的特征表示。 本方法基于依赖分析技术 和图表示学习技术, 可以充分提取局部图结构信 息, 并生成文 件的特征向量。 权利要求书2页 说明书6页 附图2页 CN 114610321 A 2022.06.10 CN 114610321 A 1.一种基于c和c++软件的依赖结构的文件特征表示方法, 其特征在于, 所述方法包含 如下步骤: 步骤1), 使用clang和l lvm分析技术, 构造c和c++软件的层次化的文件依赖图; 步骤2), 使用有偏的随机游走策略, 在文件依赖图上进行节点序列采样, 得到文件节点 序列集合; 步骤3), 构造图表示学习模型, 并基于节点序列集合对模型进行训练, 从而得到文件的 特征表示。 2.根据权利要求1所述的基于c和c++软件的依赖结构的文件特征表示方法, 其特征在 于, 所述步骤1)包 含以下子步骤: 步骤11), 使用clang分析代码中的#i nclude语句, 并提取头文件依赖; 步骤12), 使用clang将c和c+ +软件中的源文件编译为 llvm的中间表示文件; 步骤13), 使用llvm分析步骤12)获取的中间表示文件, 提取源文件包含的符号定义与 外部符号使用; 步骤14), 根据步骤13)中的外部符号使用, 定位到定义了对应外部符号的其他源文件, 并以此构造源文件依赖; 步骤15), 根据步骤11)和步骤15)分别提取的头文件依赖和源文件依赖, 构造层次化的 文件依赖图, 用于步骤2)的输入。 3.根据权利要求1所述的基于c和c++软件的依赖结构的文件特征表示方法, 其特征在 于, 所述步骤2)包 含以下子步骤: 步骤21), 指定随机游走的步长 ι、 每个节点上的采样次数η 以及控制节点选择概率的超 参数p、 q; 步骤22), 取文件依赖图中的一个节点作为 起始节点; 步骤23), 计算当前节点的直接邻居中各个节点的迁移概率, 并随机选择一个节点作为 下一个访问的节点; 步骤24), 重复步骤23), 直到节点序列长度等于 ι, 得到一条节点序列; 步骤25), 重复步骤2 2)—步骤24), 直到图中的每 个节点上都经 过采样; 步骤26), 重复步骤2 2)—步骤25), 直到图中的每 个节点的采样次数达 到 η; 步骤27), 得到一组节点序列集 合, 用于步骤3)的输入。 4.根据权利要求1所述的基于c和c++软件的依赖结构的文件特征表示方法, 其特征在 于, 所述步骤3)包 含以下子步骤: 步骤31), 构造图表示学习模型, 并设置训练轮数γ与节点上 下文宽度ω; 步骤32), 从步骤2)中输出的节点序列集 合中取一条节点序列; 步骤33), 取节点序列中的一个节点作为中心节点, 获得左右长度为ω范围内的非本节 点作为该节点的上 下文; 步骤34), 根据节点的上下文, 使用层次化softmax算法计算上下文中的各节点与中心 节点的共现概 率, 然后计算目标函数并使用反向传播 算法优化模型; 步骤35), 重复步骤3 3)—步骤34), 直到该节点序列中的所有节点经 过训练; 步骤36), 重复步骤32)—步骤34), 直到所有节点序列都经 过训练; 步骤37), 重复步骤32)—步骤3 6), 直到训练轮数满足γ。权 利 要 求 书 1/2 页 2 CN 114610321 A 25.根据权利要求3所述的基于c和c++软件的依赖结构的文件特征表示方法, 其特征在 于, 所述步骤23)的迁移概 率计算公式为: 其中E是依赖图的边集; Z是标准化系数; πtx是未标准化的迁移概率, 定义为πtx=α(v, x)*ω(t,x), 由于文件依赖图为无权图, 有 πtx=αpq(v,x), 所述αpq(v,x)定义如下: 其中t是随机游走当前所在节点, v是上一次访问的节点, 调整超参数p和q可以控制随 机游走的倾向性, p越大, 游走过程更倾向于向外部探索, q越大, 则探索范围越趋近于初始 节点的小范围局部图。 6.根据权利要求4所述的基于c和c++软件的依赖结构的文件特征表示方法, 其特征在 于, 所述步骤31)的图表 示学习模 型的输入层为节 点的one‑hot编码, 定义文件依赖图为G= (V,E), 某文件vi的one‑hot编码vi为第i位为1, 其余位是0的|V|维向量, 隐藏层为矩阵Z∈Rd ×|V|, 由|V|个d维向量构成, 其输出结果表示为φ(vi)=Zvi, 输出层是使用层次化softmax算 法计算得到的节点对之间的共现概 率。 7.根据权利要求4所述的基于c和c++软件的依赖结构的文件特征表示方法, 其特征在 于, 所述步骤33)的节点上下文表示为NS(vi,ω)={vi‑w,…vi+w}\vi, 其中vi是中心节点, ω 是窗口两侧的宽度。 8.根据权利要求4所述的基于c和c++软件的依赖结构的文件特征表示方法, 其特征在 于, 所述步骤34)的目标函数, 基于节点间的独立 概率分布假设, 定义如下: 其中由于传统softmax算法在计算基数时需要在所有节点上进行运算, 在大型图上的 计算成本昂贵, 该步骤中使用使用层次化softmax算法进行优化, 具体包括: 根据节点在上 下文中出现的频率使用哈夫曼编码转换将节点分配到二叉树中, 使得出现频率更高的节点 具有更短的根路径, 假设到节点vj的路径表示 其中b0为根节点, b「log|V|]为 节点vj, 有 其中二叉树上的每一个节点可以视为一个二分类器, 表示为 其中ψ(bk)∈Rd是节点bk的d维向量表示, 层次化softmax的计算复杂度为O(log|V|), 传统 softmax的计算复杂度是O(log|V|), 在计算复杂度上有了明显的优化, 计算出目标函数的 结果后, 使用随机梯度下降与反向传播 算法对模型进行优化, 优化 参数是θ ={φ, ψ}。权 利 要 求 书 2/2 页 3 CN 114610321 A 3

.PDF文档 专利 基于c和c++软件的依赖结构的文件特征表示方法

文档预览
中文文档 11 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共11页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 基于c和c++软件的依赖结构的文件特征表示方法 第 1 页 专利 基于c和c++软件的依赖结构的文件特征表示方法 第 2 页 专利 基于c和c++软件的依赖结构的文件特征表示方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 17:48:36上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。