Freedom251 › Executable Packers
zELF

What zELF is
zELF is an open-source Linux utility that packs ELF64 binaries to reduce file size while providing runtime unpacking. It supports x86_64 and AArch64 (arm64), including static and dynamic/PIE binaries, and validates headers and segments. ELF 32-bit files are unsupported. Its 22 compression codecs include LZ4, LZMA, ZSTD, and LZHAM. BCJ and KanziEXE filters, automatic selection based on trained decision trees, and modes that test codec and filter combinations offer different approaches to reducing output size. The `-best` mode tries three predicted codecs; `-crazy` tries all eligible codecs and selects the smallest output.
zELF can create and unpack .zlf archives, including self-extracting outputs. Its modular design lets developers integrate additional codecs. The packer needs matching target stubs for the architecture being packed. Release downloads include dynamic and static Linux builds for amd64 and aarch64, with distribution packages and portable archives; dynamic builds use system libraries, while static builds are self-contained. The project is released under GPLv3, subject to licenses of bundled components. The maker describes intended uses including legitimate binary optimization, embedded systems, demos, education, and experimentation with ELF internals. Some codecs can require substantial memory: LZHAM uses a 512 MB dictionary and aborts if available memory or RLIMIT_AS is insufficient.
Who it suits
zELF suits Linux developers who need to optimize supported ELF64 binaries or produce .zlf archives. Its codec-extensibility and documented build process may also suit users exploring ELF internals, embedded systems, demos, or education.
What it does well
- Supports x86_64 and AArch64 static and dynamic/PIE binaries.
- Includes 22 codecs, including LZ4, LZMA, ZSTD, and LZHAM.
- Can create and unpack .zlf and self-extracting archives.
- Automatic codec selection uses trained decision trees.
- Developers can integrate additional compression codecs.
What to know first
- ELF 32-bit binaries are unsupported.
- The packer requires matching target stubs for the target architecture.
- LZHAM uses a 512 MB dictionary and may abort for insufficient memory.
- Linux is the only supported platform.
Getting started
- Visit the zELF GitHub repository.
- Download a dynamic or static build for amd64 or aarch64, or build the packer from source.
- Use the matching target stubs for the architecture you plan to pack.
- Choose codecs and filters, or use `-best` or `-crazy` to compare eligible options.
Verdict
Choose zELF if you need Linux ELF64 packing across x86_64 or AArch64 and want several codec-selection options. Look elsewhere for 32-bit ELF support; account for codec memory requirements and the need for matching target stubs.
Questions
What does zELF cost?
It is free and open source under GPLv3, subject to licenses of bundled components.
Which binary architectures does it support?
It supports Linux ELF64 x86_64 and AArch64 (arm64), including static and dynamic/PIE binaries. ELF 32-bit is unsupported.
What Linux builds are available?
The v0.91 release provides dynamic and static builds for amd64 and aarch64, including distribution packages and portable archives.
What is the difference between dynamic and static builds?
Dynamic builds link against system libraries. Static builds are self-contained without external dependencies.
Can developers add codecs?
Yes. The maker describes zELF as modular and documents integrating additional compression codecs.
Is zELF intended for obfuscation or evasion?
No. The maker says it is not designed for code obfuscation, concealment, antivirus evasion, or malicious code distribution.
Facts from zELF's own pages
- Archive features
- It can create and unpack .zlf archives, including self-extracting archive outputs. · github.com, 11 Oct 2026
- Archives
- It can create and unpack .zlf archives, including self-extracting archive outputs. · github.com, 11 Oct 2026
- Binary formats
- It supports static and dynamic/PIE ELF64 binaries and does not support 32-bit ELF. · github.com, 11 Oct 2026
- Binary support
- It handles static and dynamic/PIE binaries, with header and segment validation. · github.com, 11 Oct 2026
- Build and distribution
- The README documents building the packer and producing .deb or .tar.gz packages; the packer must have matching target stubs available for the architecture being packed. · github.com, 11 Oct 2026
- Build options
- The release describes dynamic builds as linked against system libraries and static builds as self-contained without external dependencies. · github.com, 11 Oct 2026
- Compression
- It includes 22 compression codecs, including LZ4, LZMA, ZSTD, and LZHAM. · github.com, 11 Oct 2026
- Downloads
- The v0.91 release provides dynamic and static Linux builds for amd64 and aarch64, including Debian, Fedora/RHEL/openSUSE, and Alpine packages plus portable archives. · github.com, 11 Oct 2026
- Executable filters
- It provides BCJ and KanziEXE filters, with automatic selection via trained decision trees. · github.com, 11 Oct 2026
- Extensibility
- The maker describes zELF as modular and documents how developers can integrate additional compression codecs. · github.com, 11 Oct 2026
- Filters and selection
- It offers BCJ and KanziEXE filters, automatic selection using trained decision trees, and modes that try multiple codec and filter combinations. · github.com, 11 Oct 2026
- Intended users
- The maker describes the project as intended for legitimate binary optimization, embedded systems, demos, education, and experimentation with ELF internals and executable packing. · github.com, 11 Oct 2026
- License
- The project is released under GPLv3, subject to licenses of bundled components. · github.com, 11 Oct 2026
- License and community
- The repository identifies GPLv3 as its main license and invites users to open issues, submit pull requests, or discuss ideas. · github.com, 11 Oct 2026
- Memory limit
- Some codecs can require substantial memory; the README says LZHAM uses a 512 MB dictionary and aborts if available memory or RLIMIT_AS is insufficient. · github.com, 11 Oct 2026
- Optimization modes
- Its -best mode tries three predicted codecs and its -crazy mode tries all eligible codecs to select the smallest output. · github.com, 11 Oct 2026
- Password option
- The password option stores an obfuscated FNV-1a hash in the stub. · github.com, 11 Oct 2026
- Purpose
- zELF packs Linux ELF64 binaries to reduce their size and provide efficient runtime unpacking. · github.com, 11 Oct 2026
- Security
- The maker says zELF is not designed for code obfuscation, concealment, or antivirus evasion, and its source code is openly available. · github.com, 11 Oct 2026
- Security limitation
- The maker says zELF is not designed for code obfuscation, concealment, antivirus evasion, or malicious code distribution. · github.com, 11 Oct 2026
- Support and contributions
- The maker invites users to open issues, submit pull requests, or discuss ideas on the project. · github.com, 11 Oct 2026
- Supported targets
- It supports Linux ELF64 x86_64 and AArch64 (arm64) binaries; ELF 32-bit is unsupported. · github.com, 11 Oct 2026
Where zELF stands on Freedom251
- Executable Packers#14 of 28