Skip to content

SwagRee/JavaHack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Class Decompiler GUI

A desktop decompiler tool built with Java Swing + CFR/Procyon/Fernflower/Vineflower + ASM.

Features

  • Drag and drop a JAR or ZIP
  • Browse package folders and class files in a tree
  • Click a class to view decompiled source
  • Choose the decompiler backend from 配置 > Decompiler
  • Edit decompiled source directly in the right panel
  • Search decompiled text across all classes by string or method name
  • Save edited source by fully qualified name into the working source tree
  • Try to rebuild the edited class with the JDK compiler and write it back into the loaded archive workspace
  • Right click inside the code editor to inspect bytecode for the method at the caret
  • Edit and save bytecode text snapshots for the current method or whole class
  • Export all decompiled sources into a folder and package them as a sources.jar
  • Save the current modified archive back out as a new jar

Build

mvn package

Run

java -jar target/class-decompiler-gui-1.0.0-jar-with-dependencies.jar

Main Output

The runnable desktop package is:

target/class-decompiler-gui-1.0.0-jar-with-dependencies.jar

Workflow

  1. Drop a target jar or zip into the window.
  2. Select a class on the left.
  3. Edit the decompiled code on the right.
  4. Click Save Source to persist the edited source and attempt a class rebuild.
  5. Enter a keyword in the search box to search all decompiled source text.
  6. Click a search result to jump to the matching class and line.
  7. Right click in the editor and choose a bytecode view action when needed.
  8. Click Save Current Archive to package the modified working archive as a new jar.
  9. Click Export Sources to export all source files and package a source jar.

Notes

  • Decompiled source editing is stored in the archive working source tree.
  • Bytecode editing currently saves editable bytecode text snapshots for the selected method or class.
  • Class rebuilding uses the JDK built-in compiler when available.
  • Fernflower is copied to target/decompiler-libs during packaging so it can run isolated from Vineflower on Java 8.
  • Vineflower is disabled automatically when the app runs on Java 8 because the bundled Vineflower version requires Java 11+.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages