二进制程序中函数代码形式化结构生成方法、设备及介质技术

技术编号:30529579 阅读:13 留言:0更新日期:2021-10-27 23:19
本发明专利技术提出一种二进制程序中函数代码形式化结构生成方法、设备及介质,该方法以二进制程序中函数代码作为解析基本粒度,基于功能属性分类二进制程序代码,划分二进制代码的地址空间,生成各类功能属性的函数代码集合,并建立描述函数代码属性的分类函数信息表和函数分布表;构建机器指令操作数类型集合,通过形式化函数代码中操作数,生成各类函数代码的形式化结构集合;以分类函数信息表、函数分布表、及函数代码的形式化结构建立函数代码形式化结构矩阵,该矩阵可以在整体和函数两个层次上有效地解析二进制程序中全体函数代码的形式化结构。本发明专利技术实现了对二进制程序中函数代码结构的有效解析,为准确地检测二进制程序的功能属性提供实际支撑。功能属性提供实际支撑。功能属性提供实际支撑。

【技术实现步骤摘要】
二进制程序中函数代码形式化结构生成方法、设备及介质


[0001]本专利技术涉及信息安全领域,尤其涉及一种二进制程序中函数代码形式化结构生成方法、设备及介质。

技术介绍

[0002]当今时代,云计算平台、物联网、移动网络及工业互联网等系统得到快速发展,二进制程序作为各类系统中重要组成分别,其安全性、可靠性及可信性日益重要。伴随信息安全技术的发展,其对抗技术也得到了迅速发展,危害网络和系统安全的有害技术的种类不断增长、所应用的技术不断创新。由于二进制程序由机器指令组成,现有方法难以对其代码结构进行有效的解析,无法有效地对抗信息安全领域中有害技术,从而导致各类系统和平台面临的安全威胁日益严重。在此背景下,二进制程序成为国际上软件安全研究的热点与难点问题。
[0003]总结,当前还没有一个普遍适用的方法,能够解决对二进制程序代码结构进行有效解析的问题。

技术实现思路

[0004]有鉴于此,本专利技术提出了一种二进制程序中函数代码形式化结构生成方法、设备及介质,用于解决难以对二进制程序代码结构进行有效地解析的问题。
[0005]本专利技术的技术方案是这样实现的:本专利技术第一方面,公开一种二进制程序中函数代码形式化结构生成方法,所述方法包括:S1,对二进制程序进行结构解析,识别与度量各函数代码,获取地址空间信息、代码结构信息及函数代码功能属性的度量信息,构建各类不同功能属性的函数代码集合,进行函数代码分类,继续执行步骤S2;S2,以所述代码结构信息、函数代码功能属性的度量信息及函数代码的分类信息为基本数据,生成函数代码的特征信息,构建分类函数信息表与函数分布表,继续执行步骤S3;S3,分类机器指令中操作数,得到各类操作数的形式化数值,用所述形式化数值替换所述函数代码集合中函数代码包含的各类操作数,生成所述函数代码的形式化结构,继续执行步骤S4;S4,根据所述函数分布表与函数代码的形式化结构,构建所述二进制程序中函数代码形式化结构的矩阵表示形式。
[0006]本专利技术通过上述方法,在二进制程序的整体、局部两个层次上,通过全体代码、函数代码两种粒度,实现对二进制程序代码结构的有效解析。
[0007]在以上技术方案的基础上,优选的,步骤S1具体包括:S1

1,从所述二进制程序包含的文件结构描述信息中,提取出描述二进制程序及
其代码结构的有效数据;S1

2,基于所述有效数据,依据程序结构的解析方法,解析出二进制代码的各种地址空间信息,所述地址空间信息包括二进制代码的起始地址、大小、入口点等描述代码存储结构的信息;S1

3,基于所述地址空间信息,遍历所述二进制程序中二进制代码地址空间,识别其中各段函数代码,获得所述各段函数代码的代码结构信息,所述代码结构信息包括函数代码的起始地址、大小、终止地址等描述函数代码存储结构的信息;S1

4,基于所述地址空间信息和代码结构信息,获得所述二进制程序中不同函数代码的功能属性,构建各类不同功能属性的函数代码集合:,其中N
+
为正整数;S1

5,根据P
0 ~ P
n
集合分类函数代码,分类方法为:所述二进制程序中函数代码划分为集合P
0 ~ P
n
,同一集合中函数代码划分为同一种类型,不同集合中函数代码为不同类型,共得到n种类型的函数代码。
[0008]本专利技术通过上述方法,以二进制程序中函数代码作为解析基本粒度,基于功能属性分类二进制程序代码,划分二进制代码的地址空间,生成各类功能属性的函数代码集合。
[0009]在以上技术方案的基础上,优选的,步骤S1

4具体包括:S1
‑4‑
1,基于所述地址空间信息和代码结构信息中描述二进制代码结构的各种具体信息,度量不同函数代码之间关系,获得各段函数代码的各种功能属性的度量信息,所述度量信息包括函数代码的存储区间、相似性及度量值等描述函数代码的各类功能特性的信息;S1
‑4‑
2,根据所述函数代码功能属性的度量信息,标志所述二进制程序中各段函数代码的功能属性;S1
‑4‑
3,根据所述函数代码的功能属性,把二进制程序中各段函数代码分别放入函数代码集合P
0 ~ P
n
,所述函数代码集合P
0 ~ P
n
满足如下条件:对于任意函数代码集合P
i
,0≤i≤n,都存在功能属性ξ
i
,成立:P
i
中函数代码都具有功能属性ξ
i
;对于任意两个不同的函数代码集合P
i ,P
k
,0≤i,k≤n,都成立 P
i
∩P
k =
ꢀØ
;对于所述二进制代码地址空间中任意函数代码ω,都存在唯一的函数代码集合P
j
,0≤j≤n,成立:ω∈P
j
;若所述二进制程序中全部代码表示为U,则有:U=P0∪P1∪

∪P
n

[0010]本专利技术通过上述方法,获得所述二进制程序中函数代码的功能属性,根据功能属性划分所述二进制代码地址空间中函数代码,从而生成各类功能属性的函数代码集合。
[0011]在以上技术方案的基础上,优选的,步骤S2具体包括:S2

1,以所述代码结构信息、函数代码功能属性的度量信息及函数代码的分类信息为基本数据,生成函数代码的特征信息,所述函数代码的特征信息包括函数代码的起始地址、地址区间、功能属性、分类类型及其他描述函数代码特征的数据;
S2

2,构建分类函数信息表T
0 ~T
n
:把所述集合P
0 ~ P
n
中各段函数代码的所述特征信息作为表目录项,分别放入表T
0 ~ T
n
,并依据函数代码的起始地址的升序或降序,排列表T
0 ~ T
n
中各目录项;S2

3,构建函数分布表F:将所述分类函数信息表T
0 ~ T
n
中目录项放入表F中,依据函数代码的起始地址的升序或降序,排列其中各目录项。
[0012]本专利技术通过上述方法,建立描述函数代码属性的分类函数信息表和函数分布表,以此为基础,本专利技术技术方案的后续步骤可以在整体和函数两个层次上有效地解析所述二进制程序中代码结构,准确地描述所述函数代码的分布规律及相互关系等特性。
[0013]在以上技术方案的基础上,优选的,步骤S3具体包括:S3

1,根据机器指令功能属性分类机器指令中操作数,构建操作数类型集合D;S3

2,统一规范处理所述函数代码集合P
0 ~ P
n
,生成所述函数代码的形式化结构集合P0' ~ P
n<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种二进制程序中函数代码形式化结构生成方法,其特征在于,所述二进制程序中函数代码形式化结构生成方法包括以下步骤:S1,对二进制程序进行结构解析,识别与度量各函数代码,获取地址空间信息、代码结构信息及函数代码功能属性的度量信息,构建各类不同功能属性的函数代码集合,进行函数代码分类,继续执行步骤S2;S2,以所述代码结构信息、函数代码功能属性的度量信息及函数代码的分类信息为基本数据,生成函数代码的特征信息,构建分类函数信息表与函数分布表,继续执行步骤S3;S3,分类机器指令中操作数,获得各类操作数的形式化数值,用所述形式化数值替换所述各函数代码集合中函数代码包含的各类操作数,生成所述函数代码的形式化结构,继续执行步骤S4;S4,根据所述函数分布表与函数代码的形式化结构,构建所述二进制程序中函数代码形式化结构的矩阵表示形式。2.如权利要求1所述的一种二进制程序中函数代码形式化结构生成方法,其特征在于,所述步骤S1具体包括:S1

1,从所述二进制程序包含的文件结构描述信息中,提取出描述二进制程序及其代码结构的有效数据;S1

2,基于所述有效数据,依据程序结构的解析方法,解析出二进制代码的各种地址空间信息,所述地址空间信息包括但不限于二进制代码的起始地址、大小、入口点,用于描述代码存储结构的信息;S1

3,基于所述地址空间信息,遍历所述二进制程序中二进制代码地址空间,识别其中各段函数代码,获得所述各段函数代码的代码结构信息,所述代码结构信息包括但不限于函数代码的起始地址、大小、终止地址,用于描述函数代码存储结构的信息;S1

4,基于所述地址空间信息和代码结构信息,获得所述二进制程序中不同函数代码的功能属性,构建各类不同功能属性的函数代码集合:,其中N
+
为正整数;S1

5,根据P
0 ~ P
n
集合分类函数代码,分类方法为:所述二进制程序中函数代码划分为集合P
0 ~ P
n
,同一集合中函数代码划分为同一种类型,不同集合中函数代码为不同类型,共得到n种类型的函数代码。3.如权利要求2所述的一种二进制程序中函数代码形式化结构生成方法,其特征在于,所述步骤S1

4具体包括:S1
‑4‑
1,基于所述地址空间信息和代码结构信息中描述二进制代码结构的各种具体信息,度量不同函数代码之间关系,获得各段函数代码的各种功能属性的度量信息,所述度量信息包括但不限于函数代码的存储区间、相似性及度量值,用于描述函数代码的各类功能特性的信息;S1
‑4‑
2,根据所述函数代码功能属性的度量信息,标志所述二进制程序中各段函数代码的功能属性;S1
‑4‑
3,根据所述函数代码的功能属性,把二进制程序中各段函数代码分别放入函数代码集合P
0 ~ P
n
,所述函数代码集合P
0 ~ P
n
满足如下条件:
对于任意函数代码集合P
i
,0≤i≤n,都存在功能属性ξ
i
,成立:P
i
中函数代码都具有功能属性ξ
i
;对于任意两个不同的函数代码集合P
i ,P
k
,0≤i,k≤n,都成立 P
i
∩P
k =
ꢀØ
;对于所述二进制代码地址空间中任意函数代码ω,都存在唯一的函数代码集合P
j
,0≤j≤n,成立:ω∈P
j
;若所述二进制程序中全部代码表示为U,则有:U=P0∪P1∪

∪P
n
。4.如权利要求3所述的一种二进制程序中函数代码形式化结构生成方法,其特征在于,所述步骤S2具体包括:S2

1,以所述代码结构信息、函数代码功能属性的度量信息及函数代码的分类信息为基本数据,生成函数代码的特征信息,所述函数代码的特征信息包括但不限于函数代码的起始地址、地址区间、功能属性及分类类型,用于描述函数代码特征;S2

2,构建分类函数信息表T
0 ~T
n
:把所述集合P
0 ~ P
n
中各段函数代码的所述特征信息作为表目录项,分别放入表T
0 ~ T
n
,并依据函数代码的起始地址的升序或降序,排列表T
0 ~ T
n
中各目录项;S2

3,构建函数分布表F:将所述分类函数信息表T
0 ~ T
n
中目录项放入表F中,依据函数代码的起始地址的升序或降序,排列其中各目录项。5.如权利要求2所述的一种二进制程序中函数代码形式化结构生成方法,其特征在于,所述步骤S3具体包括:S3

1,根据机器指令功能属性分类机器指令中操作数,构建操作数类型集合D;S3

2,统一规范处理所述函数代码集合P
0 ~ P
n
,生成所述函数代码的形式化结构集合P0' ~ P
n
',并建立描述它们之间双射关系的函数代码映射表W。6.如权利要求5所述的一种二进制程序中函数代码形式化结构生成方法,其特征在于,所述步骤S3

1具体包括:构建操作数类型集合D,所述操作数类型集合D满足如下条件:所述操作数类型集合D中元素的数据类型为单字节的字符类型,包括但不限于整数、字母;对于任意机器指令中操作数x,都存在唯一元素t∈D,成立:t是x的操作数类型;操作数类型集合D中元素称为函数代码中操作数的形式化数值。7.如权利要求5所述的一种二进制程序中函数代码形式化结构生成方法,其特征在于,所述步骤S3

2具体包括:S3
‑2‑
1,基于所述操作数类型集合D,将所述函数代码集合P
0 ~ P
n
中函数代码包含的各类操作数分别替换为其...

【专利技术属性】
技术研发人员:郭昌盛黄河许团聂永春汪文晓
申请(专利权)人:武汉江民网安科技有限公司
类型:发明
国别省市:

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1