Semester project for studies using GoF design patterns - sometimes they are used by force :D
The goal of the project is to encrypt another JAR executable based on the key provided by the user, save it to a file and create a decryptor and put it into the loader (I used ow2 asm to generate bytecode). After launching the program and going through all the steps, you will get the default - output.jar in jar file location (configurable) file which is ready to run. Nothing hard! :)
#Mon Jan 11 10:08:37 CET 2021
useNullByteName=true
outputPath=output.jar
fakeDirectory=true
inputPath=input.jar
encryptionKey=ABCDEFGHIJKLMNPA
Property name | expected value | Description |
---|---|---|
inputPath | Path to input jar file | Define input jar location |
outputPath | Path to output jar file | Define output jar location |
encryptionKey | 16 bytes(length) key | Key used to AES encryption |
useNullByteName | true/false | Method add \u0000 to the beginning of the class name. This method allows you to hide class names and prevent them from unpacking by popular archivers like WinRar |
fakeDirectory | true/false | https://github.com/x4e/fakedirectory - completely unavailable to anyone using WinRAR, Luyten and every other zip viewer. |
Such a packer is not a protection you can rely on. It can only come in handy against total noobs. If you already want to use it somewhere to add extra protection to your application - Please obfuscate the loader. Remember that there are tons of ways to get around this - memory dump, defineClass hook, javaagent ... etc