RuntimeLoader

June 30, 2026 · View on GitHub

Location: RuntimeLoader/
Language: C++ (Console EXE)
Role: Alternate native loader that receives the AtomicEngine DLL via named pipe and maps it in-process using manual PE loading. Serves as a C++ alternative to the C# EngineLoader.

Files

FilePurpose
Main.cppEntry point — runs the pipe server
RuntimeLoader.cpp/.hNative manual PE mapper
CPipeServer.cpp/.hNamed pipe server (\\.\pipe\AtomicRuntime)
XorStr.hString obfuscation utility

Flow

RuntimeLoader.exe launched
└── Main()
    └── CPipeServer::Start()
        ├── Create named pipe: \\.\pipe\AtomicRuntime
        ├── Wait for client connection
        ├── Read message from pipe
        │   ├── Prefix: "load_code:" + base64-encoded DLL
        │   └── Decode base64
        └── RuntimeLoader::SelfMapModule()
            ├── Allocate memory
            ├── Copy PE headers + sections
            ├── Resolve relocations
            ├── Resolve imports
            ├── TLS callbacks
            └── Call DllMain

Named Pipe Server (CPipeServer)

  • Creates \\.\pipe\AtomicRuntime (note: different pipe name vs C# loader's AtomicPipe)
  • CreateNamedPipeA with PIPE_ACCESS_DUPLEX
  • Blocks on ConnectNamedPipe waiting for client
  • Reads message, checks for load_code: prefix
  • Decodes base64-encoded payload
  • Passes raw bytes to RuntimeLoader::SelfMapModule

Native Manual Mapper (RuntimeLoader)

  • Memory: VirtualAlloc with PAGE_EXECUTE_READWRITE
  • Sections: Copies each PE section from source
  • Relocations: Iterates IMAGE_BASE_RELOCATION blocks, applies delta
  • Imports: LoadLibraryA + GetProcAddress for each import entry
  • TLS: Finds and executes TLS callback table
  • Entry: Calls DllMain via CreateThread + WaitForSingleObject

Differences from C# EngineLoader

AspectEngineLoader (C#)RuntimeLoader (C++)
LanguageC# (.NET)C++ (native)
Pipe name\\.\pipe\AtomicPipe\\.\pipe\AtomicRuntime
Entry callDirect function pointerCreateThread + wait
Exception handlingRtlAddFunctionTableNot implemented
Dependencies.NET 8 (Native AOT)None (pure Win32)
String obfuscationN/AXorStr.h / skCrypter

Dependencies

  • Win32 API (kernel32, ntdll)
  • Shared/Vendor/skCrypter.h — String obfuscation