Vector35 / Vector35/binaryninja-api
Segments API bitness attribute for x86 binaries that have a mix of 16-bit and 32-bit segments
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 1.3k
- Forks
- 298
- Avg merge
- 5d 5h
- Merged PRs (30d)
- 19
Description
Currently, when you load a MBR containing a mix of 32-bit protected mode and 16-bit real mode code you must specify the architecture as either x86-32 or x86-16. There is no way to tell BN that segment x is 16-bit and segment y is 32-bit code. For this reason, analysis is often inaccurate requiring a lot of undefining/re-creating functions.
I'd like the segments API to consist of a bitness attribute and analysis to decompile x86 code based on the segment bitness. In IDA, you can Change segment attributes by hitting Shift+F7, right clicking on a segment, and clicking Edit segment. In this window there is a "Segment bitness" combo box that allows you to select 16-bit, 32-bit, or 64-bit.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Segments API and the x86 analysis/decompilation behavior described in the issue. Define how a segment-level bitness attribute should represent 16-bit, 32-bit, and 64-bit segments, then verify that mixed 16-bit and 32-bit x86 binaries are analyzed according to each segment's setting.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- backend-api-design, reverse-engineering
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100