Vector35 / Vector35/binaryninja-api

Segments API bitness attribute for x86 binaries that have a mix of 16-bit and 32-bit segments

Open
#2,387 1 comment 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Component: Architecture Effort: High Impact: Low
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

  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

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.