Langues: English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Русский | العربية
- Squelette répertoire & CMake (bibliothèque
nevercDynCode) -
ZeroRelocPass: deux phases (Prep + Stackify), empilage automatique des globaux mutables -
Data2TextPass: deux phases (tableaux constants → stockage en pile par morceaux ; fractionnement de constantes vectorielles post-SROA ; ConstantFP → motifs de bits chargés avec volatile) -
SyscallStubPass: liste blanche pilotée par table couvrant Darwin BSD / Linux arm64 / Linux x86_64 / Android syscalls -
AllBlrPass: réécriture agressive optionnelle des appels indirects -
DynCodeExtractor: Mach-O.o→.binplat avec correctifs de relocalisations intra-section - Options CLI via
neverc/include/neverc/Invoke/Options.td.hgénéré :-fdyncode,-fdyncode-all-blr,-mdyncode-syscall,-fdyncode-keep-obj=,-fdyncode-entry= - PIC par défaut sur toutes les plateformes (
isPICDefault()retournetrueuniversellement) - Empilage récursif générique (tables de pointeurs de fonction, tables de pointeurs de chaîne, tables de structures imbriquées, initialiseurs ConstantExpr GEP/BitCast)
-
IndirectBrPass: GCC computed-goto (&&label) → switch, y compris partage de tables multi-sites de dispatch - Inlining de constantes vectorielles SIMD (
inlineVectorConstants) - Rétrogradation automatique de
_Thread_localen static - Chargeur natif macOS arm64 (MAP_JIT + i-cache flush)
Tests : 108/108 assertions dyncode réussies. Tailles binaires : add 8B, fib 64B, hello 64B, big_const 632B.
- Abstraction
TargetDesc: différences de plateforme pilotées par table - Sémantique
-mdyncode-syscallmultiplateforme (remplace-mdyncode-libsystemDarwin-only) - Tables de numéros de syscall Linux / Android (Darwin BSD 100+, Linux arm64 130+, Linux x86_64 150+)
-
DynCodeExtractorrefactorisé enMachOExtractor/ELFExtractor/COFFExtractor - Extracteur ELF (arm64 :
R_AARCH64_CALL26/JUMP26/ADR_PREL_PG_HI21/etc. ; x86_64 :R_X86_64_PC32/PLT32) - Extracteur COFF (arm64 :
IMAGE_REL_ARM64_BRANCH26/etc. ; x86_64 :IMAGE_REL_AMD64_REL32/etc.) - Passe d'import PEB Windows (
WinPEBImportPass) avec résolveur PEB walk réel - Liste blanche Win32 API multi-DLL (~210 API sur kernel32/ntdll/user32/ws2_32/advapi32/shell32)
-
MemIntrinPass: memcpy/memset/memmove/memcmp/bcmp/bzero/memchr + strlen/strcpy/strcmp/etc. → helpers de boucle d'octets inline -
CompilerRtPass: division/modulo__int128→ helpers de division longue inline - Support frontend Windows
aarch64-pc-windows-msvc -
MIRPrepPass: suppression de pseudo-instructions multiplateforme (CFI/EH/XRay/StackMap/SEH/FENTRY/etc.) - Interposes d'obfuscation MIR + niveau octet (11 interposes sur les couches IR/MIR/flux d'octets)
- Rétrogradation automatique AArch64 non-Darwin
long doubleen binary64 - En-têtes shim dyncode :
<windows.h>,<unistd.h>,<fcntl.h>,<sys/stat.h>,<sys/mman.h>,<string.h>,<stdlib.h> - Couche de compatibilité POSIX Windows (13 ponts POSIX→Win32 : write→WriteFile, mmap→VirtualAlloc, etc.)
- Correction automatique des déclarations implicites K&R (50+ signatures POSIX canoniques)
- Purification pilotée par table (codage en dur des branches d'architecture → zéro)
-
KernelImportPass: réécriture automatique des sites d'appel ring-0 avec résolveur - Diagnostics pilotés par table de noms d'helpers du noyau (
KernelHelperNames.def) -
<neverc/dyncode/kernel.h>pour les conventions de point d'entrée ring-0 - Forçage du décalage zéro du point d'entrée (
placeEntryFirst) - Pipeline de finalisation : SDK de réécriture d'octets interdits + SDK d'encodeur de charset + contraintes de taille
- API Plugin C hors arbre (
NevercPluginAPI.h) : 11 points d'accroche dyncode (NEVERC_INTERPOSE_SC_*) - Injection
-mno-implicit-floatpour x86_64 (empêche le déversement du pool de constantes SSE du backend) - Chargeurs multiplateformes (macOS/Linux/Windows)
Tests : 743+ assertions dyncode, toutes réussies sur 8 triples. Suite NeverC complète : 1000+ tests réussis.
- Encodeur dyncode imprimable ARM64 (sous-ensemble d'instructions 0x20–0x7e)
- Encodeur alphanumérique x86_64
- Génération de stub auto-décodant (decoder stub)
- Statistiques de taille / entropie post-encodage
- Moteur polymorphe : même source → séquences d'octets équivalentes différentes par compilation
- Code auto-modifiant : déchiffrement / décompression du corps de charge utile à l'exécution
- Anti-détection : éviter les motifs de signature dyncode connus
- iOS arm64 (signature de code + scénarios jailbreak JIT)
- Cortex-M / Thumb
- RISC-V 64