本项目提供了一种快速定位软件加固作用位置的高可信度检测方法。目前已实现加固判断二分类,并为加固类型多分类判断奠定了基础。
本项目聚焦于常见免杀机制规避检测手段的关键点,通过检测"非恶意"代码段/混淆段来对多种加固规避机制进行测试,从而降低研究人员面对加固样本的分析难度。
主要使用技术: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
python3 Convert_file2image.py
- 文件转图片python3 gray2rgb.py
- 转RGB图片python3 cutimage_bat.py
- 批量剪裁python3 delete_same_image.py
- 去重
编辑train.py
和model.py
时,请注意以下几点:
- 显存溢出/内存不足(OOM):
- 检查分类器label数量与tf.keras.Sequential中Dense数值是否对应
- 调整batch_size大小,必要时缩小图像或使用CPU计算
- 找不到dataset:
- 确认数据集路径(默认"dataset")及文件夹名称是否正确
- 类型错误:
- 检查数值输入处是否误留引号,尤其是"str cannot be..."错误
- ResNet模型加载错误:
- 检查头部引用,适当调整model.py中def定义的模型参数
训练完第一轮后可随时终止,使用生成的权重文件进行迁移学习。
- funkpopo (@funkpopo)
本项目采用 Apache-2.0 license 授权,详见 LICENSE 文件。