CN112989339B - 一种基于机器学习的gcc编译器恶意代码入侵检测方法 - Google Patents

一种基于机器学习的gcc编译器恶意代码入侵检测方法 Download PDF

Info

Publication number
CN112989339B
CN112989339B CN202110205444.9A CN202110205444A CN112989339B CN 112989339 B CN112989339 B CN 112989339B CN 202110205444 A CN202110205444 A CN 202110205444A CN 112989339 B CN112989339 B CN 112989339B
Authority
CN
China
Prior art keywords
sample
neural network
network model
compiler
gray level
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110205444.9A
Other languages
English (en)
Other versions
CN112989339A (zh
Inventor
黑新宏
姚怡蕾
王一川
朱磊
姬文江
杜延宁
宋昕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xian University of Technology
Original Assignee
Xian University of Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xian University of Technology filed Critical Xian University of Technology
Priority to CN202110205444.9A priority Critical patent/CN112989339B/zh
Publication of CN112989339A publication Critical patent/CN112989339A/zh
Application granted granted Critical
Publication of CN112989339B publication Critical patent/CN112989339B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/40Analysis of texture
    • G06T7/41Analysis of texture based on statistical description of texture
    • G06T7/45Analysis of texture based on statistical description of texture using co-occurrence matrix computation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Abstract

本发明公开了一种基于机器学习的GCC编译器恶意代码入侵检测方法,具体包括如下步骤:步骤1,下载c语言源代码数据集;步骤2,将步骤1得到的源代码数据集转化为二进制文件;步骤3,对步骤2得到的样本集进行预处理;步骤4,搭建BP神经网络模型并对模型进行训练,将步骤4得到的特征值输入到BP神经网络模型中进行训练,得到最优的神经网络模型并输出。步骤5,对步骤4输出的神经网络模型进行预测分类并根据测试结果通过步骤4对模型进行调参训练。本发明通过自动化提取GCC编译器的软件指纹特征,检测编译器中恶意代码的指纹特征,从而检测一个GCC编译器是否有被恶意代码入侵。

Description

一种基于机器学习的GCC编译器恶意代码入侵检测方法
技术领域
本发明属于信息处理技术领域,涉及一种基于机器学习的GCC编译器恶 意代码入侵检测方法。
背景技术
近年来,越来越多的攻击者开始将目光投向软件供应链。软件 供应链是指软件从软件生产商到用户下载使用的整个过程,即软件的 源码编写、源码编译、软件发布、软件下载和软件更新过程。软件供 应链攻击是指攻击者利用软件供应链上各个环节存在的安全漏洞,在 软件的开发、交付、使用过程中劫持和篡改,并针对供应链上的信任关系而不进行传统软件安全检查问题,沿着供应链向后渗透,从而实 现对目标网络的渗透和攻击。传统的软件攻击主要是攻击人员针对已 经开发的软件本身的漏洞进行恶意代码植入。从统计数据上来看,攻 击者对软件供应链的攻击行为已经远远超过了对传统的软件攻击。目 前能够实现自动化分析并检测软件供应链是否被污染的工作很少,而 频繁发生的软件供应链攻击行为已经对个人、企业乃至国家带来了严重的隐私泄露和财产安全等问题,在当今复杂的互联网背景下,对软 件供应链的安全检测与预防已经成为网络安全工作一个不可忽视的 研究方向。
编译器作为源码编译过程不可或缺的一部分,一旦开发人员的编 译器被攻击人员植入恶意代码,之后由这款编译器编译的所有软件都 会被影响,这些软件被用户下载后可能会对用户的隐私和财产造成严 重的威胁,而目前人们对编译器的安全问题关注较少,但是编译器在 软件开发过程中占有很重要的地位,所以,编译器的安全预防也应该 渐渐进入人们的视野。
发明内容
本发明的目的是提供一种基于机器学习的GCC编译器恶意代码入侵检测 方法,该方法通过自动化提取GCC编译器的软件指纹特征,检测编译器中恶 意代码的指纹特征,从而检测一个GCC编译器是否有被恶意代码入侵。
本发明所采用的技术方案是,一种基于机器学习的GCC编译器恶意代码 入侵检测方法,具体包括如下步骤:
步骤1,下载c语言源代码数据集,记为样本A;
步骤2,将样本A经过A版本GCC编译器转化为二进制文件,命名为样 本一;将样本A经过B版本GCC编译器转化为二进制文件,命名为样本二;
步骤3,对步骤2得到的样本集进行预处理;
步骤4,搭建BP神经网络模型并对模型进行训练,得到最优的BP神经 网络模型,记为model A;
步骤5,对步骤4输出的神经网络模型model A进行测试。
本发明的特点还在于:
步骤3的具体过程为:
步骤3.1,分别将步骤2得到的样本一和样本二转化为灰度图,并将样本 一转化后得到的灰度图命名为样本三,将样本二转化后得到的灰度图命名为 样本四;
步骤3.2,对步骤3.1得到的样本三和样本四中的灰度图基于灰度共生 矩阵纹理特征提取方法进行纹理特征提取,得到角二阶矩ASM、对比度Con、 相关性Cor、熵Ent、相异性Dis五个特征值,并将通过样本三得到的五个 特征值进行存储,命名为样本五,将通过样本四得到的五个特征值进行存储, 命名为样本六。
步骤3.2的具体过程为:
步骤3.2.1,对步骤3.1获得的最高灰度级数为M的所有灰度图像进行 降级处理,如果M>a,将M级的灰度图降级为a级,0<M≦256;
步骤3.2.2,从步骤3.2.1得到的灰度图中提取出a*a的灰度共生矩阵;
步骤3.2.3,对步骤3.2.2得到的a*a级灰度共生矩阵分别通过如下公 式(1)~(5)计算角二阶矩ASM、对比度Con、相关性Cor、熵Ent、相异 性Dis五个特征值:
在公式(1)~(5)中,a为灰度共生矩阵的大小,f(i,j)为灰度共生 矩阵里第i行第j列的值;μx表示行的均值,μy表示列的均值,σx表示行的 标准差,σy表示列的标准差;
步骤3.2.4,将从样本三中灰度图计算出的角二阶矩ASM、对比度Con、 相关性Cor、熵Ent、相异性Dis五个特征值进行存储,得到样本五;将从 样本四中灰度图计算出的角二阶矩ASM、对比度Con、相关性Cor、熵Ent、 相异性Dis五个特征值进行存储,得到样本六。
步骤4的具体过程为:
步骤4.1,搭建BP神经网络模型,该模型包括输入层、隐藏层及输出层, 其中输入层包括五个神经元,隐藏层神经元个数在训练过程中根据训练结果 调整,输出层包括两个神经元;
步骤4.2,设定如下公式(6)中的交叉熵损失函数作为损失函数:
其中,n是训练集样本数,y是真实的标签,a是神经网络的输出,x是 输入样本。
步骤4.3,将步骤3.2.4得到的样本五和样本六融合后打乱,并按照8:2 的比例分为训练集和测试集,并将训练集命名为样本七、将测试集命名为样 本八;将样本七输入到步骤4.1搭建的BP神经网络模型中进行训练,经过 若干次迭代,直到步骤4.2中的损失函数达到最小,训练结果稳定不变时, 得到最优的神经网络模型,命名为model A。
步骤5的具体过程为:采用步骤4中的样本八对步骤4得到的最优的神 经网络模型model A进行测试,即用model A对样本八中的包含的样本一和 样本二进行分类,当分类的准确率小于80%时,则继续重复步骤4.3对BP 神经网络模型进行调参训练,直至测试集测试的准确率大于等于80%为止。
本发明的有益效果是,本发明一种基于机器学习的GCC编译器恶意代码 入侵检测方法,针对被特定编译器编译后的二进制代码(*.o文件)进行静 态检测,避免了直接运行源码而产生的危害,借助机器学习识别编译器的指 纹特征,可以及时检测编译器是否有被恶意代码入侵,从攻击人员对软件供应链安全里源码编译环节的攻击行为进行有效预防,具有很强的参考性和实 用性。
附图说明
图1是本发明一种基于机器学习的GCC编译器恶意代码入侵检测方法系 统架构图;
图2是本发明一种基于机器学习的GCC编译器恶意代码入侵检测方法中 BP神经网络结构图;
图3(a)、(b)分别是本发明一种基于机器学习的GCC编译器恶意代 码入侵检测方法中将编译器编译得到的二进制代码转化的灰度图。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明一种基于机器学习的GCC编译器恶意代码入侵检测方法,GCC编 译器的编译过程可以分为:预处理、编译、汇编和链接四个阶段。其中,第 一个阶段预处理阶段主要包括头文件展开、删除注释、条件编译、宏定义的 展开等过程,在该阶段GCC编译器生成*.i文件;在第二个阶段编译阶段是对第一个阶段产生的*.i文件进行语法检查、将高级语言转变为汇编语言, 在该阶段GCC编译器生成*.s文件;在第三个阶段汇编阶段是指将第二个阶段产生的汇编语言代码转变成目标机器指令,在该阶段中GCC编译器生成*.o 文件;在第四个阶段链接阶段将外部函数的代码添加到可执行文件中,在该 阶段生成*.exe文件。由以上编译过程可以看出GCC编译器的编译结果与GCC 编译器本身自带的库文件、自身的处理程序、所处的计算机环境等因素有很 大的关系,所以不同版本的GCC编译器在各个阶段所产生的文件会有所区别。 基于这个思想,当某一个GCC编译器被植入恶意代码后,经过该编译器编译得到的各个阶段的文件也会把恶意代码的指纹特征记录下来,通过对比该编 译器与同一个版本的正常编译器编译得到的二进制文件可以对该编译器进 行恶意代码入侵检测,对被恶意代码入侵的GCC编译器与同一版本的GCC正 常编译器经过上述5个处理步骤最终得到最优模型model A,model A可以 通过对一个特定的GCC编译器编译得到的二进制文件进行检测,如果判断出 该二进制文本属于被恶意代码入侵的编译器编译得到的二进制文件这个类别,则可以判断被测的GCC编译器被植入了恶意代码,否则没有被植入恶意代码。由于二进制文件(*.o文件)是源码经过了编译器预处理、编译、汇编 过程得到的文件,没有经过链接阶段,避免了直接运行源码可能带来的危害, 所以测试该文件可以很好的抓取GCC编译器的指纹特征。本发明基于以上分 析提出利用机器学习自动对源码样本集使用不同版本的GCC编译器编译后得 到的二进制文件(*.o文件)进行二分类,通过该方法及时对使用的GCC编 译器进行检测,可以及时发现该编译器是否有被植入恶意代码。
如图1所示,具体包括如下步骤:
步骤1,下载c语言源代码数据集,记为样本A;
步骤2,将样本A经过A版本GCC编译器转化为二进制文件,(*.o文 件),命名为样本一;将样本A经过B版本GCC编译器转化为二进制文件(*.o 文件),命名为样本二;
步骤3,对步骤2得到的样本集进行预处理;
步骤3.1,分别将步骤2得到的样本一和样本二转化为灰度图,并将样 本一转化后得到的灰度图命名为样本三,将样本二转化后得到的灰度图命名 为样本四;
本发明通过B2M算法(将二进制文件(*.o文件)每8位为一个单位进 行读取,固定行宽后可以得到一个二维数组,此数组可视化为一个灰度图像, 该数组里的每个元素范围为0-255,正好对应灰度图像中的一个像素点), 将步骤2得到的二进制代码(*.o文件)转化为灰度图像,将该图像存储为 无压缩的JPG图像文件。因为样本一与样本二里二进制文件大小的不同,所 产生的灰度图像大小也会有所不同,而灰度图的宽度设置会影响二进制文件的内在结构,为了保存二进制样本最优的特征和后面对灰度图纹理特征提取 的质量,需要根据二进制文件的大小设置灰度图的宽度与高度;
步骤3.2,对步骤3.1得到的样本三和样本四中的灰度图通过灰度共生 矩阵进行纹理特征提取,得到角二阶矩ASM、对比度Con、相关性Cor、熵Ent、相异性Dis五个特征值,并将通过样本三得到的五个特征值进行存储, 命名为样本五,将通过样本四得到的五个特征值进行存储,命名为样本六; 灰度共生矩阵(Gray-Level Co-occurrence Matrix,GLCM)是一种通过研 究灰度空间相关特性来描述图像纹理的方法,可以反应图像灰度关于方向、相邻间隔、变化幅度的综合信息,通过统计灰度图像里灰度为i的像素点和 在某一固定方向θ(0度,45度,90度,135度)上距离i像素点的距离为 d的另一个灰度为j的像素点出现的概率可以得到一个大小为M*M(M是灰度 图像的最高灰度级数)灰度共生矩阵(GLCM)。
步骤3.2的具体过程为:
步骤3.2.1,对步骤3.1获得的最高灰度级数为M(0<M<256)的所有灰 度图像进行降级处理,如果M>a,将M级的灰度图降级为a级;
步骤3.2.2,从步骤3.2.1得到的灰度图提取出a*a的灰度共生矩阵;
步骤3.2.3,对步骤3.2.2得到的a*a级灰度共生矩阵分别通过如下公 式(1)~(5)计算角二阶矩ASM(Angular second moment,ASM)、对比度 (Contrast,Con)、相关性(Correlation,Cor)、熵(Entropy,Ent)、相异性 (Dissimilarity,Dis)五个特征值:
在公式(1)~(5)中,a为灰度共生矩阵的大小,f(i,j)为灰度共生 矩阵里第i行第j列的值;μx表示行的均值,μy表示列的均值,σx表示行的 标准差,σy表示列的标准差;
步骤3.2.4,将从样本三中灰度图计算出的角二阶矩ASM、对比度Con、 相关性Cor、熵Ent、相异性Dis五个特征值进行存储,得到样本五;将从 样本四中灰度图计算出的角二阶矩ASM、对比度Con、相关性Cor、熵Ent、 相异性Dis五个特征值进行存储,得到样本六。
由二进制文件转为的灰度图像的规模为h*w,h是灰度图像的高度,w 是灰度图像的宽度,因为灰度图像的灰度级数是M,所以得到的灰度共生矩 阵大小为M*M,为了降低算法复杂度,需要将灰度图的灰度级数降为a(a<M)。 灰度共生矩阵算法过程主要有三类操作,从将灰度级数为M的灰度图降级为 a级、从降级后的灰度图中计算出灰度共生矩阵和从灰度共生矩阵中计算出 特征向量。对灰度图降级的时间复杂度为O(hw),计算出灰度共生矩阵的时间 复杂度为O(a2),从灰度共生矩阵计算出特征向量的时间为O(a2),所以使用 灰度共生矩阵提取灰度图纹理特征算法的时间复杂度为O(hw+2a2),所以灰 度共生矩阵提取灰度图纹理特征算法的时间复杂度为O(hw+2a2)。
步骤4,搭建BP神经网络模型并对模型进行训练,将步骤4得到的样本 五和样本六输入到BP神经网络模型中进行训练,得到最优的神经网络模型 并输出。
步骤4的具体过程为:
步骤4.1,搭建BP神经网络模型,如图2所示,该模型包括输入层、隐 藏层及输出层,其中因为步骤4对每个样本提取出5个特征值,所以输入层 共有5个神经元(图2中x1~x5表示5个神经元),隐藏层的神经元个数根 据训练结果不断调整,输出层共有两个神经元。
步骤4.2,设定如下公式(6)中的交叉熵损失函数(CrossEntropy Loss) 作为损失函数:
其中,n是训练集样本数,y是真实的标签,a是神经网络的输出;
步骤4.3,将步骤3得到的样本五和样本六融合后打乱,并按照8:2的 比例分为训练集和测试集,并将训练集命名为样本七、将测试集命名为样本 八;将样本七输入到步骤4.1搭建的BP神经网络模型(如图2所示的模型) 中进行训练,通过调整参数及若干次迭代后当损失函数值达到最小,训练结果达到理想值时得到一个最优模型,记为model A。
步骤5,对步骤4.3输出的神经网络模型model A进行测试。
步骤5的具体过程为:用步骤4中的样本八对步骤4得到的最优的神经 网络模型model A进行测试,即用model A对样本八中的包含的样本一和样 本二进行分类,当分类的准确率小于80%时,则继续重复步骤4.3对BP神经 网络模型进行调参训练,直至测试集测试的准确率大于等于80%为止。
将通过一个被植入恶意代码的GCC编译器与同版本正常编译器得到的二 进制文本(*.o文本)进行步骤2~4操作后,可以得到一个分类模型model A,通过该模型model A可以测试同一个版本下的GCC编译器是否被植入恶意代 码,该方法通过判断经某一特定版本的GCC编译器编译得到的二进制文件由 哪一个GCC编译器编译得到的,从而判断出该编译器是否又被植入恶意代码。
实施例
步骤1,本发明在SARD(Software Assurance Reference Dataset)里 下载了502个C语言源码数据集,即样本A;
步骤2,将下载好的c语言源码样本集(样本A)经过GCC8.1.0版本和 GCC8.3.1版本编译器通过命令“gcc–c*.c–o*.o”分别编译成二进制 代码文件(*.o文件),得到样本一(GCC8.1.0版本编译器编译得到的二进 制文件)和样本二(GCC8.3.1版本编译器编译得到的二进制文件),样本一 和样本二分别包含502个二进制文件(*.o文件);
步骤3,对步骤2得到的样本集进行预处理:
步骤3.1,通过B2M算法分别将步骤1得到的样本一与样本二转化为宽 度为32高度不确定的灰度JPG图像文件,分别对应得到样本三(GCC8.1.0 版本编译器)和样本四(GCC8.3.1版本编译器),样本三和样本四分别包含 502张灰度图像。得到的灰度图像如图3所示,图3(a)是GCC8.1.0版本 编译器得到的灰度图像,图3(b)是GCC8.3.1版本编译器得到的灰度图像,总共得到1004张灰度图像。
步骤3.2,对步骤3.1得到的灰度图像基于GLCM纹理特征提取方法进行 纹理特征提取,基于GLCM纹理特征提取方法的具体步骤如下:
步骤3.2.1,从步骤3.1得到的每张灰度图像提取GLCM,首先将灰度图 像降级为a(a=16)级(步骤3.1得到的灰度图像为M级,0<M≦256),再计 算水平方向(θ为0度)、距离d为1的GLCM,最终得到一个16*16的GLCM。
步骤3.2.2,基于步骤3.2.1得到的GLCM通过公式(1)-(5)计算出 角二阶矩ASM、对比度Con、相关性Cor、熵Ent、相异性Dis五个特征值:
将样本三(GCC8.1.0版本编译器)和样本四(GCC8.3.1版本编译器) 里的灰度图像计算出的特征值分别存储,分别对应得到样本五(GCC8.1.0版本编译器)和样本六(GCC8.3.1版本编译器)。
步骤4,搭建BP神经网络模型并对模型训练,模型结构如图2所示,该 模型共由三层组成,输入层、隐藏层、输出层,其中因为步骤3对每个样本 提取出5个特征值,所以输入层共有5个神经元,隐藏层的神经元个数根据 模型训练结果不断调整后为11个神经元时有良好的训练结果,输出层共有 两个神经元。本实施例中采用通过交叉熵损失函数(CrossEntropy Loss)作为损失函数,将步骤4得到的样本五与 样本六融合打乱后按照8:2的比率分为训练集(样本七)与测试集(样本 八),其中训练集(样本七)包含803个样本,测试集(样本八)包含201 个样本,将训练集(样本七)输入图2所示的模型进行训练,根据前向传播 得到预测值,通过跟真实结果进行比较,得到损失值,接着根据反向传播, 更新权值,经过来回不断的迭代,直到损失值达到最小,训练结果与测试结 果达到理想值后就得到一个最优模型model A。本实施例通过调整学习率(learning rate=0.0001)、隐藏层神经元为11,迭代200000次后得到一个最优模型modelA,本实施例中损失函数(Train loss)达到0.216,训练 准确度为99.13%后基本不变即得到一个最优模型model A。
步骤5,用步骤4得到的测试集(样本八)对步骤4得到的模型model A 测试,最终测试准确度达到99%,通过步骤4得到的模型model A可以对 一个c语言源码经过特定版本的编译器编译后的二进制文件(*.o文件) 进行检测,判断该c语言源码是由GCC8.1.0版本与GCC8.3.1版本编译器 哪个版本的编译器编译出来的,基于这个思想,假设步骤4得到的模型是由两个相同版本的GCC编译器(其中一个是被植入恶意代码的,另一个是 正常的)训练出的(虽然是同一版本,但是被植入恶意代码之后的编译器与未植入恶意代码的编译器就会变成两个不同版本的编译器,即相当于本 发明中的GCC8.1.0版本编译器和GCC8.3.1版本编译器),则通过步骤5 得到的这个最优模型model A可以判断出相同版本下的GCC编译器编译得 到的二进制文件(*.o文件)是由哪一个编译器编译的(被植入恶意代码 的还是正常的GCC编译器),从而可以判断一个编译器是否有被恶意代码 入侵。

Claims (5)

1.一种基于机器学习的GCC编译器恶意代码入侵检测方法,其特征在于:具体包括如下步骤:
步骤1,下载c语言源代码数据集,记为样本A;
步骤2,将样本A经过A版本GCC编译器转化为二进制文件,命名为样本一;将样本A经过B版本GCC编译器转化为二进制文件,命名为样本二;
步骤3,对步骤2得到的样本集进行预处理;
步骤4,搭建BP神经网络模型并对模型进行训练,得到最优的BP神经网络模型,记为modelA;
步骤5,对步骤4输出的神经网络模型modelA进行测试。
2.根据权利要求1所述的一种基于机器学习的GCC编译器恶意代码入侵检测方法,其特征在于:所述步骤3的具体过程为:
步骤3.1,分别将步骤2得到的样本一和样本二转化为灰度图,并将样本一转化后得到的灰度图命名为样本三,将样本二转化后得到的灰度图命名为样本四;
步骤3.2,对步骤3.1得到的样本三和样本四中的灰度图基于灰度共生矩阵纹理特征提取方法进行纹理特征提取,得到角二阶矩ASM、对比度Con、相关性Cor、熵Ent、相异性Dis五个特征值,并将通过样本三得到的五个特征值进行存储,命名为样本五,将通过样本四得到的五个特征值进行存储,命名为样本六。
3.根据权利要求2所述的一种基于机器学习的GCC编译器恶意代码入侵检测方法,其特征在于:所述步骤3.2的具体过程为:
步骤3.2.1,对步骤3.1获得的最高灰度级数为M的所有灰度图像进行降级处理,如果M>a,将M级的灰度图降级为a级,0<M≦256;
步骤3.2.2,从步骤3.2.1得到的灰度图中提取出a*a的灰度共生矩阵;
步骤3.2.3,对步骤3.2.2得到的a*a级灰度共生矩阵分别通过如下公式(1)~(5)计算角二阶矩ASM、对比度Con、相关性Cor、熵Ent、相异性Dis五个特征值:
Figure FDA0004054632430000021
Figure FDA0004054632430000022
Figure FDA0004054632430000023
Figure FDA0004054632430000024
Figure FDA0004054632430000025
在公式(1)~(5)中,a为灰度共生矩阵的大小,f(i,j)为灰度共生矩阵里第i行第j列的值;μx表示行的均值,μy表示列的均值,σx表示行的标准差,σy表示列的标准差;
步骤3.2.4,将从样本三中灰度图计算出的角二阶矩ASM、对比度Con、相关性Cor、熵Ent、相异性Dis五个特征值进行存储,得到样本五;将从样本四中灰度图计算出的角二阶矩ASM、对比度Con、相关性Cor、熵Ent、相异性Dis五个特征值进行存储,得到样本六。
4.根据权利要求2所述的一种基于机器学习的GCC编译器恶意代码入侵检测方法,其特征在于:所述步骤4的具体过程为:
步骤4.1,搭建BP神经网络模型,该模型包括输入层、隐藏层及输出层,其中输入层包括五个神经元,隐藏层神经元个数在训练过程中根据训练结果调整,输出层包括两个神经元;
步骤4.2,设定如下公式(6)中的交叉熵损失函数作为损失函数:
Figure FDA0004054632430000031
其中,n是训练集样本数,y是真实的标签,a是神经网络的输出,x是输入样本;
步骤4.3,将步骤3.2.4得到的样本五和样本六融合后打乱,并按照8:2的比例分为训练集和测试集,并将训练集命名为样本七、将测试集命名为样本八;将样本七输入到步骤4.1搭建的BP神经网络模型中进行训练,经过若干次迭代,直到步骤4.2中的损失函数达到最小,训练结果稳定不变时,得到最优的神经网络模型,命名为model A。
5.根据权利要求4所述的一种基于机器学习的GCC编译器恶意代码入侵检测方法,其特征在于:所述步骤5的具体过程为:采用步骤4中的样本八对步骤4得到的最优的神经网络模型modelA进行测试,即用modelA对样本八中包含的样本五和样本六进行分类,当分类的准确率小于80%时,则继续重复步骤4.3对BP神经网络模型进行调参训练,直至测试集测试的准确度大于等于80%为止。
CN202110205444.9A 2021-02-24 2021-02-24 一种基于机器学习的gcc编译器恶意代码入侵检测方法 Active CN112989339B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110205444.9A CN112989339B (zh) 2021-02-24 2021-02-24 一种基于机器学习的gcc编译器恶意代码入侵检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110205444.9A CN112989339B (zh) 2021-02-24 2021-02-24 一种基于机器学习的gcc编译器恶意代码入侵检测方法

Publications (2)

Publication Number Publication Date
CN112989339A CN112989339A (zh) 2021-06-18
CN112989339B true CN112989339B (zh) 2023-05-02

Family

ID=76350046

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110205444.9A Active CN112989339B (zh) 2021-02-24 2021-02-24 一种基于机器学习的gcc编译器恶意代码入侵检测方法

Country Status (1)

Country Link
CN (1) CN112989339B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114861178B (zh) * 2022-04-25 2024-03-29 北京计算机技术及应用研究所 一种基于改进b2m算法的恶意代码检测引擎设计方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090129609A (ko) * 2008-06-13 2009-12-17 주식회사 안철수연구소 컴파일러 구분에 의한 악성코드 진단장치 및 방법
CN102012862A (zh) * 2010-11-09 2011-04-13 北京神舟航天软件技术有限公司 基于控制流图逻辑结构对比的编译器验证方法
CN105512558A (zh) * 2016-01-07 2016-04-20 北京邮电大学 一种基于反编译模块特征的android广告插件检测方法
CN107908963A (zh) * 2018-01-08 2018-04-13 北京工业大学 一种自动化检测恶意代码核心特征方法
CN108090356A (zh) * 2017-12-08 2018-05-29 湖南大学 一种基于图像纹理和bp神经网络的恶意文件检测方法
CN111104120A (zh) * 2018-10-29 2020-05-05 赛灵思公司 神经网络编译方法、系统及相应异构计算平台

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090129609A (ko) * 2008-06-13 2009-12-17 주식회사 안철수연구소 컴파일러 구분에 의한 악성코드 진단장치 및 방법
CN102012862A (zh) * 2010-11-09 2011-04-13 北京神舟航天软件技术有限公司 基于控制流图逻辑结构对比的编译器验证方法
CN105512558A (zh) * 2016-01-07 2016-04-20 北京邮电大学 一种基于反编译模块特征的android广告插件检测方法
CN108090356A (zh) * 2017-12-08 2018-05-29 湖南大学 一种基于图像纹理和bp神经网络的恶意文件检测方法
CN107908963A (zh) * 2018-01-08 2018-04-13 北京工业大学 一种自动化检测恶意代码核心特征方法
CN111104120A (zh) * 2018-10-29 2020-05-05 赛灵思公司 神经网络编译方法、系统及相应异构计算平台

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于图像纹理和卷积神经网络的恶意文件检测方法;蒋晨等;《计算机应用》;20180521(第10期);全文 *

Also Published As

Publication number Publication date
CN112989339A (zh) 2021-06-18

Similar Documents

Publication Publication Date Title
CN108718310B (zh) 基于深度学习的多层次攻击特征提取及恶意行为识别方法
CN110222512B (zh) 一种基于中间语言的软件漏洞智能检测与定位方法与系统
Bovolo et al. A theoretical framework for unsupervised change detection based on change vector analysis in the polar domain
CN110390347B (zh) 针对深度神经网络的条件引导式对抗生成测试方法与系统
Zhao et al. Maldeep: A deep learning classification framework against malware variants based on texture visualization
CN111914778A (zh) 一种基于弱监督学习的视频行为定位方法
CN112989339B (zh) 一种基于机器学习的gcc编译器恶意代码入侵检测方法
CN116631043B (zh) 自然对抗补丁生成方法、目标检测模型的训练方法及装置
CN114692156B (zh) 内存片段恶意代码入侵检测方法、系统、存储介质及设备
CN111177731A (zh) 一种基于人工神经网络的软件源代码漏洞检测方法
CN112313645A (zh) 通过合成原始数据和标记数据来生成已标记数据的数据嵌入网络的学习方法和测试方法以及用其的学习装置和测试装置
CN113821804A (zh) 一种面向第三方组件及其安全风险的跨架构自动化检测方法与系统
Pérez et al. Universal steganography detector based on an artificial immune system for JPEG images
Bountakas et al. Defense strategies for adversarial machine learning: A survey
CN112287645B (zh) 一种基于生成式对抗网络的恶意pdf文档生成方法
Liu et al. GreedyFool: Multi-factor imperceptibility and its application to designing a black-box adversarial attack
Larson et al. Generalized “avatar” niche shifts improve distribution models for invasive species
CN116595525A (zh) 一种基于软件图谱的阈值机制恶意软件检测方法及系统
CN115766090A (zh) 一种多特征融合神经网络网络安全检测方法
Hu et al. Study on the interaction between the cover source mismatch and texture complexity in steganalysis
CN111581640A (zh) 一种恶意软件检测方法、装置及设备、存储介质
CN111767907B (zh) 一种基于ga与vgg网络的多源数据火灾检测系统的方法
CN117454902B (zh) 应用于调查处理系统的报告分析方法及海洋环境调查系统
CN116545767B (zh) 一种基于生成对抗网络的xss攻击载荷自动生成方法及系统
Nair Adversarial Attacks and Defenses and Further Ways They Can Be Improved

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant