MCPcopy
hub / github.com/Col-E/Recaf

github.com/Col-E/Recaf @2.21.14 sqlite

repository ↗ · DeepWiki ↗ · release 2.21.14 ↗
3,179 symbols 11,857 edges 451 files 2,031 documented · 64%
README

Recaf Discord Build Status downloads Contributions welcome

screenshot of recaf

An easy to use modern Java bytecode editor that abstracts away the complexities of Java programs. Recaf abstracts away:

  • Constant pool
  • Stack frames
  • Wide instructions
  • And more!

Don't know bytecode? That's ok because Recaf supports recompiling decompiled code and inserting single line Java statements into the bytecode.

For more information: Read the documentation

Important notice for newer versions: 3X and 4X

This video explains what's going on in the the Recaf developer space. What's going on with 3x and 4x, and plans for the future.

Download

See the releases page for the latest build.

Preface

If you're just getting started with reverse-engineering in Java, read primer guide. Then check the documentation pages.

Contributing

Are you a developer?

Check out the open issues, project boards, and many scattered TODO messages throughout the source code. There's plenty to do.

Not a developer?

You can help by reporting bugs, making suggestions, providing translations, and sharing this project.

More information can be found in the contribution guide.

Setting up the project

Clone the repository via git clone https://github.com/Col-E/Recaf.git

Open the project in an IDE or generate the build with maven.

IDE: 1. Import the project from the pom.xml * IntelliJ * Eclipse - (Warning: Eclipse's custom compiler cannot compile Recaf because of incorrect generics parsing) 2. Create a run configuration with the main class me.coley.recaf.Recaf

Without IDE: 1. Execute build * Follow the prompt in the script to build the project. 2. Run the generated build: java -jar target/recaf-{version}-jar-with-dependencies.jar

For additional information, join the Discord server (https://discord.gg/Bya5HaA)

Extension points exported contracts — how you extend this code

Assembler (Interface)
Common assembler. @param Output type. @author Matt [24 implementers]
src/main/java/me/coley/recaf/parse/bytecode/Assembler.java
FlowController (Interface)
Common to all instructions that modify flow control. @author Matt [6 implementers]
src/main/java/me/coley/recaf/parse/bytecode/ast/FlowController.java
Compilable (Interface)
Represents compilable AST element. @author xxDark [27 implementers]
src/main/java/me/coley/recaf/parse/bytecode/ast/Compilable.java
Errorable (Interface)
Essentially Runnable but can throw an exception. @param Type of exception. @author Matt [6 implementers]
src/main/java/me/coley/recaf/util/struct/Errorable.java
ClassEditor (Interface)
Common functionality of class editor displays. @author Matt [5 implementers]
src/main/java/me/coley/recaf/ui/controls/ClassEditor.java

Core symbols most depended-on inside this repo

put
called by 311
src/main/java/me/coley/recaf/util/struct/ListeningMap.java
getName
called by 241
src/main/java/me/coley/recaf/plugin/api/BasePlugin.java
contains
called by 227
src/main/java/me/coley/recaf/search/Context.java
append
called by 218
src/main/java/me/coley/recaf/command/impl/WorkspaceInfo.java
add
called by 208
src/main/java/me/coley/recaf/ui/controls/pane/ColumnPane.java
translate
called by 201
src/main/java/me/coley/recaf/util/LangUtil.java
get
called by 197
src/main/java/me/coley/recaf/ui/MainWindow.java
add
called by 194
src/main/java/me/coley/recaf/util/VMUtil.java

Shape

Method 2,599
Class 465
Function 65
Interface 34
Enum 16

Languages

Java98%
TypeScript2%

Modules by API surface

src/test/java/me/coley/recaf/AssemblyAstTest.java70 symbols
docs/js/jquery.min.js64 symbols
src/test/java/me/coley/recaf/AssemblyCasesTest.java52 symbols
src/main/java/me/coley/recaf/search/Context.java52 symbols
src/main/java/me/coley/recaf/util/AccessFlag.java42 symbols
src/main/java/me/coley/recaf/workspace/JavaResource.java37 symbols
src/main/java/me/coley/recaf/workspace/Workspace.java32 symbols
src/main/java/me/coley/recaf/ui/ContextBuilder.java32 symbols
src/main/java/me/coley/recaf/ui/MainMenu.java31 symbols
src/main/java/me/coley/recaf/parse/bytecode/Disassembler.java31 symbols
src/main/java/me/coley/recaf/ui/MainWindow.java27 symbols
src/main/java/me/coley/recaf/search/SearchMethodVisitor.java24 symbols

Dependencies from manifests, versioned

ch.qos.logback:logback-classic1.2.10 · 1×
com.eclipsesource.minimal-json:minimal-json0.9.5 · 1×
com.github.Col-E:CAFED00D
com.github.Col-E:SimAnalyzer
com.github.Col-E:jphantom1.4.4 · 1×
com.github.javaparser:javaparser-core
com.github.javaparser:javaparser-symbol-solver-core
com.github.spotbugs:spotbugs
com.google.guava:guava33.1.0-jre · 1×
com.sun:sa-jdi8.0 · 1×
com.sun:tools8.0 · 1×
commons-codec:commons-codec1.15 · 1×

For agents

$ claude mcp add Recaf \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact