Skip to content
Gun8hootPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Midona


Warning :

I (Nathan "Gun8hoot" CLAVEL) am not in charge of the bad/good usage or the modification of my program.

I've created this program for education purposes only and it should not be used to evade any protection.

Description :

Midona is a runtime packer that can both compress and/or encrypt an linux ELF executable. The decompression and decryption will be completely done at the runtime in memory without exposing the clear code of the binary on the disk. The name Midona come from a game that i played when i was a child who is called The Legend of Zelda: Twilight Princess.

Usage :

  1. Clone the repository on your computer and go inside
git clone git@github.com:Gun8hoot/Midona.git && cd Midona
  1. Compile the program using GNU Make
make
  1. Use the program
# Example:
./midona -b compiled_file
  • When compiling the program, some object file are generated in the .objects directory.
    You can remove it easly by running :
make clean

Known issues :

  • None for now

Roadmap :

Done at : ~3%

  • : Create the best program i can do with the maximum of quality
  • : Parse arguments with their corresponding flags
    • : (optional) Add -o flag to know where the compressed/encrypted executable should be placed/named
  • : Being able to compress data
    • : Choose a good compression algorithm
    • : Implement the algorithm
  • : Being able to encrypt data
    • : Implement AES256
  • : Being able to decompress and decrypt the binary from the cli
    • Decompression ?
    • Decryption ?
  • : Being able to decompress and decrypt data at the runtime
    • Decompression ?
    • Decryption ?
  • : Being able to execute the decompressed/decrypted stub on the memory
  • : (optional) Change the signature every time the compressed binary is executed
  • : (optional) Adapt the stub to support both 64 and 32 bits
  • : (optional) Add more CLI flags to add more control of how the program is compress/encrypted

Technical description :

The program is written in C++11 using Linux, without including any external library other than C++ standard library and glibc. To compress data, i have chosen LZ4 because it is pretty well documented and i find that this compression algorithm has a good ratio between compression and speed. For the encryption i will probably use AES256-GCM to get both confidentiality and authenticity. The compression and encryption is done on a single thread so it can take a lot of time depending of size of the content to encrypt/compress.

Ressources used :

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages