摘要:随着网络安全威胁的日益严峻,恶意软件的检测与识别已成为信息安全领域的重要研究课题。传统的基于特征码匹配的检测方法难以应对快速变化的恶意软件变种,而基于深度学习的检测方法能够自动学习恶意软件的深层特征,具有更强的泛化能力。本文设计并实现了一个基于卷积神经网络(CNN)和递归神经网络(RNN)的PE(PortableExecutable)恶意文件检测识别系统。

项目简介

采用卷积神经网络提取PE文件静态特征,结合递归神经网络分析指令和API调用序列,通过集成学习实现高精度恶意软件检测的智能识别系统。

系统概述

系统采用双模型融合架构,结合静态分析和行为分析两种检测策略。在静态分析方面,CNN模型将PE文件的原始字节流转换为256×256的灰度图像,通过4层卷积层和3层全连接层提取文件的结构特征,实现对恶意文件的识别。在行为分析方面,设计了两 个RNN模型:Instruction RNN采用LSTM(长短期记忆网络)架构分析x86指令序列,捕捉程序的执行逻辑;API RNN采用GRU(门控循环单元)架构分析Windows API调用序列,识别程序的系统交互行为。系统通过加权投票的集成学习策略 融合三个模型的预测结果,其中CNN权重为0.4,RNN权重为0.6,充分发挥各模型的优势。

系统基于PyTorch深度学习框架实现,采用PySide6构建了简便清晰的图形用户界面,支持拖拽上传和一键扫描功能。在包含300个良性样本和106个恶意样本(涵盖10个恶意软件家族)的数据集上进行训练和测试,实验结果表明:CNN模型验证准确率达 到91.46%,召回率为100%,实现零漏报;Instruction RNN准确率为96.20%,精确率为100%,实现零误报;API RNN准确率达到98.73%,综合性能最优。集成模型进一步提升了检测的准确性和鲁棒性。

系统架构

采用CNN静态分析、双RNN行为分析和加权集成学习的三模型融合架构。

数据集构建

本项目构建了一个包含406个PE(Portable Executable)文件的恶意软件检测数据集,其中良性样本300个,恶意样本106个。原始PE文 件(.exe和.dll格式)存储在data/raw/目录下,按照benign/(良性)和malware/(恶意)两个子目录分类管理。数据集呈现一定的类 别不平衡特性,良性样本约为恶意样本的2.8倍,这反映了实际应用场景中良性软件占多数的真实分布情况。

特征提取采用多模态方法,包含静态图像特征和动态行为特征两个维度。静态特征提取将PE文件的二进制内容转换为256×256的灰度图 像,每个样本表示为(1, 256, 256)的单通道张量,用于捕获文件的字节分布模式和结构特征。动态行为特征通过反汇编技术提取指令 序列(最长500条)和API调用序列(最长200条),存储在behavioral_features.npz中。所有处理后的特征统一保存在data/processed /目录,并按8:2比例划分为训练集(325样本)和验证集(81样本),为CNN图像分类模型和RNN序列分析模型提供训练数据支持。

数据集训练

本项目采用多模型训练策略,分别训练CNN图像分类模型和RNN序列分析模型。CNN模型使用静态图像特征进行训练,配置为batch_size=32、训练轮数20个epoch、学习率0.001,采用Adam优化器和交叉熵损失函数,在训练过程中自动保存验证集准确率最高的模型检查点至models/checkpoints/best_model.pth。RNN模型包含InstructionRNN(LSTM架构)和APIRNN(GRU架构)两个子模型,分别用于分析指令序列和API调用序列,配置为batch_size=16、最大训练50个epoch、学习率0.001,采用AdamW优化器(权重衰减1e-4)、ReduceLROnPlateau学习率调度器和梯度裁剪(max_norm=1.0)等正则化技术,并引入早停机制(patience=10)防止过拟合。所有模型均支持GPU加速训练,训练过程实时记录损失值和准确率,训练历史保存为.npz格式便于后续分析和可视化。

项目结构

本项目采用模块化设计,主要包含数据预处理模块(src/preprocessing/)负责PE文件特征提取和数据加载、模型定义模块(src/models/)包含CNN和RNN架构及训练脚本、数据存储目录(data/raw/存放原始PE文件、data/processed/存放处理后的特征文件)以及模型检查点目录(models/checkpoints/)用于保存训练好的模型权重和训练历史。

核心技术

本项目基于深度学习的多模态融合技术实现PE恶意软件检测,核心技术包括三个层面:特征工程层面,采用二进制可视化技术将PE文件字节流转换为256×256灰度图像捕获静态结构特征,同时利用Capstone反汇编引擎和pefile库提取指令序列和API调用序列作为动态行为特征;模型架构层面,设计CNN卷积神经网络处理图像特征进行模式识别,构建InstructionRNN(LSTM)和APIRNN(GRU)两个循环神经网络分别分析指令流和API调用流的时序依赖关系;训练优化层面,采用PyTorch深度学习框架实现端到端训练,通过学习率调度、梯度裁剪、权重衰减等正则化技术和早停机制提升模型泛化能力,最终实现静态特征与动态行为的协同检测,有效识别已知和潜在的恶意软件样本。

快速开始

首先确保安装项目依赖(PyTorch、numpy、pefile、capstone等),然后将PE文件样本分别放置在data/raw/benign/(良性)和data/r aw/malware/(恶意)目录下。运行预处理脚本提取特征:执行python src/preprocessing/extract_features.py生成静态图像特征,执行python src/preprocessing/behavioral_features.py提取动态行为 特征,处理后的特征文件将自动保存至data/processed/目录。启动模型训练时,在项目根目录下执行python src/models/train.py训练CNN图像分类模型,执行python src/models/train_rnn.py训练RNN序列分析模型,训练过程会实时显示损失 值和准确率,最佳模型检查点自动保存至models/checkpoints/目录,训练完成后可使用保存的模型进行恶意软件检测和评估。

环境要求

本项目需要Python 3.8+环境,核心依赖包括PyTorch 1.10+、NumPy、pefile、Capstone和tqdm,可通过pip install torch numpy pefile capstone-engine tqdm一键安装。硬件配置建议8GB以上内存,支持NVIDIA GPU(CUDA 10.2+)加速训练,CPU模式也可运行。项目兼容Windows、Linux和macOS系统,推荐使用PyCharm开发,运行时需将工作目录设置为项目根目录。

结果展示

运行app.py

图1 主界面)

图2 CNN+RNN集成模型:检测到恶意程序

图3 CNN+RNN集成模型:文件安全

图4 CNN模型:检测到恶意程序

图5 CNN模型:文件安全

图6 RNN模型:检测到恶意程序

图7 RNN模型:文件安全

运行train.py → 训练CNN模型 → 保存模型和历史
运行train_rnn.py → 训练RNN模型 → 保存模型和历史
运行evaluate.py → 加载所有模型和历史 → 生成对比图表
所以evaluate.py是基于train.py和train_rnn.py的训练结果来生成这些评估图表的。

图8 训练历史曲线图

– CNN模型(来自train.py):读取training_history.npz
– Instruction RNN(来自train_rnn.py):读取instruction_rnn_history.npz
– API RNN(来自train_rnn.py):读取api_rnn_history.npz

图9 混淆矩阵对比图

图10 ROC曲线对比图

图11 精确率-召回率曲线图

图12 性能指标对比柱状图

结果点评

从评估结果来看,三个模型在恶意软件检测任务上均展现出良好的性能表现。CNN模型通过分析PE文件的二进制图像特征,能够有 效捕获文件的静态结构模式,在准确率和泛化能力上表现稳定。Instruction RNN(LSTM)和API RNN(GRU)两个序列模型则从动态行为角度切入,分别通过分析指令序列和API调用序列来识别恶意行为模式,在捕获程序运行时 特征方面具有独特优势。从训练历史曲线可以观察到,所有模型的训练损失和验证损失均呈现良好的收敛趋势,验证准确率稳步提 升且未出现明显过拟合现象,说明模型架构设计合理、正则化策略有效。

综合性能指标对比显示,三个模型各有所长,形成互补关系。ROC曲线和PR曲线表明模型在不同决策阈值下均能保持较高的真阳性率和较低的假阳性率,AUC值接近或超过0.9,证明模型具备较强的分类判别能力。混淆矩阵分析显示模型在良性和恶意样本的识别上都达到了较高的准确度,尽管数据集存在类别不平衡(良性样本约为恶意样本的2.8倍),但通过合理的训练策略和损失函数设计,模型仍能在两类样本上保持均衡的检测性能。未来可考虑将CNN的静态特征与RNN的动态特征进行融合,构建多模态集成模型,有望进一步提升检测准确率和鲁棒性,更好地应对复杂多变的恶意软件威胁。

项目资源

包括完整的项目源代码、演示视频、运行截图,开箱即用。

关于项目

原创论文

原创论文:基于卷积神经网络和递归神经网络的PE恶意文件检测识别 注意:需要另外付费购买!

作者信息

作者:Bob (张家梁)
项目编号:YD-7
原创声明:本项目为原创作品 数据集有恶意样本 解压密码“2zcode”

开源协议

本项目采用AGPL-3.0开源协议,允许个人和组织自由使用、修改和分发代码,但基于本项目的衍生作品必须同样开源,且用于提供网络服务时需向用户提供完整源代码。本项目仅供学习研究使用,作者不对使用本项目产生的任何后果承担责任,使用者应遵守当地法律法规,合理合法使用本项目。如本项目对您的研究或工作有所帮助,欢迎引用并注明出处。

版权声明:本站除特别标注外的所有源码与资料均为原创,受《中华人民共和国著作权法》等相关法律保护。未经本站事先书面许可,任何个人或机构不得以复制、转载、爬取、汇编、改写、引用等方式使用本站内容,不得将本站内容发布或用于任何形式的商业活动。对未经授权使用本站内容的行为,本站保留追究法律责任的权利,包括但不限于要求删除、赔偿、诉讼等。如认为本站内容侵犯其合法权益,请提供权属证明并联系我们,我们将在核实后依法及时处理。