Skip to content

Beta 9

Pre-release
Pre-release
Compare
Choose a tag to compare
@Col-E Col-E released this 28 Jan 23:27
· 4429 commits to master since this 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.
    • 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
    • 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 via options->user interface)
        processes that already have a potentially outdated ASM library loaded
  • 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
  • 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