provide API for focusing an address without switching to the Binary Ninja window
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 35/100
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
- 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.
More from Vector35/binaryninja-api
-
Difficulty 1/5 1-3 hours Newbie friendliness 88/100
Vector35/binaryninja-api#8540 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Vector35/binaryninja-api#8516 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
Vector35/binaryninja-api#8503 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
Vector35/binaryninja-api#8446 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
Vector35/binaryninja-api#8444 ·
All issues in Vector35/binaryninja-api
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
Sensor initialization takes very long when `--initial-sim-time` is set to current UNIX timestamp Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
gazebosim/gz-sensors#662 · 1 comment ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
LadybirdBrowser/ladybird#12123 ·