[发明专利]基于机器学习的静态程序插桩检测方法及装置有效

专利信息
申请号: 202211357366.5 申请日: 2022-11-01
公开(公告)号: CN115576840B 公开(公告)日: 2023-04-18
发明(设计)人: 刘昱玮;余媛萍;贾相堃;苏璞睿 申请(专利权)人: 中国科学院软件研究所
主分类号: G06F11/36 分类号: G06F11/36;G06N20/00;G06N3/0464;G06N3/08
代理公司: 北京君尚知识产权代理有限公司 11200 代理人: 陈艳
地址: 100190 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 机器 学习 静态 程序 检测 方法 装置
【权利要求书】:

1.一种基于机器学习的程序插桩检测方法,其特征在于,所述方法包括:

获取目标程序,并对所述目标程序进行插桩,得到一个二进制文件;

将所述二进制文件转换为一中间语言表示;

基于所述中间语言表示,计算所述二进制文件中各基本块的特征向量,并将所述特征向量送入机器学习模型,以识别每一基本块的实际插桩结果;其中,所述基于所述中间语言表示,计算所述二进制文件中各基本块的特征向量,包括:

基于所述中间语言,选取每一基本块中的特征;所述特征包括:指令操作码、指令操作数和指令序列;其中,所述指令序列为所述指令操作码按照所述基本块中指令出现顺序进行排序的序列;

根据操作码编码表,获取所述指令操作码的序号,并基于所述序号,得到所述指令操作码的特征向量;其中,所述操作码编码表基于训练集中各指令操作码的出现频率和字母顺序构建;

根据所述指令操作数的操作数长度,获取所述指令操作数的特征向量;

根据基本块中指令操作码编码的向量,计算所述指令序列的特征向量;

基于所述指令操作码的特征向量、所述指令操作数的特征向量与所述指令序列的特征向量,得到所述二进制文件中各基本块的特征向量;

基于所述目标程序和所述中间语言表示,生成代码属性图,并对所述代码属性图使用图神经网络学习,将学习后的节点特征向量进行线性变换,以根据各节点的得分判断每一基本块的预期插桩结果;其中,所述代码属性图中的节点为基本块,所述代码属性图中的边基于基本块间的控制流和数据流依赖关系构建;

根据每一基本块的所述实际插桩结果与所述预期插桩结果,得到所述目标程序的插桩检测结果。

2.如权利要求1所述的方法,其特征在于,所述中间语言表示包括:LLVM IR中间语言表示。

3.如权利要求1所述的方法,其特征在于,所述操作码包括:alloca、store、load和icmp。

4.如权利要求1所述的方法,其特征在于,所述操作数包括:立即数和变量。

5.如权利要求1所述的方法,其特征在于,所述基于所述目标程序和所述中间语言,生成所述二进制文件的代码属性图,包括:

基于所述二进制文件和所述中间语言,生成所述二进制文件的抽象语法树、控制流图和程序依赖图;其中,所述控制流图中基本块信息包括该基本块的出度与入度、指令数量和是否包含插桩代码,所述程序依赖图中信息包括:基本块的数据依赖和控制依赖信息;

将抽象语法树,控制流图和程序依赖图合并为代码属性图。

6.如权利要求1所述的方法,其特征在于,所述根据每一基本块的所述实际插桩结果与所述预期插桩结果,得到所述目标程序的插桩检测结果,包括:

逐个基本块比较实际插桩结果与预期插桩结果;

如果每一基本块的比较结果都是相符,则所述插桩检测结果为插桩正确;

如果至少一个基本块的比较结果是不相符,则所述目标程序的插桩检测结果为插桩错误。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202211357366.5/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top