Skip to content

Use image recognition methods to analyze packed malware. (使用图像识别方法对加壳恶意软件进行分类)

License

Notifications You must be signed in to change notification settings

funkpopo/ResNet-Packed-Malware-Detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ ResNet分类加壳恶意软件

License

本项目提供了一种快速定位软件加固作用位置的高可信度检测方法。目前已实现加固判断二分类,并为加固类型多分类判断奠定了基础。

📋 项目简介

本项目聚焦于常见免杀机制规避检测手段的关键点,通过检测"非恶意"代码段/混淆段来对多种加固规避机制进行测试,从而降低研究人员面对加固样本的分析难度。

主要使用技术:ResNet, SIFT, ORB

⚙️ 环境配置

  • 加壳工具: VMProtect, The Mida v3
  • 分析工具: Ghidra, IDA Pro, Winhex
  • 硬件环境:
    • Intel i7-9750H @2.60GHz 6 Core
    • Nvidia Geforce 1660Ti 6G (Tensor computeCapability: 7.5)
    • 16GB RAM @2666MHz
    • Windows 11 Dev preview
  • 软件环境:
    • PyCharm 2021.1 (Community Edition)
    • Python 3.9.1 (样本预处理)
    • Python 3.8.8 (模型搭建与测试)
    • Tensorflow 2.4.1 (GPU)
    • CUDA 11.3.0_456.89
    • cuDNN 11.2v8.1.1.33

🚀 预处理步骤

  1. python3 Convert_file2image.py - 文件转图片
  2. python3 gray2rgb.py - 转RGB图片
  3. python3 cutimage_bat.py - 批量剪裁
  4. python3 delete_same_image.py - 去重

🤖 使用注意事项

编辑train.pymodel.py时,请注意以下几点:

  1. 显存溢出/内存不足(OOM):
    • 检查分类器label数量与tf.keras.Sequential中Dense数值是否对应
    • 调整batch_size大小,必要时缩小图像或使用CPU计算
  2. 找不到dataset:
    • 确认数据集路径(默认"dataset")及文件夹名称是否正确
  3. 类型错误:
    • 检查数值输入处是否误留引号,尤其是"str cannot be..."错误
  4. ResNet模型加载错误:
    • 检查头部引用,适当调整model.py中def定义的模型参数

训练完第一轮后可随时终止,使用生成的权重文件进行迁移学习。

🙏 贡献者

📜 许可证

本项目采用 Apache-2.0 license 授权,详见 LICENSE 文件。

About

Use image recognition methods to analyze packed malware. (使用图像识别方法对加壳恶意软件进行分类)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages