
ISSTA 2026 पेपर के लिए आधिकारिक कोड: क्या "इसे दुर्भावनापूर्ण जानना" पर्याप्त है? सूक्ष्म-स्तरीय मैलवेयर व्यवहार ऑडिटिंग के लिए LLMs का मूल्यांकन
लेख: Is “Knowing It’s Malicious” Enough? Evaluating LLMs for Fine-Grained Malware Behavior Auditing
लेख DOI: 10.1145/3832187
MalEval एक फ्रेमवर्क है जो बड़े भाषा मॉडल (LLMs) द्वारा उत्पन्न Android मैलवेयर व्यवहार रिपोर्टों के मूल्यांकन के लिए है। इस रिपॉजिटरी में मौजूद कोड दो निष्पादन पथ लागू करता है:
जारी किया गया डेटासेट अलग से होस्ट किया गया है MalEval Hugging Face dataset repository में।
बेंचमार्क में 255 Android एप्लिकेशन शामिल हैं: 200 पुराने मैलवेयर सैंपल, 30 हालिया मैलवेयर सैंपल, और 25 बेनाइन एप्लिकेशन जिन्हें अनुकरणीय फ़ॉल्स पॉज़िटिव के रूप में उपयोग किया गया है। जारी की गई फ़ाइलों, उत्पत्ति, अधिकारों और सुरक्षित-संचालन नोट्स के लिए DATA.md देखें।
info/ बेनाइन, MalRadar, और नए मैलवेयर विभाजनों के लिए सैंपल मेटाडेटा।
model_registry.yaml LLM-आधारित चरणों के लिए मॉडल/प्रदाता कॉन्फ़िगरेशन।
DATA.md डेटासेट संरचना, उत्पत्ति और एक्सेस निर्देश।
LICENSE.txt लाइसेंस का दायरा और तृतीय-पक्ष सामग्री के बहिष्करण।
CITATION.cff मशीन-पठनीय उद्धरण मेटाडेटा।
src/ स्थैतिक विश्लेषण, सारांशीकरण, व्यवहार निर्माण और मेट्रिक्स कोड।
डेटासेट को इस तरह निकाला जाना चाहिए कि रिपॉजिटरी का लेआउट इस प्रकार हो:
MalEval/
|-- info/
|-- src/
`-- artifacts/
|-- apk/
|-- call_chain/
|-- entrypoints/
|-- functions/
|-- meta_info/
|-- reachable_func/
`-- reports/
Python 3.10 या नया उपयोग करें। हम एक नया वर्चुअल वातावरण बनाने की सलाह देते हैं:
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
LLM-आधारित चरणों को चलाने से पहले model_registry.yaml में मॉडल प्रदाताओं को कॉन्फ़िगर करें।
प्रत्येक मॉडल एंट्री में या तो शाब्दिक मान, जैसे api_key और
base_url, या पर्यावरण-चर संदर्भ, जैसे api_key_env और
base_url_env संग्रहीत हो सकते हैं।
उदाहरण:
models:
gpt:
provider: openai
model: gpt-5
api_key: <your_openai_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, , और
।
यह पथ artifacts/apk/<split>/ के अंतर्गत APK फ़ाइलों से शुरू होता है और स्थैतिक-विश्लेषण आर्टिफैक्ट्स को पुनः उत्पन्न करता है। विभाजन malradar, new, या benign में से एक होना चाहिए।
एक APK चलाएँ:
sha=<apk_sha256>
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/
यह पथ जारी किए गए artifacts/ निर्देशिका से शुरू होता है। यह पूर्व-परिकलित
functions, call_chain, entrypoints, reachable_func, और
meta_info फ़ाइलों का उपयोग करता है।
model=gpt
split=malradar
sha=<apk_sha256>
python3 src/preparation/get_functionality_summary.py --model "$model" --folder "$split" --apk "$sha"
पूरा विभाजन चलाने के लिए --apk को हटा दें।
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
जज-मॉडल कॉल छोड़ने के लिए:
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
स्रोत ट्री को APK डाउनलोड किए बिना या मॉडल क्रेडेंशियल कॉन्फ़िगर किए बिना जाँचा जा सकता है:
python3 -m compileall -q src
python3 - <<'PY'
import json
from pathlib import Path
expected = {
"archived_sample_info.json": 200,
"latest_sample_info.json": 30,
"benign_sample_info.json": 25,
}
for name, count in expected.items():
actual = len(json.loads((Path("info") / name).read_text()))
assert actual == count, (name, actual, count)
print("metadata check passed: 200 archived malware + 30 recent malware + 25 benign")
PY
GEMINI_PROJECTGEMINI_LOCATION