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

2 days ago 2

License

Java decompiler written in C

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

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

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
  • 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

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

Read Entire Article