provide API for focusing an address without switching to the Binary Ninja window

Open
#7,698 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
cpp, python
Domain
api, desktop

Research direction

Start with the BinaryView.navigate API and the Python call shown in the issue, then trace how it causes the Binary Ninja GUI window to receive focus. Done means an address can be navigated to without switching window focus, while the existing navigation behavior remains available; compare the requested behavior with the linked decomp2dbg and pwndbg use cases.

Written by the indexing model from the issue text.

Description

What is the feature you'd like to have?
Provide an API for navigating to an address without switching to the Binary Ninja window. Currently when I run

bv.navigate(self.bv.view, addr)

(https://api.binary.ninja/binaryninja.binaryview-module.html#binaryninja.binaryview.BinaryView.navigate)
the correct address is jumped to, but my window manager switches to the window of the binary ninja gui. I don't want this to happen. A potential solution would be to provide an optional argument in navigate that does not focus the gui. IDA and Ghidra both support this.

Is your feature request related to a problem?
See https://github.com/mahaloz/decomp2dbg/issues/136 and https://github.com/pwndbg/pwndbg/pull/3401:

The usecase is that I want the focus_address() endpoint to be queried every time I step, so the decompiler is fully in sync with the debugger, but obviously this doesn't work if the decompiler steals window focus on every step.

decomp2dbg allows users to sync their debugging inside the CLI GDB with various decompiler backends. I am hooking into these plugins in pwndbg through XML RPC calls. I want the decompiler's cursor to be in sinc with the value of PC in the debugger during debugging. This is a nice QoL feature for the user because they can easly switch between the debugger and the decompiler and the decompilation is focused on right where they want it to be.

This works nicely for IDA and Ghidra, but doesn't work for Binary Ninja because it steals the window focus on every debugger step, making debugging with this cursor-syncing feature enabled impossible. It's a shame since binary ninja has the best plugin API among the decompilers, so having this feature would be really cool.

Alternatives
Having binja just not steal focus by default might also make sense, I don't know of a use-case that requires this focus switching.

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.