Beta 9
Pre-release
Pre-release
What's New
- Agent functionality
- Requires running Recaf via JDK
- Attach to other java processes and update bytecode in-memory
- Done via running recaf and selecting from the navbar
injection->jvm's
and selecting which one you want to attach to.
- Done via running recaf and selecting from the navbar
- Make edits, mark classes as modified and apply the changes at any time
- Decompiled classes and methods can be recompiled via a right-click context menu option
recompile
.- Requires running Recaf via JDK
- User interface customization
- UI text can now be translated
- Located in
src/resources/lang
- Language option in UI is
options->user interface
, requires restart to apply changes in GUI. - Currently translation is the user's responsibility but I would really appreciate a pull-request with some other languages
- Located in
- Uncommonly edited attributes in the class inner-window can be hidden (EnclosingMethod, InnerClasses, SourceDebug)
- Member & Opcode right-click context menu's now customizable
- User can define the order of items and even hide items from showing up (hiding requires removal via setting in
rcinterface.json
, but order is editable in UI viaoptions->user interface
)
processes that already have a potentially outdated ASM library loaded
- User can define the order of items and even hide items from showing up (hiding requires removal via setting in
- UI text can now be translated
- Logging now written to
rclog.txt
in addition to console- Separate logging levels for console output vs log file output (Defaults -> console:info, file:fine)
- Plugins
- New events
- Opening class display
- Opening Method opcode list display
- Context-menu creation
- File loading / saving
- New events
- Opcode block saving now supports switch opcodes
- Class file input support (As opposed to originally only jar support)
- Proper editing support for InvokeDynamic instructions
- Search results now fetchable
- Useful for writing plugins when you want to look something up, now you don't need to implement the searching yourself.
- ASM version used for saving/loading configurable via
options->ASM flags
- Useful for agent-mode when attaching to java processes with an older version of ASM already loaded into the classpath.
- Deletion warning option now warns when recaf window closed (allows user to cancel shutdown)
What's Fixed
- Types not being properly shortened when simplify option enabled
- Also this led to a crash if a class name was one-char long
- Desync between actual method instructions and what's shown in the list display
- Search's case insensitive option not lowering case of input text
- Better plugin load handling
- Fix: One bad plugin canceling load of other plugins
- Fix: Not all plugin classes being loaded properly resulting in ClassNotFoundExceptions when loading correctly designed plugins