Языки: English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Русский | العربية
- Скелет каталогов и CMake (библиотека
nevercDynCode) -
ZeroRelocPass: двухфазный (Prep + Stackify), автоматический перенос изменяемых глобалов на стек -
Data2TextPass: двухфазный (массивы констант → хранение блоками на стеке; разделение векторных констант после SROA; ConstantFP → битовые шаблоны через volatile-загрузку) -
SyscallStubPass: табличный белый список для Darwin BSD / Linux arm64 / Linux x86_64 / Android syscall -
AllBlrPass: опциональная агрессивная замена прямых вызовов на косвенные -
DynCodeExtractor: Mach-O.o→ плоский.binс патчами внутрисекционных релокаций - CLI-опции через сгенерированный
neverc/include/neverc/Invoke/Options.td.h:-fdyncode,-fdyncode-all-blr,-mdyncode-syscall,-fdyncode-keep-obj=,-fdyncode-entry= - PIC по умолчанию на всех платформах (
isPICDefault()возвращаетtrueповсеместно) - Обобщённый рекурсивный перенос на стек (таблицы указателей на функции, таблицы строковых указателей, вложенные таблицы структур, инициализаторы ConstantExpr GEP/BitCast)
-
IndirectBrPass: GCC computed-goto (&&label) → switch, включая разделение таблиц мульти-диспатч-сайтов - Инлайнинг SIMD-векторных констант (
inlineVectorConstants) - Автоматическое понижение
_Thread_localдо static - Нативный загрузчик macOS arm64 (MAP_JIT + i-cache flush)
Тесты: 108/108 dyncode-ассертов пройдено. Размеры бинарников: add 8B, fib 64B, hello 64B, big_const 632B.
- Абстракция
TargetDesc: табличные различия платформ - Кроссплатформенная семантика
-mdyncode-syscall(заменяет-mdyncode-libsystemтолько для Darwin) - Таблицы номеров syscall Linux / Android (Darwin BSD 100+, Linux arm64 130+, Linux x86_64 150+)
-
DynCodeExtractorрефакторирован вMachOExtractor/ELFExtractor/COFFExtractor - ELF-экстрактор (arm64:
R_AARCH64_CALL26/JUMP26/ADR_PREL_PG_HI21/и т.д.; x86_64:R_X86_64_PC32/PLT32) - COFF-экстрактор (arm64:
IMAGE_REL_ARM64_BRANCH26/и т.д.; x86_64:IMAGE_REL_AMD64_REL32/и т.д.) - Проход импорта PEB Windows (
WinPEBImportPass) с реальным PEB-walk-резолвером - Мульти-DLL белый список Win32 API (~210 API в kernel32/ntdll/user32/ws2_32/advapi32/shell32)
-
MemIntrinPass: memcpy/memset/memmove/memcmp/bcmp/bzero/memchr + strlen/strcpy/strcmp/и т.д. → инлайн-хелперы на основе байтовых циклов -
CompilerRtPass: деление/остаток__int128→ инлайн-хелперы длинного деления - Поддержка фронтенда Windows
aarch64-pc-windows-msvc -
MIRPrepPass: кроссплатформенное удаление псевдо-инструкций (CFI/EH/XRay/StackMap/SEH/FENTRY/и т.д.) - MIR + хуки обфускации на уровне байтов (11 хуков на уровнях IR/MIR/байтового потока)
- Автоматическое понижение AArch64 не-Darwin
long doubleдо binary64 - Шим-заголовки dyncode:
<windows.h>,<unistd.h>,<fcntl.h>,<sys/stat.h>,<sys/mman.h>,<string.h>,<stdlib.h> - Слой совместимости Windows POSIX (13 мостов POSIX→Win32: write→WriteFile, mmap→VirtualAlloc и т.д.)
- Автоисправление неявных объявлений K&R (50+ канонических POSIX-сигнатур)
- Табличная очистка (жёсткое кодирование архитектурных ветвей → ноль)
-
KernelImportPass: автоматическая перезапись callsite ring-0 с поддержкой резолвера - Табличная диагностика имён хелперов ядра (
KernelHelperNames.def) -
<neverc/dyncode/kernel.h>для конвенций точки входа ring-0 - Принудительное смещение точки входа на ноль (
placeEntryFirst) - Конвейер финализации: SDK перезаписи плохих байтов + SDK кодировщика charset + ограничения размера
- Внедеревный C-плагин API (
NevercPluginAPI.h): 11 точек подключения dyncode (NEVERC_INTERPOSE_SC_*) - Инъекция
-mno-implicit-floatдля x86_64 (предотвращает вынос SSE-констант бэкенда в пул) - Кроссплатформенные загрузчики (macOS/Linux/Windows)
Тесты: 743+ dyncode-ассертов, все пройдены на 8 тройках. Полный набор тестов NeverC: 1000+ тестов пройдено.
- ARM64 кодировщик печатного dyncode (поднабор инструкций 0x20–0x7e)
- x86_64 буквенно-цифровой кодировщик
- Генерация самодекодирующего стаба (decoder stub)
- Статистика размера / энтропии после кодирования
- Полиморфный движок: один и тот же исходный код → разные эквивалентные байтовые последовательности при каждой компиляции
- Самомодифицирующийся код: расшифровка / декомпрессия тела полезной нагрузки во время выполнения
- Антидетектирование: избегание известных шаблонов сигнатур dyncode
- iOS arm64 (подпись кода + сценарии JIT-джейлбрейка)
- Cortex-M / Thumb
- RISC-V 64