Col-E / Col-E/Recaf

4.X primary TODO list.

Open
#792 4 comments 9 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
7.4k
Forks
538
PR merge metrics
No merged PRs in 30d

Description

- Welcome
- [ ] First time configuration based on what the user intends to do #702
- In-application help
- [x] In-application tutorials with basic code samples #709
- Can express as a custom workspace type with an identifier of which tutorial is open
- Different tutorials could add different popup notifications to UI controls to explain their usage
- External help
- [ ] Write user documentation for 4.X
- [ ] Write developer documentation for 4.X
- Menu Bar
- [ ] Plugins menu
- Workspace explorer
- [x] Support embedded resources
- [x] Viewing
- [x] Editing
- [x] Exporting
- [x] Make modified classes visually distinct #680
- [x] Add keybind support for renaming #820 _(and possibly other actions)_
- Workspace summary
- [x] Android manifest summarization #720
- [ ] Known obfuscation detection summarization
- [ ] Minecraft mod summarization _(Forge/Fabric)_ #667
- [x] Main mod classes
- [ ] Pull in target MC version as a supporting resource
- [ ] Automatic mapping support
- Class views
- [x] Hex view
- [x] Low level view
- [x] Kotlin metadata side-tab
- [ ] Option to show fields/methods tab open by default #752
- Decompilers
- [x] Fallback (port from 3x)
- File views
- [x] HTML _(As XML)_
- [ ] Markdown
- Change/history viewer
- [ ] Change viewer UI between original state and modified state
- [ ] Class support
- [ ] File support
- [x] Support exporting as `.repatch` file format so Recaf can apply the patch again later
- Search
- [ ] Additional filters (package white/black lists)
- [ ] Fuzzy text search mode
- [ ] Class hierarchy search/display #915
- [x] Instruction pattern search #617
- Strictly text-based like before utilizing JASM? Probably easier for most end-users since its something that allows copy-pasting from the assembler.
- More node/pattern like similar to [Concoction](https://github.com/Minecraft-Malware-Prevention-Alliance/concoction/tree/main/concoction-lib/src/main/java/info/mmpa/concoction/scan/model/insn)?
- [x] Structure search - https://github.com/Minecraft-Malware-Prevention-Alliance/concoction/issues/4
- Plugins
- [ ] Plugin manager UI
- [ ] Link to plugin development guide to make it easy to start
- [ ] Create plugin templates
- Config
- [ ] Investigate what would improve the layout beyond our automated setup. Its laid out in a bit of a _"jumbled"_ way at the moment.
- [x] ~~Font size sliders~~
- This is sadly a bit tricky with our theme setup. There are a lot of small edge cases in the theme that rely on exact sizes. I found that a more reasonable solution was to just implement a generic window scaling. It'll apply when restarting Recaf.
- [ ] Organize into sane ordering _(vs alphabetic of key names)_
- Context menus
- [x] Organize into sane ordering
- Creation of new content
- [ ] Files
- [x] Classes #113
- Additional actions
- Classes
- [x] Generate method overrides _(prompt to show which methods can be overriden)_
- Packages / Directories
- [x] Export _(we have single-file export, but not package/dir exports)_
- Assembler
- [x] Tab completion for opcodes
- [x] Tab completion for type refs
- [x] Tab completion for field/method refs
- [x] Option to change variable table handling #851
- [ ] Automatically generate variables when variable data exists
- [x] Never write variable data
- [x] Always write variable data
- [x] Add missing JVM attribute support
- [x] Invisible annotations, type annotations, etc #760
- Android support _(Replace our dependency on Google's R8 with our own implementation that better adapts to our model in Recaf)_
- [x] Migrate away from [R8](https://github.com/Col-E/R8) to [dex](https://github.com/jumanji144/dex) and add assembler support for Dalvik bytecode #857
- Call graph UI
- [x] Port 3X UI to 4X
- [x] Add UI to method context menus
- Mapping
- [x] Correlation mapping: See fabric's matcher for details
- The backing structure similarity logic can be useful in other places too
- Improved instrumentation
- [ ] Fetch `META-INF/MANIFEST.MF` for application info
- [ ] Option to copy remote `java.class.path` paths to a local workspace without attaching _(If all paths are found)_
- [ ] Option to run arbitrary payloads _(Pass over a `Runnable` instance and invoke it in a safe manner, reporting back results)_
- Simulation
- [ ] Rewrite a smaller version of `SSVM` and integrate it to support:
- [ ] Simulate _(for yielding a result)_
- [ ] Optimize _(for using the simulation to optimize code patterns)_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.