You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
describes the workspace with generic traits; i.e.:
main class/other entry points
level of obfuscation
usages of certain classes (URLClassLoader, Cipher, ... - ones that may indicate malicious intent)
Find usages/implementations within a workspace
implementations: can be built on top of the inheritance graph
usages: probably using the search functionality, but the performance could be improved with indexing rather than linear search
Harden the ZIP parser
currently, an end-of-central-directory record (EOCDR) is needed to parse the file, however OpenJDK can also read ZIPs with only local file records
Rework the code/hex tab system to allow for more ways of interpretation + make it easily switchable
e.g. Android binary XML, which needs an intermediate translation step to make it back into text
Disassembly:
Remapping
If you're reading this and want to use remapping right now, the support for it is not finished and your mileage may vary. There will be weird bugs.
preliminary support in @katana-project/asm/analysis/remap, does not support annotations and modules
should be implemented as a transformer -> refactor transformers to be pre- and post-analysis instead of just post-analysis
change Project pane "Classes and packages" mode to work with class names instead of just file names -> viewing remapped names
search does not take remapping into account
propagate mapping of superclass methods to all subclass overrides
verify bridge method mapping
method parameters, local variables
Tiny v2 name un/escaping
source namespace choice
automatic generation of uniform mappings for the entire workspace
Improve decompilation output
decreased output quality - currently, decompilers do not have access to the Java standard library, like they would in a real JVM
sometimes decompilers fail entirely when they shouldn't (example: the Ethanol Minecraft plugin RAT), perhaps due to a TeaVM quirk?
patch more decompiler/ASM crashing cases in the verification transformer, reference: Recaf's cafedude
Port decompilers/disassemblers to WASM (through TeaVM WASM GC backend)
JASM
Vineflower
Procyon
CFR
slicer (pseudocode disassembler) - N/A, it's plenty fast and I don't want to delve into AssemblyScript right now
Terminate disassembler workers without any tab to receive the result
mainly so you don't have disassembly tasks taking too long and lingering around when you change the disassembler
UI/UX:
Improve the context menu
the default browser context menu is disabled app-wide, so maybe replace it with a custom one with basic things like Copy+Paste?
add file context menus to tab headers
and search results
Collapse long paths with single-child directories
Add a centralized configuration place of some sort
many checkboxes/radio buttons throughout the app are persisted, but maybe move them into a more centralized tab/dialog?
Expose disassembler configuration in UI
right now, you can only use the scripting API to make (temporary) changes to the disassembler's configuration
Improve search UX
files: the command field on double-shift is not immediately obvious
classes: add presets to allow you to search strings/references/declarations/...
you can already do this with the Constant pool mode pretty much, but it's not obvious to newbies + you need to know the disassembled syntax from the docs
Replace the default CodeMirror Ctrl+F menu with something that can be localized
Replace the Touhou art in the About dialog with something else (for the 100 stars milestone)
Improve the design consistency in the structure pane
the subsection titles in the summary and class structure (Entry points vs. Fields, Constructors, ...) look very different, but they're still in the same pane
General:
currently, an end-of-central-directory record (EOCDR) is needed to parse the file, however OpenJDK can also read ZIPs with only local file recordsDisassembly:
preliminarysupport in@katana-project/asm/analysis/remap, does not support annotations and modulesdecreased output quality - currently, decompilers do not have access to the Java standard library, like they would in a real JVMUI/UX:
the default browser context menu is disabled app-wide, so maybe replace it with a custom one with basic things like Copy+Paste?right now, you can only use the scripting API to make (temporary) changes to the disassembler's configurationyou can already do this with the Constant pool mode pretty much, but it's not obvious to newbies + you need to know the disassembled syntax from the docs