Skip to content

Latest commit

 

History

History
76 lines (61 loc) · 5.31 KB

File metadata and controls

76 lines (61 loc) · 5.31 KB

Sprachen: English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Русский | العربية

← DynCode-Compiler

DynCode-Compiler — Fortschrittsverfolgung

Phase 0 — macOS arm64 MVP (ausgeliefert)

  • Verzeichnis- & CMake-Skelett (nevercDynCode-Bibliothek)
  • ZeroRelocPass: Zwei-Phasen (Prep + Stackify), automatische Stack-Übernahme veränderlicher Globaler
  • Data2TextPass: Zwei-Phasen (konstante Arrays → Stack-Chunk-Stores; Post-SROA-Vektorkonstanten-Splitting; ConstantFP → volatile-geladene Bitmuster)
  • SyscallStubPass: Tabellengesteuerte Whitelist für Darwin BSD / Linux arm64 / Linux x86_64 / Android-Syscalls
  • AllBlrPass: Optionales aggressives Umschreiben indirekter Aufrufe
  • DynCodeExtractor: Mach-O .o → flache .bin mit Intra-Section-Relokationspatching
  • CLI-Optionen via generierte neverc/include/neverc/Invoke/Options.td.h: -fdyncode, -fdyncode-all-blr, -mdyncode-syscall, -fdyncode-keep-obj=, -fdyncode-entry=
  • Plattformübergreifendes Standard-PIC (isPICDefault() gibt einheitlich true zurück)
  • Generische rekursive Stack-Übernahme (Funktionszeigertabellen, Stringzeigertabellen, verschachtelte Strukturtabellen, ConstantExpr GEP/BitCast-Initialisierer)
  • IndirectBrPass: GCC computed-goto (&&label) → switch, einschließlich Multi-Dispatch-Site-Tabellenfreigabe
  • SIMD-Vektorkonstanten-Inlining (inlineVectorConstants)
  • _Thread_local automatische Herabstufung zu static
  • Nativer macOS arm64 Loader (MAP_JIT + i-cache flush)

Tests: 108/108 DynCode-Assertions bestanden. Binärgrößen: add 8B, fib 64B, hello 64B, big_const 632B.

Phase 1 — Linux / Android / Windows plattformübergreifend (ausgeliefert)

  • TargetDesc-Abstraktion: Tabellengesteuerte Plattformunterschiede
  • Plattformübergreifende -mdyncode-syscall-Semantik (ersetzt Darwin-only -mdyncode-libsystem)
  • Linux / Android Syscall-Nummerntabellen (Darwin BSD 100+, Linux arm64 130+, Linux x86_64 150+)
  • DynCodeExtractor refaktoriert in MachOExtractor / ELFExtractor / COFFExtractor
  • ELF-Extraktor (arm64: R_AARCH64_CALL26/JUMP26/ADR_PREL_PG_HI21/etc.; x86_64: R_X86_64_PC32/PLT32)
  • COFF-Extraktor (arm64: IMAGE_REL_ARM64_BRANCH26/etc.; x86_64: IMAGE_REL_AMD64_REL32/etc.)
  • Windows PEB Import Pass (WinPEBImportPass) mit echtem PEB-Walk-Resolver
  • Multi-DLL Win32 API Whitelist (~210 APIs über kernel32/ntdll/user32/ws2_32/advapi32/shell32)
  • MemIntrinPass: memcpy/memset/memmove/memcmp/bcmp/bzero/memchr + strlen/strcpy/strcmp/etc. → Inline-Byteschleifenhelfer
  • CompilerRtPass: __int128 Division/Modulo → Inline-Langdivisionshelfer
  • Windows aarch64-pc-windows-msvc Frontend-Unterstützung
  • MIRPrepPass: Plattformübergreifendes Pseudo-Stripping (CFI/EH/XRay/StackMap/SEH/FENTRY/etc.)
  • MIR + Byte-Level-Obfuskationsinterposes (11 Interposes über IR/MIR/Byte-Stream-Schichten)
  • AArch64 Nicht-Darwin long double automatisches Downgrade auf binary64
  • DynCode-Shim-Header: <windows.h>, <unistd.h>, <fcntl.h>, <sys/stat.h>, <sys/mman.h>, <string.h>, <stdlib.h>
  • Windows POSIX-Kompatibilitätsschicht (13 POSIX→Win32-Brücken: write→WriteFile, mmap→VirtualAlloc, etc.)
  • K&R implizite Deklaration Auto-Fix (50+ kanonische POSIX-Signaturen)
  • Tabellengesteuerte Bereinigung (Architekturzweig-Hardcodierung → null)
  • KernelImportPass: Ring-0 automatisches resolvergestütztes Callsite-Umschreiben
  • Kernel-Helpername tabellengesteuerte Diagnostik (KernelHelperNames.def)
  • <neverc/dyncode/kernel.h> für Ring-0-Eintrittspunktkonventionen
  • Einstiegspunkt-Offset-Null-Erzwingung (placeEntryFirst)
  • Finalize-Pipeline: Bad-Byte-Rewriter SDK + Charset-Encoder SDK + Größenbeschränkungen
  • Out-of-Tree C Plugin-API (NevercPluginAPI.h): 11 DynCode-Interpose-Punkte (NEVERC_INTERPOSE_SC_*)
  • x86_64 -mno-implicit-float-Injektion (verhindert Backend-SSE-Konstantenpoolauslagerung)
  • Plattformübergreifende Loader (macOS/Linux/Windows)

Tests: 743+ DynCode-Assertions, alle bestanden über 8 Triples. Gesamte NeverC-Suite: 1000+ Tests bestanden.

Phase 2 — Druckbare / Alphanumerische Encoder (geplant)

  • ARM64 druckbarer DynCode-Encoder (0x20–0x7e Instruktionssubset)
  • x86_64 alphanumerischer Encoder
  • Selbstdekodierender Stub (Decoder Stub) Erzeugung
  • Post-Encoding Größen- / Entropiestatistiken

Phase 3 — Polymorphismus / Selbstmodifikation (geplant)

  • Polymorphe Engine: gleicher Quellcode → unterschiedliche äquivalente Bytefolgen pro Kompilierung
  • Selbstmodifizierender Code: Laufzeitentschlüsselung / -dekompression des Payload-Bodys
  • Anti-Erkennung: Vermeidung bekannter DynCode-Signaturmuster

Zukünftige Erweiterungen

  • iOS arm64 (Code-Signierung + JIT Jailbreak-Szenarien)
  • Cortex-M / Thumb
  • RISC-V 64