Astral-PE: A low-level mutator (headers obfuscator) for native Windows PE files

Astral-PE is a low-level mutator (headers obfuscator and patcher) for Windows PE files (.exe.dll) that rewrites structural metadata after compilation (or postbuild protection) — without breaking execution.

It does not pack, encrypt or inject. Instead, it mutates low-hanging but critical structures like timestamps, headers, section flags, debug info, import/export names, and more.

In what cases is it useful?

You’ve protected a binary — but public unpackers or YARA rules still target its unchanged structure.

??‍? Use Astral-PE as a post-processing step to:

  • Prevent automated unpacking
  • Break static unpacker logic
  • Invalidate reverse-engineering signatures
  • Disrupt clustering in sandboxes
  • Strip metadata, overlays (only if file is signed), debug traces…

Perfect for:

  • For packed/protected builds (e.g. legacy Enigma)
  • To create your own protector on this base
  • Hardened loaders that remain structurally default
  • To create interesting crackme quests
  • For educational purposes

What it modifies

Astral-PE applies precise, compliant, and execution-safe mutations:

Target Description
? Timestamp Clears TimeDateStamp in file headers
? Rich Header Fully removed — breaks toolchain fingerprinting
? Section Names Wiped (.text.rsrc, etc. → null)
? Checksum Reset to zero
? Overlay Stripped if file was signed
? TLS Directory Removed if unused
⚙ Load Config Deleted (if CFG not present)
? Relocations Removed if not used in the file
? Large Address Aware Enables 4 GB memory range for 32-bit processes
? Header Flags Stripped: DEBUG_STRIPPEDLOCAL_SYMS_STRIPPEDLINE_NUMS_STRIPPED
? Subsystem Version Minimum OS and Subsystem versions set to zero
? Stack & Heap Reserve Increased to safe defaults (32/64 MB) if too low
? Version Info Erased from optional header
? Original Filename Located and zeroed in binary tail
? Debug Info PDB paths wiped, Debug Directory erased
? Entry Point Patch Replaces or shuffles PUSH/PROLOGUE bytes (e.g. UPX)
? Import Table DLL names mutated: case, prefix, randomized formatting
? Export Table Faked if absent (baits certain scanners)
? Data Directory All unused entries cleaned
? Permissions R/W/X + code flags applied to all sections
? DOS Stub Reset to clean “MZ”, patched e_lfanew

Download & Use