Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Polymorphic PE Packer

Go Version License

Polymorphic PE Packer is a lightweight, cross-platform tool written in Go that obfuscates and optionally compresses Windows executables (PE files) using polymorphic techniques. It generates a unique stub loader that decrypts and executes the original payload at runtime, making each output binary unique.

✨ Features

  • Polymorphic Obfuscation – XOR encryption with a random key per build
  • Compression – Optional GZip compression to reduce file size
  • Stub Generation – Creates a self-contained Go stub that decodes, decrypts, and executes the payload
  • CLI Tool – Simple command-line interface with JSON configuration
  • Pure Go – No external dependencies, compiled to a single binary

🚀 Installation

From Source

git clone https://github.com/TemidayoAkinwamide/polymorphic-pe-packer.git
cd polymorphic-pe-packer
go build -o deepevo.exe ./cmd/deepevo

📖 Usage
Step 1: Create a Configuration File

Create a JSON configuration file (e.g., config.json):
json

{
    "input\_file": "payload.exe",
    "output\_file": "packed.exe",
    "obfuscation": {
        "enabled": true,
        "add\_junk\_data": false
    },
    "compression": {
        "enabled": false,
        "method": "gzip"
    }
}

Step 2: Run the Packer
bash

./deepevo.exe config.json

Step 3: Execute the Packed Binary
bash

./packed.exe

The stub will automatically decrypt and execute your original payload.
🛠️ Configuration Options
Field	Type	Description
input_file	string	Path to the executable to pack
output_file	string	Path where the packed executable will be saved
obfuscation.enabled	bool	Enable XOR obfuscation
obfuscation.add_junk_data	bool	Add random junk data for additional obfuscation
compression.enabled	bool	Enable GZip compression
compression.method	string	Compression method (gzip or zip)
📁 Project Structure

polymorphic-pe-packer/
├── cmd/
│   └── deepevo/              # CLI entry point
├── configs/                  # Example configurations
├── internal/
│   ├── compression/          # Compression logic
│   ├── core/                 # Core packer logic & stub generation
│   ├── security/             # Obfuscation (XOR + junk data)
│   └── utils/                # File and system helpers
├── go.mod
├── go.sum
├── LICENSE
└── README.md

🧪 Quick Example

Pack calc.exe from your Windows system:
bash

copy C:\Windows\System32\calc.exe test\_input.exe
./deepevo.exe configs/test\_obfuscate.json
./output\_packed.exe   # Runs calc.exe with polymorphic packing

🔒 How It Works

    Read the input PE executable
    Compress (optional) to reduce size
    Encrypt with a random XOR key
    Generate a unique stub loader in Go
    Compile the stub with the encrypted payload embedded
    Output a polymorphic binary

Each generated binary is unique due to:

    Random XOR encryption keys
    Randomized stub code generation
    Optional junk code insertion

📋 System Requirements

    Go 1.21 or higher
    Windows (for runtime execution of packed PE files)

🤝 Contributing

Contributions are welcome! Please feel free to:

    Open an issue for bug reports or feature requests
    Submit a pull request with improvements
    Suggest enhancements to the obfuscation techniques

📝 License

This project is licensed under the MIT License – see LICENSE [blocked] for details.
🙏 Acknowledgments

    Built with Go
    Inspired by polymorphic techniques in security research

⚠️ Disclaimer

This tool is for educational and authorized research purposes only. Unauthorized access to computer systems is illegal. Use responsibly and ensure you have proper authorization before packing or distributing any executable.
🔗 Quick Links

    Issues
    Discussions


---

## 📄 MIT License File

Create a **LICENSE** file in the root directory:

```markdown
MIT License

Copyright (c) 2025 Temidayo Akinwamide

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

About

Polymorphic PE Packer is a lightweight, cross-platform tool written in Go that obfuscates and optionally compresses Windows executables (PE files) using polymorphic techniques. It generates a unique **stub loader** that decrypts and executes the original payload at runtime, making each output binary different from the previous one

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages