Show HN: I wrote a Java decompiler in pure C language

Jun 3, 2025 - 13:00
 0  0
Show HN: I wrote a Java decompiler in pure C language

garlic-decompiler

Java decompiler written in C

Tool for produces java source code from .class or jar file

Features

  • decompile .class file
  • decompile jar file
  • decompile war file

Build

requirements: cmake >= 3.26

No other dependencies

git clone https://github.com/neocanable/garlic.git
cd garlic
cmake -B build
cmake --build build
./build/garlic

Usage

  • decompile .class file

    decompile .class file, default output is stdout

    garlic /path/to/jvm.class
  • decompile jar file

    garlic /path/to/file.jar
    
    garlic /path/to/file.jar -o /path/to/save # -o option is source code output path
    
    garlic /path/to/file.jar -t 5             # -t option is thread count, default is 4

    default output is same level directory as the file

  • javap

    like javap, more faster, disabled LineNumber and StackMapTable attributes

    garlic /path/to/jvm.class -p
  • dexdump

    garlic /path/to/dalvik.dex -p           # unsupport now
    

Debug

in src/jvm.c, change main function to:

int main(int argc, char **argv)
{
    jar_file_analyse(path_of_jar, out_of_jar, 1);
    return 0;
}

if thread count less than 2, it will disable multiple thread.


Licensed under the Apache 2.0 License

What's Your Reaction?

Like Like 0
Dislike Dislike 0
Love Love 0
Funny Funny 0
Angry Angry 0
Sad Sad 0
Wow Wow 0