Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
FreeMOCA | Kitploit
工具/GitHubGitHub/iqsec-lab/freemoca
Android安全静态分析恶意软件分析机器学习论文与研究学习与教育
GitHubiqsec-lab/freemoca

FreeMOCA

查看仓库
1个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

FreeMOCA:用于恶意代码分析的无记忆持续学习

[ArXiv 论文链接]

Zahra Asadi*, Haeseung Jeon*, Sohyun Han, Md Mahmuduzzaman Kamol, Se Eun Oh, Mohammad Saidur Rahman†

*同等贡献作者。 †通讯作者。

[!NOTE] 这是论文 FreeMOCA: Memory-Free Continual Learning for Malicious Code Analysis 的官方实现。

FreeMOCA 流程

FreeMOCA_Overview_v3

FreeMOCA 按以下流程运行:

  1. 任务按顺序到达,每个任务都会引入新的恶意软件家族。
  2. 每个任务的模型都从前一个任务初始化(热启动),以在参数空间中对齐任务最小值。
  3. 训练后,在当前任务与前一任务的最优解之间计算基于模式连通性的插值。该过程可根据参数更新幅度使用自适应逐层插值。
  4. 插值后的模型取代当前模型,并用于下一个任务。
  5. 不存储任何过去的数据、特征或生成的样本,从而实现无记忆持续学习。

整个过程构建了一条位于低损失流形上的连通解链,显著减少了灾难性遗忘。

数据集

FreeMOCA 使用两个大规模恶意软件数据集 EMBER 和 Androzoo 进行评估。数据集来源:

  • EMBER: https://github.com/elastic/ember
  • Androzoo (AZ): https://zenodo.org/records/14537891

请将数据集下载并配置到以下目录:

root@kitploit:~
FreeMOCA/data/
├── AZ_Class
│   ├── AZ_Class_Test.npz
│   └── AZ_Class_Train.npz
│
├── AZ_Domain
│   ├── 2008_Domain_AZ_Test_Transfo...
│   ├── 2008_Domain_AZ_Train_Transfo...
│   ├── 2009_Domain_AZ_Test_Transfo...
│   └── ...
│
├── EMBER_Class
│   ├── XY_test.npz
│   └── XY_train.npz
│
└── EMBER_Domain
    ├── 2018-01
    ├── 2018-02
    ├── 2018-03
    └── ...

运行 FreeMOCA

本仓库支持两种持续学习场景:

  • 类增量学习(Class-IL):在任务过程中逐渐引入新的类别(恶意软件家族)。
  • 域增量学习(Domain-IL):标签空间固定,但数据分布随时间(例如按月/按年)发生变化。

步骤 1:安装

运行以下命令以

root@kitploit:~
conda create -n freemoca python=3.9
conda activate freemoca
pip install -r requirements.txt

步骤 2:运行 FreeMOCA(Class-IL 与 Domain-IL)

root@kitploit:~
# EMBER Class-IL
cd ./FreeMOCA_Class/EMBER_Class
CUDA_VISIBLE_DEVICES=0 python main.py --train_data /path/to/data --test_data /path/to/data
root@kitploit:~
# AZ Class-IL
cd ./FreeMOCA_Class/AZ_Class
CUDA_VISIBLE_DEVICES=0 python main.py --train_data /path/to/data --test_data /path/to/data
root@kitploit:~
# EMBER Domain-IL
cd ./FreeMOCA_Domain/EMBER_Domain
CUDA_VISIBLE_DEVICES=0 python main.py --data_root /path/to/data/directory
root@kitploit:~
# AZ Domain-IL
cd ./FreeMOCA_Domain/AZ_Domain
CUDA_VISIBLE_DEVICES=0 python main.py --data_root /path/to/data/directory

有关超参数的更详细设置,请查阅附录 A:FreeMOCA 的通用参数。

附录 A:FreeMOCA 的通用参数

如需调整超参数或实验设置,可使用以下参数:

如需更改参数的默认设置,请查看 arguments.py 文件。

基线方法

本仓库支持在以下标准基线上进行实验:

  • None:仅在当前任务上训练(下界)
  • Joint:在迄今已见到的所有数据上训练(上界,不切实际)

可以使用以下命令运行:

root@kitploit:~
cd /path/to/experiment/directory
CUDA_VISIBLE_DEVICES=0 python none.py --arugment_you_want
CUDA_VISIBLE_DEVICES=0 python joint.py --arugment_you_want

以及以下已有的相关工作:

  • CLeWI:改编自此 GitHub 仓库,源自论文“Continual Learning with Weight Interpolation”。
  • WSC:改编自此 GitHub 仓库,源自论文“Forget Forgetting: Continual Learning in a World of Abundant Memory”。
  • Generative Replay (GR):改编自此 GitHub 仓库,源自论文“Continual learning with deep generative replay”。
  • EWC:改编自此 GitHub 仓库,源自论文“Overcoming catastrophic forgetting in neural networks”。
  • LwF:改编自此 GitHub 仓库,源自论文“Learning without Forgetting”。
  • iCaRL:改编自此 GitHub 仓库,源自论文“iCaRL: Incremental Classifier and Representation Learning”。
  • TAMiL:改编自此 GitHub 仓库,源自论文“Task-Aware Information Routing from Common Representation Space in Lifelong Learning”。
  • MalCL:改编自此 GitHub 仓库,源自论文“MalCL: Leveraging GAN-Based Generative Replay to Combat Catastrophic Forgetting in Malware Classification”。

可以使用以下命令运行基线方法:

root@kitploit:~
# CLeWI for EMBER-Class
cd ./baselines/CLeWI
CUDA_VISIBLE_DEVICES=6 python main.py --model="clewi" \
  --dataset="seq_ember" --n_tasks=11 \
  --lr=0.001 --buffer_size=500 --n_epochs=50 \
  --seed=42 --optim_wd=0.0 --optim_mom=0.0 \
  --batch_size=512 --sub_dataset="ember"

# CLeWI for AZ-Class
cd ./baselines/CLeWI
CUDA_VISIBLE_DEVICES=6 python main.py --model="clewi" \
  --dataset="seq_ember" --n_tasks=11 \
  --lr=0.001 --buffer_size=500 --n_epochs=50 \
  --seed=42 --optim_wd=0.0 --optim_mom=0.0 \
  --batch_size=512 --sub_dataset="az"
root@kitploit:~
# WSC for EMBER-Class
cd ./baselines/WSC
MODEL_NAME=wsc_20_ember
python main.py --config=./exps/wsc_memory/$MODEL_NAME.json
root@kitploit:~
# WSC for AZ-Class
cd ./baselines/WSC
MODEL_NAME=wsc_20_az
python main.py --config=./exps/wsc_memory/$MODEL_NAME.json
root@kitploit:~
# GR for EMBER-Class
cd ./baselines/GR_EWC_LwF_iCaRL_EMBER
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=EMBER --tasks=11 --replay=generative --metrics --logger_file gr --scenario=class

# GR for AZ-Class
cd ./baselines/GR_EWC_LwF_iCaRL_AZ
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=ANDROZOO --tasks=11 --replay=generative --metrics --logger_file gr --scenario=class
root@kitploit:~
# EWC for EMBER-Class
cd ./baselines/GR_EWC_LwF_iCaRL_EMBER
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=EMBER --tasks=11 --ewc --lambda=50 --metrics --logger_file ewc --scenario=class

# EWC for AZ-Class
cd ./baselines/GR_EWC_LwF_iCaRL_AZ
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=ANDROZOO --tasks=11 --ewc --lambda=50 --metrics --logger_file ewc --scenario=class
root@kitploit:~
# LwF for EMBER-Class
cd ./baselines/GR_EWC_LwF_iCaRL_EMBER
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=EMBER  --tasks=11 --replay=current --distill --metrics --logger_file lwf --scenario=class

# LwF for AZ-Class
cd ./baselines/GR_EWC_LwF_iCaRL_AZ
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=AZ  --tasks=11 --replay=current --distill --metrics --logger_file lwf --scenario=class
root@kitploit:~
# iCaRL for EMBER-Class
cd ./baselines/GR_EWC_LwF_iCaRL_EMBER
CUDA_VISIBLE_DEVICES=1 python main.py --data_set=EMBER --tasks=11 --icarl --budget=2000 --metrics --logger_file=icarl --scenario=class

# iCaRL for AZ-Class
cd ./baselines/GR_EWC_LwF_iCaRL_AZ
CUDA_VISIBLE_DEVICES=0 python main.py --data_set=ANDROZOO --tasks=11 --icarl --budget=2000 --metrics --logger_file=icarl --scenario=class
root@kitploit:~
# TAMiL for EMBER-Class
cd ./baselines/TAMiL_EMBER
CUDA_VISIBLE_DEVICES=0 python main.py

# TAMiL for AZ-Class
cd ./baselines/TAMiL_AZ
CUDA_VISIBLE_DEVICES=0 python main.py
root@kitploit:~
# MalCL for EMBER-Class
cd ./baselines/MalCL_EMBER
CUDA_VISIBLE_DEVICES=0 python main.py --train_data /path/to/data --test_data /path/to/data

# MalCL for AZ-Class
cd ./baselines/AZ_EMBER
CUDA_VISIBLE_DEVICES=0 python main.py --train_data /path/to/data --test_data /path/to/data
下载工具
参数描述
--init_classes任务 0 中的类别数量
--epochs每个任务的训练轮数
--batchsize批大小
--lr学习率
--momentumSGD 动量
--weight_decay权重衰减
--lambda_min最小插值权重
--lambda_max最大插值权重