Renaming mixin classes and patching mixins.json (
|
||
|---|---|---|
| crates | ||
| docs | ||
| info | ||
| scripts | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE | ||
| NOTICE.md | ||
| README.md | ||
Читает JAR, переписывает классовые файлы и ресурсы, собирает обратно: детерминированно, с маппингами для stack trace и с проверкой, что выход действительно загружается настоящей JVM.
Статус
Ядро построено, большая часть техник реализована.
| блок | состояние |
|---|---|
| IR классовых файлов, метки вместо смещений | ✅ |
| конфиг, детерминированный PRNG, маппинги, отчёт | ✅ |
| анализ: иерархия, entrypoint'ы, keep-правила | ✅ |
format::parse/write + кадры StackMapTable (backend ristretto_classfile) |
✅ |
| пассы: rename, resources, strings, constants, noise, debug | ✅ |
верификация: red-паттерны, java -Xverify:all, метрики |
✅ |
CLI (obfuscate / analyze / patterns) |
✅ |
| пасс flow (кадры готовы, 4 схемы: state-spread, computed-switch, butterfly, exception-goto) | ✅ |
Подробности в docs/architecture.md, план в todo.md.
Быстрый старт
./scripts/check.sh # fmt + clippy -D warnings + тесты
# обфускация jar: конвейер, маппинги, JSON-отчёт
cargo run -p noxis -- obfuscate input.jar -o output.jar --seed 42
# что внутри jar: классы, entrypoint'ы, keep-правила (без изменений)
cargo run -p noxis -- analyze input.jar
# красный список паттернов: показать или прогнать по jar'у
cargo run -p noxis -- patterns --list
cargo run -p noxis -- patterns --input output.jar
obfuscate по умолчанию включает все готовые пассы. Флаги --no-rename,
--no-strings, --no-constants, --no-noise, --no-resources, --no-debug-info,
--no-flow выключают их по отдельности.
Структура
noxis/
├── Cargo.toml workspace, lints, release-профиль
├── scripts/check.sh structure → fmt → clippy → test
├── docs/ архитектура, техники, стек, уроки
├── info/ исходный материал разбора (вне правил)
└── crates/
├── noxis-classfile/ IR + парсер/запись + StackMapTable
├── noxis-core/ конфиг, seed, маппинги, контракт Pass
├── noxis-analysis/ иерархия, entrypoint'ы, keep
├── noxis-passes/ сами трансформации + конвейер
├── noxis-runtime/ схемы шифрования, ABI декодера
├── noxis-jar/ ZIP, ресурсы, срез подписей
├── noxis-verify/ red-паттерны, java -Xverify, метрики
├── noxis/ CLI: obfuscate, analyze, patterns
└── noxis-structure-check/ автогейт структуры
Документация
| документ | что внутри |
|---|---|
docs/README.md |
индекс и структурные правила проекта |
docs/architecture.md |
слои, крейты, IR, конвейер |
docs/techniques.md |
как работает каждая техника, плюсы и минусы |
docs/stack.md |
почему свой IR, backend, StackMapTable, PRNG |
docs/learnings/lessons.md |
уроки разбора: чего делать нельзя |
docs/learnings/reference.md |
разбор референсного обфускатора |
docs/learnings/priorities.md |
что улучшаем и в каком порядке |
docs/learnings/ai-resistance.md |
новые техники (MBA, виртуализация) и устойчивость к LLM-анализу |
Исходный материал разбора в info/README.md.
Лицензия
AGPL-3.0-only, см. LICENSE.
Проект остаётся полностью открытым: его можно изучать, использовать (в том числе
коммерчески) и изменять. Условие AGPL: любые производные работы, которые
распространяются или доступны пользователям по сети, обязаны публиковаться под
той же лицензией. Это защищает noxis от закрытых форков, которые перепродают
его как готовый продукт.
Сторонние зависимости и их лицензии в NOTICE.md.
Ответственное использование
noxis это инструмент двойного назначения, одинаково полезный для защиты
собственного байткода и способен усложнять анализ вредоносного ПО. Лицензия
это не регламентирует, но это норма сообщества проекта:
- используйте обфускацию, чтобы защищать свой код и код тех, кто вас об этом попросил;
- не применяйте инструмент для упаковки вредоносов, обхода средств защиты и антивирусов или иной деятельности, запрещённой законом.
Нарушение этих норм не влечёт юридических последствий по лицензии, но приведёт к отказу в поддержке и закрытию issue/PR в репозитории.