XWORMKILLER · v4.6.0 · Windows x64 · .NET 8
Один exe. Без установки. Без телеметрии. Ищет закрепление, RAT-подобные процессы, хайджекеты реестра и подозрительные файлы — и умеет это чинить.
Если инструмент тебе помог — звезда это лучшая благодарность. Она стоит один клик, а проекту помогает быть заметнее.
| Что это | Возможности | Что проверяет |
| Интерфейс | Быстрый старт | CLI |
| Карантин | Защита в реальном времени | Служба |
| Сборка | Архитектура | FAQ |
| Реакции | Участие | Лицензия |
XwormKiller — портативный сканер и чистильщик Windows-закрепления. Он не пытается быть антивирусом с облаком и эвристиками на 500 МБ. Он делает одну вещь хорошо: проходит по всем местам, куда RAT, стилер или майнер обычно прописывается, оценивает каждую находку по весам и даёт понять, что с ней делать.
Три принципа, на которых всё построено:
- Три прохода вместо одного. Файл сначала оценивается эвристикой (
ThreatAnalyzer), затем глубоким разбором (DeepScan: PE-секции, энтропия, контейнеры, макросы, скрипты), затем подтверждающим проходом (Confirm), который отсекает ложные срабатывания по структуре, поведению и контексту. - Ничего не удаляется молча. В безопасном режиме автоматически обрабатываются только находки с высоким score, остальное уходит в отчёт и ждёт решения. Всё удалённое сначала попадает в карантин с SHA256 и исходным путём.
- Сканер не должен выглядеть как малварь. Строки семейств и маркеры хранятся в base64 и собираются в памяти при старте — именно из-за открытых строк вида
XWorm/RedLineантивирусы раньше принимали сам сканер за вредонос.
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐
│ 16 этапов │ ──▶ │ ThreatAnalyzer│ ──▶ │ DeepScan │ ──▶ │ Confirm │
│ закрепления │ │ веса+подписи │ │ PE/контейнер │ │ анти-FP │
└──────────────┘ └──────────────┘ └──────────────┘ └──────┬──────┘
│
┌───────────────────────────┴──────────┐
▼ ▼
score ≥ 110 → карантин отчёт TXT / JSON
score ≥ 120 → удаление решение пользователя
|
|
|
|
| # | Этап | Что ищет |
|---|---|---|
| 1 | Автозапуск (реестр) | Run / RunOnce, неизвестные бинарники, аргументы с -enc, mshta, rundll32 |
| 2 | Active Setup | StubPath, который выполняется при входе в систему |
| 3 | Папки автозапуска | Startup пользователя и Common, разрешение .lnk до цели |
| 4 | Winlogon / AppCertDlls | подмена Shell/Userinit, сторонние AppCertDlls |
| 5 | IFEO / SilentProcessExit | Debugger-хайджеки и тихий запуск при завершении процесса |
| 6 | Службы и драйверы | ImagePath, неподписанные драйверы, путь вне System32, svchost-маскировка |
| 7 | Задачи планировщика | скрытые задачи, HighestAvailable, запуск PowerShell/CMD из Temp |
| 8 | WMI-подписки | постоянные __EventFilter + CommandLineEventConsumer |
| 9 | COM-хайджеки | переопределения CLSID в HKCU, DLL вне System32 |
| 10 | Политики браузеров | принудительные расширения, HomepageLocation, прокси-политики |
| 11 | LSA / AppInit / Print | Authentication Packages, AppInit_DLLs, print monitors, netsh helpers |
| 12 | Исключения Defender | добавленные вручную пути и процессы |
| 13 | Прокси и ассоциации | системный прокси, подмена обработчиков файлов |
| 14 | hosts |
перенаправления доменов антивирусов и обновлений |
| 15 | Процессы | маскировка имён, подозрительный родитель, командная строка, путь запуска |
| 16 | Сеть | netstat -ano, RAT-порты, внешние соединения и привязка к PID |
| Score | Уровень | Что происходит в --safe |
Что происходит в --aggressive |
|---|---|---|---|
| 0–39 | Clean | только отчёт | только отчёт |
| 40–79 | Low | только отчёт | отчёт |
| 80–110 | Suspicious | отчёт + решение пользователя | авто-действие при score ≥ 100 |
| 111–120 | Malicious | карантин | карантин |
| 121+ | Malicious | удаление | удаление |
Точные веса и правила лежат в
ThreatAnalyzer,DeepScanиConfirm. Проверка подтверждения отсекает подписанные системные файлы, известные good-пути и файлы без behavioural-маркеров.
Каждый изолированный файл — это пара:
quarantine/
├── 2026-11-02_18-23-20_ab12cd34.exe ← сам файл
├── 2026-11-02_18-23-20_ab12cd34.info.txt ← путь, SHA256, score, причины
└── index.tsv ← журнал: изоляция / восстановление
Тёмная тема, ничего лишнего: сверху — статус и кнопки, в центре — таблица находок, справа от неё — действия.
|
Шапка
Панель действий
|
Таблица находок
Кнопки решения
|
Трей: автозапуск, задача планировщика, расписание (1 / 6 / 12 / 24 / 72 ч), исключения Defender, доверенные файлы, установка службы.
Диалоги: Карантин (восстановить один / все), Доверенные файлы, Справка с полным списком ключей.
Возьми последний XwormKiller.exe из Releases. Один файл, ничего ставить не нужно.
XwormKiller.exe
| Сценарий | Команда |
|---|---|
| Обычная проверка в окне | XwormKiller.exe |
| Тихая проверка для скрипта | XwormKiller.exe -s --no-pause |
| Проверить один файл | XwormKiller.exe --scan-file "C:\Users\me\Downloads\file.exe" |
| Агрессивная очистка | XwormKiller.exe -a |
| Только иконка в трее | XwormKiller.exe --tray |
Отчёты лежат рядом с exe:
logs\XwormKiller_2026-11-02_18-23-20.txt
logs\XwormKiller_2026-11-02_18-23-20.json (с --json)
- Windows 10 / 11, x64
- Права администратора — только для действий с
HKLM, службами, драйверами, исключениями Defender и точкой восстановления - .NET 8 не нужен: релиз собран как self-contained single-file
XwormKiller.exe [режим] [ключи]
| Ключ | Описание |
|---|---|
| (без ключей) | GUI |
-s, --safe |
Проверка и отчёт. Файлы: score > 110 → карантин, > 120 → удаление. Остальное — решение пользователя |
-a, --aggressive |
Проверка + автодействия по всем находкам, порог авто-действий score ≥ 100 |
| Ключ | Описание |
|---|---|
--gui |
Открыть окно, даже если указаны другие ключи |
-n, --no-pause |
Без вопросов и паузы, только отчёт |
--fast |
Быстрая проверка: автозапуск, службы, процессы, сеть |
--json |
Дополнительно сохранить JSON-отчёт |
--ascii |
Только ASCII (старые консоли и шрифты) |
--no-restore-point |
Не создавать точку восстановления |
--quarantine |
Показать карантин и выйти |
--restore <N|all> |
Вернуть файл №N или всё |
--autostart / --autostart-on / --autostart-off |
Состояние и управление автозапуском (HKCU\...\Run) |
--task-status / --task-on / --task-off / --task-xml |
Задача планировщика с highest privileges |
--scan-file <путь> |
Проверить файл или папку |
--defender-exclude |
Добавить программу в исключения Defender |
--service-status / --service-install / --service-uninstall / --service-start / --service-stop |
Служба LocalSystem |
--tray |
Тихий запуск, только трей |
-h, --help |
Справка |
-v, --version |
Версия |
| Переменная | Действие |
|---|---|
XK_WIDTH |
Принудительная ширина консольного вывода |
XWORMKILLER_SCAN_NOW=1 |
Запустить фоновое сканирование службы сразу, не ждать интервал |
# посмотреть
XwormKiller.exe --quarantine
# вернуть конкретный файл
XwormKiller.exe --restore 3
# вернуть всё
XwormKiller.exe --restore allВ GUI: кнопка Карантин → выбор записи → Восстановить.
При восстановлении файл возвращается на исходный путь; если путь занят или недоступен, запись остаётся в карантине и попадает в лог.
RealtimeGuard работает в двух плоскостях:
| Что | Как |
|---|---|
| Файловая система | FileSystemWatcher на Temp, AppData, Downloads, Desktop, Startup |
| Реестр | периодический опрос Run / RunOnce в HKCU и HKLM |
| Реакция | ThreatAnalyzer.AnalyzeFile → порог score → карантин |
| Исключения | доверенные файлы и папки, настройки в %APPDATA%\XwormKiller\settings.json |
Настройки:
{
"Realtime": true,
"AutoQuarantine": true,
"ScanOnStart": true,
"AutoStart": false,
"ScanIntervalHours": 24
}Лог: logs\guard.log.
Служба даёт защиту до входа в систему и работает от LocalSystem:
# установить (нужен администратор)
XwormKiller.exe --service-install
# состояние
XwormKiller.exe --service-status- Данные службы:
%ProgramData%\XwormKiller - Периодическое сканирование: 1 / 6 / 12 / 24 / 72 часа (настраивается в трее)
- Уведомления в сессию пользователя:
ServiceNotify(CreateProcessWithTokenW+WTSQueryUserToken) - Если уведомление доставить не удалось — запись в
logs\notifications.log
# обычная сборка
dotnet build -c Release
# портативный single-file exe (как в релизе)
dotnet publish -c Release -r win-x64 --self-contained true `
-p:PublishSingleFile=true `
-p:EnableCompressionInSingleFile=true `
-p:IncludeNativeLibrariesForSelfExtract=true `
-o publish
# подпись (самоподписанный сертификат из signing\)
powershell -NoProfile -ExecutionPolicy Bypass -File signing\make-cert.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File signing\sign.ps1Подпись накладывается после публикации: любая пересборка снимает её.
XwormKiller/
├── Program.cs # точка входа, сканер, эвристика, GUI, трей, отчёты
├── Guard.cs # RealtimeGuard, настройки, доверенные пути
├── DeepScan.cs # глубокий разбор PE, контейнеров, скриптов, Office
├── Confirm.cs # подтверждающий проход и вердикты (анти-FP)
├── ServiceHost.cs # ServiceMain / ControlHandler для SCM
├── ServiceMode.cs # тело службы, каталог ProgramData
├── ServiceScanner.cs # периодическое фоновое сканирование
├── ServiceNotify.cs # уведомления из сессии 0 в сессию пользователя
├── Sigs.cs # base64-подписи семейств
├── Tokens.cs # base64-токены маркеров
├── app.ico / app.manifest
├── XwormKiller.csproj
└── signing/ # make-cert.ps1, sign.ps1, .cer, README
flowchart TD
A[Main / GUI] --> B[BuildStages · 16 этапов]
B --> C[ThreatAnalyzer]
C --> D[DeepScan]
D --> E[Confirm]
E --> F{Score}
F -->|≥ 120| G[Удаление]
F -->|≥ 110| H[Карантин]
F -->|иначе| I[Отчёт + решение]
H --> J[quarantine/ + index.tsv]
I --> K[logs/TXT + JSON]
G --> K
L[RealtimeGuard] --> C
M[ServiceScanner] --> C
N[Tray / Autostart / Task] --> A
| Класс | Ответственность |
|---|---|
Program |
Точка входа, режимы, этапы скана, действия, отчёты |
ThreatAnalyzer |
Веса, сигнатуры, PE/скрипты/контейнеры, подпись, whitelist |
DeepScan |
Глубокий разбор файлов и архивов |
Confirm |
Подтверждение вердикта, анти-FP, FileVerdict |
RealtimeGuard |
Наблюдение за папками и Run-ключами |
ServiceHost / ServiceMode |
Служба LocalSystem |
ServiceScanner |
Периодические проверки |
ServiceNotify |
Уведомления в пользовательскую сессию |
KillerForm |
GUI: таблица находок, действия, трей |
QuarantineDialog / TrustedDialog / HelpDialog |
Диалоги |
Почему Windows Defender ругается на сам сканер?
Эвристический сканер содержит PE-разбор, работу с автозапуском и строками семейств — по поведению это похоже на малварь. Поэтому строки хранятся в base64, а в трее есть два пункта:
- Windows Defender → Исключить программу (нужен админ)
- Windows Defender → Пожаловаться на ложное срабатывание (открывает форму Microsoft и копирует SHA256)
SmartScreen пишет «Неизвестный издатель». Это нормально?
Да. Релиз подписан самоподписанным сертификатом: на этом ПК подпись валидна, на чужих — нет. Для нулевого предупреждения нужен покупной OV/EV-сертификат либо накопленная репутация.
Нужны ли права администратора?
Для пользовательского сканирования — нет. Для HKLM, служб, драйверов, установки службы, исключений Defender и точки восстановления — да. В шапке GUI показывается АДМИНИСТРАТОР или БЕЗ ПРАВ.
Куда уходят данные?
Никуда. Нет сети, нет телеметрии, нет облака. netstat читается локально, отчёты пишутся рядом с программой. Ссылка на VirusTotal открывается только по клику в контекстном меню.
Есть 32-битная версия?
Нет, только x64. Сборка win-x64, PlatformTarget=x64.
Можно запускать с флешки?
Да. Программа портативная: карантин, логи и настройки создаются рядом с exe (для службы — в %ProgramData%\XwormKiller).
Сканер что-то нашёл, но это точно не вирус. Что делать?
Выдели находку → правый клик → Доверять файлу (исключение). Путь попадёт в settings.json и больше не будет считаться угрозой. Для проверки вердикта используй Подробности — там список причин и score.
Ставь реакцию на закреплённый issue «Реакции» — так видно, чего проекту не хватает:
| Реакция | Значение |
|---|---|
| ⭐ | «Пользуюсь, спасибо» |
| 🐛 | «Нашёл баг» — лучше сразу в Bug report |
| 💡 | «Есть идея» — в Feature request |
| 🛡️ | «Ложное срабатывание» — в False positive |
| 🔥 | «Нужна версия под мой сценарий» |
| ❤️ | «Просто нравится» |
Если не жалко — кинь ссылку туда, где сидят люди с той же проблемой:
https://github.com/Manyl123/XwormKiller
- Форкни репозиторий.
- Сделай ветку:
git checkout -b feature/my-change. - Собери и проверь:
dotnet build -c Release. - Открой PR по шаблону — опиши, что меняется и как это проверить.
Правила простые: один PR — одна тема, без рефакторинга «заодно», новые эвристики — с примером файла или понятным описанием условия.
См. CONTRIBUTING.md, SECURITY.md и CHANGELOG.md.
- YARA-правила как дополнительный источник весов
- Проверка хеша через VirusTotal API (опционально, по ключу)
- Экспорт находок в CSV / SIEM (CEF, JSON Lines)
- Тёмная/светлая тема на выбор
- Английская локализация интерфейса и отчётов
- Подпись релизов OV-сертификатом
- Плагины для собственных проверок
MIT — см. LICENSE.