Col-E / recaf-3x-issues

This was the temporary issue tracking for 3x. Focus is now on 4x and all issues are tracked on the main repo going forward.
35 stars 5 forks source link

Recaf 3X

▶️ Supersceded by 4x ◀️

Recaf 4X combines a backend rewrite and the new features introduced in 3X and puts them together.

Work going forward will only be on 4X. Effort is being put into getting it up-to-par with where 3X left off ASAP.

preview

This repository is a temporary one for staging snapshot previews of the 3X branch. It also helps organize issues by delegating them to one place without cluttering up issues affecting the current 2X ones in the main repo.

The purpose of these snapshot previews is to gather feedback and opinions. Try it out and let us know what you think about it.

Download

Get it here: 3X Snapshot releases

Important links

FAQ

Progress

This table is a very brief overview of the current state of 3X. It does not cover all of Recaf's existing features, nor does it cover all of the upcoming new features.

Feature Name Completed? Progress
Assembler :heavy_check_mark: Feature complete, focusing on fixes.
Android support :grey_question: Basic Android support exists for APK files, but a lot of the UI has not been fully integrated, so there's some menus that do not function.
Compiler support :heavy_check_mark: Classes in the workspace can be modified via decompiling and recompiling.
Attaching / Agent support :grey_question: The basic capability is added, but needs some polish to fix up bugs and clear up UX.
Decompile support :heavy_check_mark: Decompiler integration is in. Currently supports CFR, Procyon, QuiltFlower, and fallback options. Contextual actions are available on classes, fields, and methods assuming the decompiled code is parsable.
Hex editor support :heavy_check_mark: The hex editor has been redesigned from the ground up. It now comes with a string dumper, value inspector, and other helpful tools for class files.
Natives / PE/ELF viewer :heavy_check_mark: There is support for viewing both PE headers (DLL/EXE, most useful for imported functions) and ELF headers.
Inheritance graphing :heavy_check_mark: When viewing a class you can see its parent and child classes/interfaces
Manual remapping support :heavy_check_mark: Remapping is internally supported and integrated. Right clicking on classes/fields/methods allows renaming of each item.
Automated remapping support :heavy_check_mark: Batch remapping from mapping files is implemented, though file formats will need to be ported over to the new system.
Generative mapping suppor t :heavy_check_mark: New mappings can be generated on the fly with the new built in auto-mapper. You can specify filters to narrow down what gets mapped and the kind of naming scheme you wish to apply.
Persistent config :heavy_check_mark: The system for saving configuration values is done. Some UI elements are missing though.
Dockable panels :heavy_check_mark: In 3X all tabs have built in docking support. You can drag a tab out of the window to create a new window, snap tabs to split a window into halves, and more.
Phantom class generation :heavy_check_mark: The feature that lets you generate missing classes (Used heavily to enable compiling against code you don't have) is fully ported over.
Custom themes :x: No progress has been put into supporting changing the default dark theme yet.
Custom translations :heavy_check_mark: Multiple languages are almost fully translated and swapping between them has been implemented.
Virtualization :heavy_check_mark: Virtualization driven method call simulation and code deobfuscation are available in the UI. SSVM powers the virtualization. Since native API's are re-implemented in Java only supported systems can be virtualized (Which is good from a security standpoint).
Plugin support :heavy_check_mark: The plugin API has been fleshed out, and the plugin manager is accessible via the UI. More things like browsing public plugins, a more fleshed out API, etc will after the first release of 3X.
Script support :heavy_check_mark: The script menu lets you edit/load files and execute them using Beanshell. -s <file> command line flag runs a script on startup.