Skip to content

nirhaas/gopacker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gopacker

A UPX-like packer to shrink executables.

Quick Start

go get github.com/nirhaas/gopacker
gopacker <executable_to_pack>

How does it work

Packing

  • Copy gopacker executable itself to output file.
  • Compress and stream (append) to output file.
  • Append compressed size.
  • Append magic string.

Output file is now a functional executable.

Unpacking

When running the packed executable:

  • Checks the last few bytes to see if magic string is there.
  • Reading compressed size.
  • Reading compressed data.
  • Uncompressing to memory.
  • Overriding the packed executable.
  • syscall exec to run the unpacked executable.

Possible TODO:

  • Better compression.
  • Encryption.

About

UPX-like packer written in Go

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages