ZhengXR930/MalEval

GitHub: ZhengXR930/MalEval

MalEval 是一个评估框架,用于系统衡量大型语言模型在 Android 恶意软件细粒度行为审计任务上的表现。

Stars: 5 | Forks: 1

# MalEval MalEval 是一个用于评估由大型语言模型生成的 Android 恶意软件行为报告的框架。 此代码仓库中的代码实现了两种执行路径: 1. **从 APK**:对 APK 文件运行静态分析,以生成入口点、调用链、函数体和可达函数。 2. **从 artifact**:从预计算的静态分析输出开始,生成函数摘要、上下文中间表示、行为报告和评估指标。 已发布的数据集单独托管在 `https://huggingface.co/datasets/Xinzxr/MalEval`。 ## 仓库布局 ``` info/ Sample metadata for the benign, MalRadar, and new malware splits. model_registry.yaml Model/provider configuration for LLM-based stages. src/ Static analysis, summarization, behavior generation, and metrics code. ``` 应对数据集进行解压,以便仓库具有以下布局: ``` MalEval/ |-- info/ |-- src/ `-- artifacts/ |-- apk/ |-- call_chain/ |-- entrypoints/ |-- functions/ |-- meta_info/ |-- reachable_func/ `-- reports/ ``` ## 环境 使用 Python 3.10 或更高版本。核心脚本需要用于 Android 静态分析和 LLM 调用的常用 Python 包,包括 `androguard`、`openai`、`pyyaml`、`tqdm`、`pandas` 和 `scikit-learn`。 在运行基于 LLM 的阶段之前,请在 `model_registry.yaml` 中配置模型提供商。每个模型条目可以存储字面值(例如 `api_key` 和 `base_url`),或环境变量引用(例如 `api_key_env` 和 `base_url_env`)。 示例: ``` models: gpt: provider: openai model: gpt-5 api_key: base_url: https://api.openai.com/v1 ``` 默认注册表包含 `gpt`、`gpt-5`、`qwen`、`deepseek`、`llama`、`coder`、`claude` 和 `gemini` 的条目。如果您倾向于使用环境变量,请设置 `model_registry.yaml` 引用的变量,例如 `OPENAI_API_KEY`、`DEEPSEEK_API_KEY`、`QWEN3_API_KEY`、`HUGGINGFACE_API_KEY`、`ANTHROPIC_API_KEY`、`GEMINI_API_KEY`、`GEMINI_PROJECT` 和 `GEMINI_LOCATION`。 ## 从 APK 此路径从 `artifacts/apk//` 下的 APK 文件开始,并重新生成静态分析 artifact。split 必须是 `malradar`、`new` 或 `benign` 之一。 运行单个 APK: ``` sha= python3 src/preparation/run_static_analysis.py \ --folder malradar \ --apk "$sha" \ --output-root results/static_analysis ``` 运行一个小的抽样批次: ``` python3 src/preparation/run_static_analysis.py \ --folder malradar \ --sample-size 5 \ --seed 42 \ --output-root results/static_analysis ``` 生成的文件将写入: ``` results/static_analysis/entrypoints/ results/static_analysis/call_chain/ results/static_analysis/functions/ results/static_analysis/reachable_func/ ``` ## 从 Artifact 此路径从已发布的 `artifacts/` 目录开始。它使用预计算的 `functions`、`call_chain`、`entrypoints`、`reachable_func` 和 `meta_info` 文件。 ### 函数摘要 ``` model=gpt split=malradar sha= python3 src/preparation/get_functionality_summary.py --model "$model" --folder "$split" --apk "$sha" ``` 省略 `--apk` 以运行整个 split。 ### 上下文与无上下文摘要 ``` python3 src/preparation/get_context_summary.py --model "$model" --folder "$split" --apk "$sha" python3 src/preparation/get_no_context_summary.py --model "$model" --folder "$split" --apk "$sha" ``` ### 行为报告 ``` python3 src/generate_behavior/get_behavior.py --model "$model" --folder "$split" --flag context --apk "$sha" python3 src/generate_behavior/get_behavior.py --model "$model" --folder "$split" --flag no_context --apk "$sha" python3 src/generate_behavior/get_meta_behavior.py --model "$model" --folder "$split" --apk "$sha" ``` 输出将写入 `results/summary/`、`results/context_summary/`、`results/no_context_summary/`、`results/behavior/`、`results/no_context_behavior/` 和 `results/meta_behavior/` 下。 ## 指标 在生成摘要和行为报告之后,使用以下命令计算指标: ``` python3 src/metrics/run_metrics.py --model "$model" --flag context python3 src/metrics/run_metrics.py --model "$model" --flag no_context python3 src/metrics/run_metrics.py --model "$model" --flag meta ``` 要跳过 judge 模型调用: ``` python3 src/metrics/run_metrics.py --model "$model" --flag context --skip-eas ``` 还提供了单独的指标脚本: ``` python3 src/metrics/aec_b_f1.py --model "$model" --flag context python3 src/metrics/fpcr_tpmr_f1c.py --model "$model" --flag context python3 src/metrics/eas.py --model "$model" --flag context --split malradar --judge-model gpt-5 ```
标签:AI安全, Android静态分析, Chat Copilot, DLL 劫持, LLM评测, Petitpotam, TruffleHog, 大语言模型, 学术论文, 恶意代码分类, 恶意软件评估, 逆向工具