Improve Rebase Speed and/or UX

Open
#4,799 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
20/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Stale
Tech stack
cpp

Research direction

Start by reading the linked debugger issues, Vector35/debugger#214 and #483, and reproduce the ASLR rebase workflow described in the issue with a large binary. Done means the debugger no longer becomes effectively unusable during copying or rebasing and the cited use case is better supported, regardless of the implementation.

Written by the indexing model from the issue text.

Description

Component: Core Component: Database Effort: High Impact: High

There are a few situations that will arise, while using the debugger, where things will need to be copied or rebased. These operations can take a very long time and, if you have a big enough binary, this can effectively render the debugger unusable.

Potentially relevant debugger issues:

  • Vector35/debugger#214
  • Vector35/debugger#483

There are multiple things we could do (or look into doing) that would address this, some of which may already be issues. I'm just making this one to track the overall problem so we can prioritize for some future release.

Example from a recent user in Slack:

After waiting for analysis to complete and launching the game in the debugger, BN performs a rebase (ASLR) and... restarts the whole analysis from scratch. The code at my breakpoint is no longer valid and the game sits on a black screen, barely able to start while BN uses most of the CPU to run the 15min analysis for the second time. In contrast, IDA needs ~10 seconds to adjust to the new image base and have the game up and running.

I would happily consider this issue closed once the above use-case is better supported, regardless of whatever implementation(s) happen to get us there.

Dominant language
C++
Stars
1.3k
Forks
298
Avg merge
5d 5h
Merged PRs (30d)
19

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.

More from Vector35/binaryninja-api

All issues in Vector35/binaryninja-api

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.