andrei-ag/xpl_av

GitHub: andrei-ag/xpl_av

一款用汇编语言编写的教育性防病毒软件,通过自定义 x86 仿真器实现多态病毒检测与 PE 文件清除。

Stars: 0 | Forks: 0

# 🛡️ Explosion Antivirus [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0) [![Language](https://img.shields.io/badge/ASM-99.7%25-orange)](https://github.com/andrei-ag/xpl_av) [![Version](https://img.shields.io/badge/version-012BETA-red)](https://github.com/andrei-ag/xpl_av/releases) **一款具有教育意义的防病毒软件,展示了 PE 文件清除、自定义 x86 仿真和多态病毒检测技术。** ## 项目理念:为何开发此项目 Explosion Antivirus **不是**一款商业产品。它以前不是,以后也不会是。它的目的纯粹是**教育性的**。\ 该项目的建立基于以下几个核心理念: ### 1. 教育重于商业 首要目标始终是**展示**防病毒技术的工作原理,而不是推销产品。编写代码是为了供人阅读、研究和学习。每个主要组件都有俄语和英语的双语文档。 ### 2. 概念验证重于产品 本质上,这是一个**概念验证**。目的是为了展示 ### 3. 仿真重于特征码 自定义的 x86 仿真器是这个项目的灵魂。仿真任意代码、创建 sandbox 的能力,远比一长串病毒特征码重要得多。仿真器的存在是为了教育;而特征码数据库的存在仅仅是为了测试仿真器。 ### 4. 开放重于保密 这段代码是开源的,其许可证 (GNU GPL) 保证了它将一直保持下去。本代码库可作为低级编程、逆向工程和安全研究的活教材。 ### 5. 质量重于速度 这个项目是用**汇编语言**编写的——并不是因为这条路最轻松,而是因为它展示了对计算机底层工作原理深入且毫不妥协的理解。这段代码旨在成为工程和教育上的杰作。 ## 🎯 核心特性 ### 🧠 自定义代码仿真器 (x86 Assembly) - 实现了一个完全从零开始用汇编语言编写的 **x86 指令仿真器**(占代码库的 99.7%)。 - 能够仿真在 **Win32/Driller**(平均解密器大小约为 9 KB,并使用复杂的反仿真 API 调用)、**Win9X/Prizzy**(使用 FPU/MMX 指令作为垃圾代码)、**Win32/Deadcode**(使用 PEB)、**W95/Marburg**、**W32/Krized** 和 **W32/Thorin** 等病毒中发现的多态解密器。 - 包含一个**循环检测器**,以避免陷入漫长的解密循环中。 - **仿真 31 个 Windows API 调用**(例如 `GetTickCount`、`GetVersion`、`GetCommandLineA`、`IsBadReadPtr`),以绕过常见的反仿真伎俩。 ### 🩺 病毒清除(在开源项目中非常罕见) 该防病毒软件不仅能检测,还能**移除病毒代码并恢复被感染的 PE 文件**。清除例程在版本 010 中实现,支持: - ✅ **Win32/Parite.b** - ✅ **W32/Krized [4029]**(感染 `KERNEL32.DLL`) - ✅ **Win32/Funlove [4099]** - ✅ **W95/Marburg [8582]** ### 🔍 PE 文件分析与转储 - 深度分析 **Portable Executable (PE)** 结构(头、节、导入/导出表)。 - 可选择为解密后的病毒主体创建**内存转储**(`/d` 键),以便进行进一步分析。 - 输出检测到的循环的调试信息(`/di` 键)。 ### 🖥️ 命令行界面 - 通过命令行驱动,提供灵活的扫描选项。 - 支持扫描报告(`/rc`, `/ra`)、递归扫描(`/*`)以及清除(`/c`)。 ## 💎 本项目的独特之处 与大多数开源防病毒项目相比,Explosion Antivirus 具有几个显著的特点: | 方面 | Explosion Antivirus | 大多数开源防病毒软件 | | :--- | :--- | :--- | | **代码仿真** | ✅ 使用 ASM 编写的自定义 x86 仿真器 | ❌ 或使用外部库 (Unicorn) | | **多态病毒检测** | ✅ W32/Driller, Win9X/Prizzy, W95/Marburg | ❌ 大多基于特征码 | | **清除 (Curing)** | ✅ Parite, Krized, Funlove, Marburg(在 010 版本中) | ❌ 仅支持检测 | | **API 仿真** | ✅ 31 个 Windows API 函数 | ❌ 非常罕见 | | **语言** | 汇编语言 (99.7%) | C/C++/Python | ## 🚀 快速开始 ### 构建要求 - **Flat Assembler (fasm)** 版本 1.67.29 或兼容版本。 - 所有必要的 FASM 包含文件均可在 `FASM_INC/` 目录中找到。 ### 构建说明 ``` fasm.exe xpl.asm ``` ## 📂 仓库结构 | 目录/文件 | 描述 | | :--- | :--- | | `DATA/` | 防病毒软件的静态数据 | | `DET/` | 检测例程(特征码、解包器) | | `DOCS/` | 文档(俄文) | | `EMUL/` | 核心仿真器和 API 仿真 | | `FASM_INC/` | Flat Assembler 包含文件 | | `FILE/` | PE 加载、导入解析、转储 | | `INCLUDE/` | 通用包含文件 | | `SECTIONS/` | PE 节结构定义 | | `det/cure/` | 特定病毒的清除例程 | | `disasm/` | 自定义 x86 反汇编器 | | `LICENSE.txt` | GNU 通用公共许可证 v3 | | `XPL.ASM` | 主源代码文件 | ## 📚 相关出版物与历史注记 以下文章由本人撰写,旨在解释 Explosion Antivirus 中实现的核心技术。它们提供了有关仿真器、代码分析器和反仿真技术设计的理论基础和实践见解。这些文章极大地受益于 **UINC.ru 团队** 的帮助与支持,特别感谢 **Dr.Golova** 的宝贵贡献。 建议的阅读顺序遵循从基础仿真架构到高级分析及漏洞测试的逻辑流程。 1. **“代码仿真”** (2004年2月15日) *x86 仿真器的架构:虚拟堆栈、虚拟寄存器、“沙盒化”的指令执行 (`run_instr`),以及复杂指令 (`call`、`ret`、条件跳转) 的完整仿真。* [存档版本](https://web.archive.org/web/20051215194308/http://uinc.ru:80/articles/47/) 2. **“防病毒软件中的代码分析器”** (2004年2月24日) *Delta 值检测(搜索 `call $+5`/`pop reg` 例程)、带通配符 (`'?'`) 的特征码匹配,以及加壳器检测器(例如 UPX)。* [存档版本](https://web.archive.org/web/20051215213447/http://uinc.ru:80/articles/45/) 3. **“代码仿真器的漏洞”** (2004年4月6日) *反仿真技巧(Delta 值、初始 EAX 值、`idiv32` 测试、API 调用),以及针对当时流行的防病毒引擎的真实测试结果。* [存档版本](https://web.archive.org/web/20051215200738/http://uinc.ru:80/articles/48/) 这些文章构成了 Explosion Antivirus 许多组件的理论基础,最初发表在 *UInC.ru* 上(现通过 Wayback Machine 保存)。防病毒软件的完整源代码在此代码库中提供,作为所述技术的实际实现。 ## 🚀 用法 XPL.EXE { KEYS } { PATH } | 键 | 描述 | | :--- | :--- | | `/rc` | 创建扫描报告 (`xplosion.rep`) | | `/ra` | 附加到现有报告中 | | `/*` | 扫描所有固定驱动器 | | `/c` | **清除被感染的文件**(清除模式) | | `/d` | 创建扫描到的 PE 文件的内存转储 | | `/di` | 显示循环检测信息(调试) | | `/t-` | 禁用仿真计时器(可能导致挂起) | **示例:** ### 扫描目录并清除被感染的文件 ``` XPL.EXE /c C:\samples\ ``` ### 扫描所有驱动器并创建报告 ``` XPL.EXE /* /rc ``` ## 📄 许可证 本项目基于 GNU 通用公共许可证 v3 授权。许可证副本包含在代码库中 (LICENSE.txt)。为方便起见,还提供了非官方的俄文翻译版本。
标签:x86模拟器, 云资产清单, 安全报告生成, 快速连接, 恶意软件检测与清除, 汇编语言, 端点可见性, 逆向工程