Skip to content

Syn2Much/VPX

Repository files navigation

VPX — Void Packed Executable

Custom executable packer with all UPX fingerprints stripped. Same compression, same speed, same format support — zero UPX signatures in the output. Packs ELF, PE (Windows EXE/DLL), Mach-O, and DOS binaries.

What changed from stock UPX

What Stock UPX VPX (default)
Magic bytes UPX! (0x21585055) m30w (0x7730336D)
PE sections UPX0 UPX1 UPX2 M3W0 M3W1 M3W2
$Info / $Id strings Embedded in every packed binary Gone
Copyright / URLs / author names Embedded Gone
Stub error messages UPX-5.0 wants... m3w-5.0 wants...
CLI branding UPX m30w

Custom Magic (configure_magic.py)

Optionally rebrand the packer with any 4-character magic word. Changes all magic bytes, section names, stub identifiers, and CLI branding — then rebuilds.

# Configure + build in one step
python3 configure_magic.py Fl4N --build

# Just configure (no build)
python3 configure_magic.py d00m

# Show current magic
python3 configure_magic.py --show

Any 4 ASCII characters. The default m30w works out of the box — only use this if you need a unique signature per deployment.

Magic Sections Example
m30w M3W0/1/2 Default
Fl4N FLN0/1/2 Custom build
d00m D0M0/1/2 Custom build
XpLt XPT0/1/2 Custom build

What gets patched:

  • src/conf.h — magic constants
  • src/pefile.cpp — PE section names
  • src/help.cpp — CLI branding
  • Stub headers and platform includes

Builds are statically linked by default.

Build

git clone --recurse-submodules https://github.com/Syn2Much.git
cd vpx

# Option 1: configure magic + build in one step
python3 configure_magic.py XpLt --build

# Option 2: manual build
mkdir -p build/release && cd build/release
cmake ../.. -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXE_LINKER_FLAGS="-static"
cmake --build . --parallel

Requires: cmake 3.13+, C++17 compiler (gcc 8+ or clang 5+)

Usage

# Pack (LZMA — best compression)
./VPX --lzma ./binary

# Pack (best available method)
./VPX --best ./binary

# Try all methods (slow but tightest)
./VPX --brute ./binary

# Decompress
./VPX -d ./binary

# List info
./VPX -l ./binary

# Test integrity
./VPX -t ./binary

# Verify no UPX fingerprint
strings ./binary | grep -i upx
# ^ returns nothing

Supported Formats

Platform Format Arch Status
Linux linux/elf x86, x86_64, ARM, MIPS, MIPSEL, PowerPC OK
Windows win32/pe x86 (EXE, DLL) OK
Windows win64/pe x86_64 Upstream stub bug
macOS macho x86, x86_64, ARM, ARM64, PowerPC, FAT Untested
BSD bsd/elf x86 Untested
DOS dos/exe 8086+ Untested

Proof

=== stock UPX packed binary ===
$ strings packed | grep -i upx
UPX!
$Info: This file is packed with the UPX executable packer http://upx.sf.net $
$Id: UPX 5.12 Copyright (C) 1996-2026 the UPX Team. All Rights Reserved. $

=== VPX packed binary ===
$ strings packed | grep -i upx
(nothing)

License

GPLv2+. See COPYING and LICENSE.

Based on UPX by Markus Oberhumer, Laszlo Molnar & John Reiser.

About

VPX — Void Packed Executable | Custom UPX fork with zero UPX signatures

Resources

License

Unknown, GPL-2.0 licenses found

Licenses found

Unknown
LICENSE
GPL-2.0
COPYING

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors