Vector35 / Vector35/binaryninja-api

Better support for stack machine decompilation

Open
#6,112 2 comments 5 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Component: Core Effort: High Impact: High
Dominant language
C++
Stars
1.3k
Forks
298
Avg merge
5d 5h
Merged PRs (30d)
19

Description

Right now binja's core deompilation capacity is more focused on handling register machines like x86 and arm. It would be great if we can also handle stack machines, e.g., Java/.NET/Python/WASM bytecode.

Right now, technically we can represent the operations of a stack machine using our IL, but the decompiler output is often times not optimal. We probably need to do some specific handling to improve the decompilation of a stack machine.

Note this is related to https://github.com/Vector35/binaryninja-api/issues/742 but not the same

Note, to have good support for Java/.NET, there are various other language specific issues beyond this that need to be addressed. WASM might be a good starting point in this sense.

Also this is unlikely to happen in the near future, however, I am creating this issue so that people can refer to it in discussion

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No file, test, or entry point is named. Read the related issue 742 and compare the current IL representation with decompilation of stack-machine bytecode, using WASM as the suggested starting point. Done would mean materially better, more optimal decompiler output for stack machines, with language-specific gaps tracked separately.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, python, wasm
Domain
compilers, reverse-engineering
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
18/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.