Zcxczcxcz/TurkmenGuard
GitHub: Zcxczcxcz/TurkmenGuard
基于 ClamAV、YARA 和哈希特征码的 Windows 桌面杀毒软件,提供离线扫描、实时防护与隔离管理。
Stars: 0 | Forks: 0
# TurkmenGuard (Türkmen Goragçy) v4.5.2
**仓库地址:** https://github.com/Zcxczcxcz/TurkmenGuard
**面向开发者:** [docs/DEVELOPERS.md](docs/DEVELOPERS.md) · **Backend API:** [backend/README.md](backend/README.md)
**适用于 Windows 7 SP1+ / 10 / 11 (x64) 的独立杀毒软件**
本地离线扫描。网络**仅**用于更新特征码(每周一次或手动更新)。
## 这是什么
**TurkmenGuard** —— 一款采用深色极简界面(深蓝 + 绿色强调色)的桌面 WPF 杀毒软件。Türkmençe(土库曼语)为主要语言,同时也支持俄语和英语。
| 参数 | 值 |
|----------|----------|
| 平台 | **.NET Framework 4.8** (`net48`) —— 兼容 Windows 7 |
| UI | WPF + Material Design 3,企业级深色主题 |
| 引擎 | **ClamAV 1.5.3** (完整的 libclamav) → YARA → Entropy (PE, 7.95) |
| Hash fallback | SQLite 540k+(如果未安装 ClamAV engine) |
| 网络 | 用于 CVD 的 `SignatureUpdateService` + `freshclam` |
| 版本 | **4.5.2** |
### 功能
- Dashboard —— 保护状态、YARA、统计数据
- 快速 / 全盘 / 自定义 / 文件扫描
- 实时保护 (FileSystemWatcher)
- 隔离区 (AES-256,恢复/删除)
- 设置:语言、白名单、计划任务、**开机自启**、**自我保护**、特征码更新
- 托盘:打开 / 退出;附带 `--tray` 参数自启(在无窗口的情况下驻留托盘)
## 部署 (Release)
### 快速构建发行版 (~1.1 GB)
```
cd TurkmenGuard
publish.bat
```
结果:
- `dist/TurkmenGuard-v4.5.2/` —— 面向用户的现成文件夹
- `dist/TurkmenGuard-v4.5.2-win-x64.zip` —— 用于发送的压缩包(不提交至 git)
### 重置计数器和设置
```
powershell -ExecutionPolicy Bypass -File tools\reset-user-settings.ps1
```
### 发行版包含的内容
| 组件 | 大小 (约) |
|-----------|-------------------|
| TurkmenGuard.exe + DLL | ~15 MB |
| ClamAV engine + CVD | ~400 MB |
| hash-signatures.db | ~95 MB |
| YARA Rules (23 个文件) | ~1 MB |
**不包含:** `UserManual/`, `database/unpacked/`, `clamav-download/` (节省 ~3+ GB)。
### Git —— 克隆 (仓库中已包含所有必要运行文件)
```
git clone https://github.com/Zcxczcxcz/TurkmenGuard.git
cd TurkmenGuard
dotnet build TurkmenGuard.sln -c Release
start.bat
```
| 仓库内文件 | 用途 |
|---------------|------------|
| `ThirdParty/ClamAV/` | ClamAV 1.5.3 引擎 + CVD 特征码 |
| `Data/hash-signatures.db` | Hash SQLite fallback (~540k) |
| `Rules/` | 23 条 YARA 规则 |
| `backend/` | 面向 backend 团队的 API 规范 |
`tools/setup-clamav.ps1` —— 仅在 ClamAV 文件夹损坏时使用。
**团队访问权限:** 所有者可通过 GitHub → Settings → Collaborators 添加协作者(参见 [docs/DEVELOPERS.md](docs/DEVELOPERS.md))。
## 快速开始
### 环境要求
- Windows 7 SP1+ / 10 / 11 x64
- [.NET Framework 4.8](https://dotnet.microsoft.com/download/dotnet-framework/net48)
- [.NET SDK 8+](https://dotnet.microsoft.com/download) —— 仅用于构建
### 构建并运行
```
cd TurkmenGuard
# 首次:下载 ClamAV engine + CVD 数据库 (~400 MB)
powershell -ExecutionPolicy Bypass -File tools\setup-clamav.ps1
dotnet build TurkmenGuard.sln -c Release
start.bat
```
如果尚未安装引擎,`start.bat` 会自动运行 `setup-clamav.ps1`。
### 强制停止
如果杀毒软件造成干扰(托盘、自启、自我保护)—— 请双击:
```
stop-turkmenguard.bat
```
脚本将执行以下操作:
1. 结束 `TurkmenGuard.exe` 及所有 ClamAV 进程 (`clamscan`, `clamd`, `clamdscan`, `freshclam`)
2. 从注册表 `HKCU\...\Run\TurkmenGuard` 中删除自启项
3. 在 `%AppData%\TurkmenGuard\settings.json` 中禁用:AutoStart, RealTime, SelfProtection, ProcessMonitor
或者在 PowerShell 中执行:
```
powershell -ExecutionPolicy Bypass -File tools\force-stop.ps1
```
如果进程未能结束 —— 请**以管理员身份**运行 `stop-turkmenguard.bat`。
或者:
```
.\src\TurkmenGuard\bin\Release\TurkmenGuard.exe
```
首次启动时 —— 会出现语言选择窗口 (🇹🇲 / 🇷🇺 / 🇬🇧)。
### 测试
```
dotnet run --project tests\TurkmenGuard.Tests\TurkmenGuard.Tests.csproj -c Release
```
预期结果:**17/17 PASS** (如果被 Defender 拦截,EICAR 可能会显示 SKIP)。
### 安装完整的 ClamAV (v4.2 必需)
```
powershell -ExecutionPolicy Bypass -File tools\setup-clamav.ps1
```
脚本将执行以下操作:
1. 从 GitHub / clamav.net 下载 **clamav-1.5.3.win.x64.zip** (~220 MB)
2. 解压至 `ThirdParty/ClamAV/` (`clamscan`, `clamd`, `clamdscan`, `freshclam`)
3. 通过 `freshclam` 或 `cvdupdate` 下载 **main.cvd + daily.cvd + bytecode.cvd**
如果 GitHub 下载中断,请使用支持断点续传的独立脚本:
```
powershell -ExecutionPolicy Bypass -File tools\download-clamav-zip.ps1
powershell -ExecutionPolicy Bypass -File tools\setup-clamav.ps1 -SkipDatabase
```
### 随 Windows 自启动
在 **Settings → Start with Windows** 中开启注册表项:
```
HKCU\Software\Microsoft\Windows\CurrentVersion\Run\TurkmenGuard
"C:\...\TurkmenGuard.exe" --tray
```
- Windows 加载时,应用程序将**在系统托盘中启动**(不显示主窗口)
- 防篡改:如果注册表项被删除,`SelfProtectionService` 会将其恢复
- 双击托盘图标 —— 打开主窗口
### 杀毒软件自我保护
默认开启 (**Settings → Self-protection**):
| 机制 | 描述 |
|----------|----------|
| Single-instance mutex | 仅允许运行一个 TurkmenGuard 实例 |
| FileSystemWatcher | 监控 `Rules/`, `ClamAV/`、设置、隔离区 |
| Integrity check | 每 5 分钟检查一次 exe, clamscan, settings 的大小 |
| Registry watchdog | 受到干预时恢复自启动项 |
| Priority AboveNormal | 激活保护时提升进程优先级 |
### YARA 规则 (23 个文件,74 条规则)
`Rules/` 中的分类:
| 分类 | 文件 |
|-----------|-------|
| Credential theft | `credential_theft.yar` |
| Persistence | `persistence_registry.yar`, `persistence_services.yar` |
| Webshells | `webshell_php.yar`, `webshell_asp.yar` |
| Office macros | `macro_office.yar` |
| Crypto miners | `crypto_miner.yar` |
| AMSI bypass | `amsi_bypass.yar` |
| Shellcode / PE | `shellcode_pe.yar`, `packed_pe.yar` |
| RAT / trojan | `trojan_rat.yar` |
| Lateral movement | `lateral_movement.yar` |
| Ransomware | `ransomware_markers.yar`, `ransomware_extended.yar` |
| Info stealers | `info_stealer.yar` |
| LOLBins | `script_dropper.yar`, `lolbin_extended.yar` |
| PowerShell | `powershell_obfuscation.yar`, `downloader_powershell.yar` |
| WMI abuse | `wmi_abuse.yar` |
| Batch scripts | `suspicious_batch.yar` |
| Test | `eicar.yar`, `test_malware.yar` |
流水线:**ClamAV → YARA (74 rules) → Entropy**
### 从 ClamAV 构建 hash 数据库 (fallback / dev)
```
pip install cvdupdate
python tools/import-clamav-db.py --download
```
脚本将执行以下操作:
1. 通过 **cvdupdate** (官方 ClamAV 客户端) 下载 `main.cvd` + `daily.cvd`
2. 解压 `.hdb` / `.hsb` (MD5 + SHA256 hash-签名)
3. 创建 `Data/hash-signatures.db` (~95 MB,**540,000+** 条记录)
### 从 JSON 构建 hash 数据库 (dev/fallback)
```
powershell -ExecutionPolicy Bypass -File tools\build-hash-db.ps1
```
## 使用说明
### 首次启动
1. 运行 `start.bat` 或 `TurkmenGuard.exe`
2. 选择语言:Türkmençe / 俄语 / 英语
3. 在 Dashboard 上 —— 查看 YARA 和 hash 特征码状态
### 扫描
| 按钮 | 操作 |
|--------|----------|
| **Quick Scan** | 下载、桌面、临时文件夹、文档 |
| **Full Scan** | 所有本地磁盘 |
| **Custom Scan** | 选定文件夹 |
| **File Scan** | 单个文件 |
### 实时保护
**Goragçylyk / Protection** 选项卡 —— 开启/关闭 FileSystemWatcher。
### 隔离区
**Karantin** 选项卡 —— 恢复或永久删除。
### 设置
- 语言、主题、扫描计划
- 白名单(文件夹 + 扩展名)
- **特征码更新**:每周 / 手动,backend URL,“立即更新”按钮
- 应用程序日志
### 退出
- 托盘菜单 → **Exit**
- 设置中的 Exit 按钮
- **Ctrl+Q** —— 直接退出无需确认(默认)
## 扫描架构
```
Файл → exclusions + extension filter
→ ClamAV engine (libclamav: .ndb, .ldb, .hdb, .hsb, bytecode)
→ YARA (libyara.NET, 6 rule files)
→ Entropy (только PE .exe/.dll, per-section, порог 7.95)
```
如果 ClamAV engine 不可用 —— 自动 fallback 至 SQLite hash (540k 特征码)。
### ClamAV 作为主引擎 (v4.2)
- 内置便携版 **ClamAV 1.5.3 x64** 位于 `ThirdParty/ClamAV/`
- 守护进程 **clamd** + **clamdscan** 用于快速扫描 (TCP 127.0.0.1:3310)
- 如果守护进程未启动,则 fallback 至 **clamscan.exe**
- 完整的 CVD:`main.cvd`, `daily.cvd`, `bytecode.cvd` —— 涵盖所有特征码类型
- CVD 更新:从设置中更新特征码时由 `freshclam` 执行
### ClamAV hash SQLite (fallback)
内置数据库 `Data/hash-signatures.db` (v4.1):
- **540,326** 条 hash 特征码 (MD5 + SHA256)
- 仅在未安装便携版 ClamAV 时使用
### 降低误报率 (v4.0)
- **Extension allow-list** —— 仅扫描可执行文件、脚本、压缩包和 Office 文件
- **Packed_PE / UPX** —— severity 为 `Info`,不计入威胁
- **Entropy** —— 仅针对 PE 文件,按区段分析,阈值为 **7.95**(而非针对整个文件的 7.8)
- **Auto-quarantine** —— 仅限 `High+`(不包括 Medium/Low/Test/Info)
## 特征码更新 (唯一的网络模块)
Backend 负责存储和分发:
- `manifest.json` —— 版本、hash DB URL、SHA-256、规则 zip 包 URL
- `hash-signatures.db` —— 最多包含约 1M SHA-256 的 SQLite 数据库
- `rules-pack.zip` —— YARA 规则
manifest 示例:`backend/manifest.sample.json`
客户端:`Services/SignatureUpdateService.cs`
- 启动时检查 (可选)
- 每周自动执行 (`SignatureUpdateSchedule = weekly`)
- 在 Settings 中手动更新
在 `%AppData%/TurkmenGuard/settings.json` 中的设置:
```
{
"SignatureUpdatesEnabled": true,
"SignatureUpdateSchedule": "weekly",
"SignatureUpdateEndpoint": "https://signatures.turkmenguard.local/v1/manifest.json",
"CheckUpdatesOnStartup": true,
"LastSignatureVersion": null,
"LastSignatureUpdate": null
}
```
## 项目结构
```
TurkmenGuard/
├── TurkmenGuard.sln
├── README.md
├── screenshot-main.png
├── start.bat / publish.bat
├── backend/
│ └── manifest.sample.json # Пример API backend
├── Data/
│ ├── hash-signatures.json # Fallback / dev
│ └── hash-signatures.db # ClamAV SQLite (~540k, ~95 MB)
├── Rules/ # 6 YARA правил
├── tools/
│ ├── setup-clamav.ps1 # ClamAV engine + CVD setup (v4.2)
│ ├── force-stop.ps1 # Force stop all AV processes
│ ├── download-clamav-zip.ps1 # Resumable engine zip download
│ ├── import-clamav-db.py # ClamAV CVD → SQLite (fallback)
│ ├── build-hash-db.ps1 # JSON → SQLite (dev)
│ └── capture.py
├── ThirdParty/
│ └── ClamAV/ # Portable ClamAV 1.5.3 + CVD (в git)
├── docs/
│ └── DEVELOPERS.md # Онбординг для команды
├── src/TurkmenGuard/
│ ├── Core/
│ │ ├── ScannerEngine.cs
│ │ ├── ClamAvEngine.cs # clamd + clamdscan (v4.2)
│ │ ├── YaraScanner.cs # libyara.NET
│ │ ├── HashChecker.cs
│ │ ├── HashDatabase.cs # SQLite O(1) lookup
│ │ ├── EntropyAnalyzer.cs
│ │ ├── ScanPolicy.cs
│ │ └── ScanModels.cs
│ ├── Services/
│ │ ├── SignatureUpdateService.cs
│ │ ├── AppSettings.cs
│ │ └── ...
│ ├── Monitoring/ # RealTimeGuard, ProcessMonitor
│ ├── Quarantine/
│ ├── Security/ # Single-instance only
│ ├── ViewModels/ + Views/
│ ├── Themes/Colors.xaml
│ └── Localization/ # tk / ru / en
└── tests/TurkmenGuard.Tests/
```
## 库 (NuGet)
| 包 | 版本 | 用途 |
|-------|--------|------------|
| **MaterialDesignThemes** | 5.1.0 | UI Material Design 3 |
| **MaterialDesignColors** | 3.1.0 | 调色板 |
| **Microsoft.O365.Security.Native.libyara.NET** | 4.5.5 | YARA 引擎 (.NET Framework 4.8) |
| **CommunityToolkit.Mvvm** | 8.2.2 | MVVM |
| **System.Data.SQLite.Core** | 1.0.118 | Hash DB SQLite |
| **System.Text.Json** | 8.0.5 | settings.json, manifest |
| **System.Management** | 8.0.0 | WMI ProcessMonitor |
| **cvdupdate** (Python) | 1.2+ | 下载 ClamAV CVD (dev/build) |
| **ClamAV** (bundled) | 1.5.3 | 完整的 libclamav 引擎 (portable x64) |
## 磁盘路径
| 用途 | 路径|------------|------|
| 设置 | `%AppData%/TurkmenGuard/settings.json` |
| ClamAV engine | `{exe}/ClamAV/` (clamscan, clamd, clamdscan) |
| ClamAV CVD DB | `{exe}/ClamAV/database/*.cvd` |
| ClamAV logs | `%AppData%/TurkmenGuard/clamav/` |
| Hash DB (runtime) | `%AppData%/TurkmenGuard/hash-signatures.db` |
| 日志 | `%AppData%/TurkmenGuard/logs/` |
| 隔离区 | `%ProgramData%/TurkmenGuard/Quarantine/` |
| YARA rules | `{exe}/Rules/` |
| 内置 DB | `{exe}/Data/hash-signatures.db` |
## 更新日志 (Changelog)
### v4.5.2 (2026-07-14) —— 温和的 YARA,仅针对真实威胁
- **YARA v4.5.2 strict** —— 规则要求同时满足 2-4 个指标(而不是单一的 `powershell` 或 `Quasar`)
- 禁用了产生噪音的 `lateral_movement`(文件后缀为 `.yar.disabled`)
- Macro/LOLBin/Persist/Stealer/Miner/RAT —— 已针对真实攻击链重写
- Quick Scan —— 仅限 ClamAV;Full/SingleFile —— 严格的 YARA
### v4.5.1 (2026-07-14) —— 误报、Quick Scan 速度、RT+进程
- **Quick Scan** —— 仅使用 ClamAV (不含 YARA);YARA 保留在 Full 和“文件扫描”中
- **Quick Scan 更快** —— 移除了 `%TEMP%`,跳过压缩包/DLL/PDF,使用 3 个并行线程
- **YARA heuristics** (LOLBin, Macro, PS_Downloader…) —— severity Medium;在 Full 中仅为 Critical
- **Real-time** —— 开启时会自动启动**进程监控**(新的 .exe)
- ProcessMonitor:间隔 5 秒(原为 10 秒)
### v4.5.0 (2026-07-14) —— 部署 + GitHub
- **GitHub:** https://github.com/Zcxczcxcz/TurkmenGuard —— 仓库中包含 ClamAV engine + CVD + hash DB + YARA
- **docs/DEVELOPERS.md** —— 面向 frontend/backend 团队的入职指南
- **backend/README.md** —— 特征码 API 规范
- **publish.bat** + `tools/publish-release.ps1` —— 生成约 1.1 GB 的发行版
- **DetectionFilter v2** —— PUA/PUP/Adware → Info,Quick/Full/RealTime 仅限 **High+**
- 排除项:`node_modules`, `.git`, WinSxS, AppData\Local\Programs
- 重置计数器,defaults:RealTime/ProcessMonitor/AutoQuarantine **off**
- `tools/reset-user-settings.ps1` —— 重置 `%AppData%\TurkmenGuard\settings.json`
- csproj:不复制 `unpacked/`, `UserManual/`, `clamav-download/`
- `.gitignore`:`dist/`, pdb/lib ClamAV;运行时引擎包含在 git 中
- **SelfProtectionService** —— 在 headless 测试中无 NRE
### v4.4.1 (2026-07-14) —— 误报、停止、主题
- **DetectionFilter** —— 在 Quick/Full 扫描中隐藏 PUA/PUP/Heuristics、entropy 和 Medium;仅保留 High+
- **默认排除项**:`C:\Windows`, `Program Files`, `Program Files (x86)`
- Entropy 仅在 **Full Scan** 时运行(不在 Quick 中)
- Hash DB fallback 仅用于 **High+** 特征码
- **“取消”按钮** —— 修复了 CanExecute(之前在扫描期间被禁用)
- **任务计划程序** —— 当 `LastScheduledScan == null` 时,不再每小时重启扫描
- **主题** —— MainWindow 中的 `DynamicResource` + 切换主题时更新 CardHover
- AutoQuarantine 默认**关闭**
- Dashboard 上的威胁计数器 —— 仅显示 High+(过滤掉 PUA 噪音)
### v4.4.0 (2026-07-14) —— 审计:稳定性 + 性能
**阶段 1 —— 关键修复:**
- **ClamAV pipe-deadlock** —— `BeginOutputReadLine`/`BeginErrorReadLine`,超时后保证执行 `Kill()`
- **自动隔离死锁** —— `QuarantineChanged` 在 `lock` 外部,在 UI 中使用 `BeginInvoke`
- **自我保护** —— 优先级设为 `Normal`,移除对 `AppData`/日志的 watcher,限制篡改通知频率
- **ProcessMonitor** —— dispose 所有 `Process`/WMI,保障可重入性
- **Logger** —— 缓冲 `StreamWriter`,10 MB / 14 天轮换
- **ClamAV daemon** —— 每 60 秒进行一次健康检查 + 自动重启;bulk/realtime 无需逐个文件执行 `clamscan`(使用 YARA+hash fallback)
**阶段 2 —— HIGH/MEDIUM:**
- 解压规则时的 Zip Slip 保护
- Hash DB:在 `File.Copy` 之前关闭 SQLite
- 修复 `ScannerEngine` 中的竞态条件 (`Interlocked`, `_ctsLock`)
- RealTimeGuard:修复了反向过滤器 (`||`),清理了 `_debounce`
- HashDatabase TOCTOU,用于托盘的 UI marshalling,取消订阅托盘事件
**阶段 3 —— 优化:**
- 隔离区:通过 **DPAPI** (`ProtectedData`) 获取密钥,实现事务性,恢复时不覆盖
- Entropy `Log2` 缓存,带引号的 `explorer.exe` 路径
**测试:** 16/16 PASS (如果 Defender 删除了文件,EICAR 会 SKIP)
### v4.3.1 (2026-07-13)
- **stop-turkmenguard.bat** —— 强制停止所有进程并禁用自启/自我保护
- `tools/force-stop.ps1` —— 用于 force stop 的 PowerShell 脚本
- **force-stop v2** —— `taskkill /F /T` (进程树),3 次遍历,通过 `ClamAV` 路径搜索,在 `.bat` 中自动请求管理员权限,在 kill **之前**禁用设置/注册表
- **修复了**同时进行扫描和实时保护时的卡死现象
- 一次仅运行一个 `clamscan`(全局信号量)—— 笔记本电脑不再“假死”
- Real-time:使用队列代替数百个并行的 Task;在 bulk 扫描期间暂停
- UI:`BeginInvoke` + 进度节流(不阻塞界面)
- ClamAV:优先级设为 BelowNormal,real-time 超时为 30 秒
### v4.3.0 (2026-07-13)
- **YARA 规则包扩展**:从 6 个增加到 **23 个文件**,**74 条编译规则**
- 新分类:credential theft, persistence, webshells, macros, miners, AMSI bypass, RAT, lateral movement, stealers, WMI, LOLBins
- **自动启动**:注册表中的 `--tray` 参数,在系统托盘启动,`SyncEnabled()` / `IsRegistryCorrect()`
- **自我保护**:FileSystemWatcher,integrity check,registry watchdog,优先级设为 AboveNormal
- 扩展了 `YaraScanner` 中的 severity 映射(针对 RAT/webshell/AMSI 设为 Critical)
- 测试:**17/17 PASS** (YARA heuristics, autostart, self-protection)
- 本地化:篡改通知 (en/ru/tk)
### v4.2.0 (2026-07-13)
- **完整的 ClamAV engine**:便携版 1.5.3 x64 (`clamscan`, `clamd`, `clamdscan`, `freshclam`)
- `Core/ClamAvEngine.cs` —— clamd 守护进程 + clamdscan,fallback clamscan
- 流水线:**ClamAV → YARA → Entropy** (hash SQLite 仅作为 fallback)
- `tools/setup-clamav.ps1` —— 自动安装 engine + CVD
- `tools/download-clamav-zip.ps1` —— 从 GitHub/clamav.net 续传下载 zip (curl `-C -`,校验 zip CRC)
- `setup-clamav.ps1`:解压时保留 `database/`;修复了 `cvdupdate` 的调用;zip 大小精确为 229959640 字节
- `SignatureUpdateService` —— 通过 `freshclam` 更新 CVD
- Dashboard:ClamAV 状态(版本、DB、守护进程)
- 扫描模型中的 `DetectionMethod.ClamAV`
### v4.1.0 (2026-07-13)
- **ClamAV hash database**:540,326 条特征码 (main.cvd + daily.cvd) 已内置于 `Data/hash-signatures.db`
- MD5 + SHA256 查询,并进行文件大小校验
- `tools/import-clamav-db.py` —— 通过 cvdupdate 构建的流水线
- Dashboard 显示 ClamAV 来源和特征码数量
- 测试:校验加载超过 10 万条记录的 DB
### v4.0.0 (2026-07-13)
- **迁移至 .NET Framework 4.8** —— 支持 Windows 7 SP1+
- 使用 **libyara.NET** 代替 YaraXSharp (仅限 net8)
- **SQLite hash database** —— `HashDatabase.cs`,内置且可更新的数据库
- **SignatureUpdateService** —— 唯一的网络模块 (weekly/manual)
- **False positives**:每个 PE section 的 entropy 为 7.95,加壳规则 → Info,自动隔离仅限 High+
- **Self-protection**:仅限 single-instance,正常退出
- 修复了 WPF temp projects 的 libyara 构建
- 特征码更新模块的本地化 (tk/ru/en)
- `tools/build-hash-db.ps1`, `backend/manifest.sample.json`
### v3.4.0 (2026-07-12)
- File Scan,托盘菜单,日志查看器
### v3.0.0 (2026-07-12)
- WPF 重构,YARA 规则,ScannerEngine
## 许可证
本项目仅用于**教育目的**。EICAR 是测试文件,并非恶意软件。
标签:AI合规, ClamAV, .NET Framework, Web 安全测试, WPF, YARA, 云资产可视化, 终端安全, 网页爬虫, 跨平台, 防病毒软件