Register plugins for operands

Aperta
#665 0 commenti 5 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
cpp

Direzione di ricerca

Start by reading PluginCommand and the existing instruction-level callbacks referenced in the issue. Trace how right-click context and InstructionTextToken data are exposed, then define what done means for registering a plugin on an operand and receiving that operand token plus its instruction address.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Component: Core Component: UI Effort: Low Impact: Medium UI: Linear

I think it would be nice to have a PluginCommand.register_for_operand that allowed a plugin to operate on a particular operand of an instruction. The plugin callback would be passed an InstructionTextToken object representing the operand that was right-clicked by the user (as well at least the address of the instruction it belongs to).

A very simple use case for this would be a plugin that would highlight all instructions that use a particular register. The user could right click a register, select the plugin, and then zoom out to see all instructions highlighted in a different color to indicate usage. This would be advantageous, because the token highlighting already provided by Binary Ninja can't be easily discerned when a function is zoomed out, but an entire line highlighted would be. Additionally, with the introduction of SSA, a plugin like this could apply highlighting to only instructions that use this particular version of the register, ignoring new definitions.

Obviously, the above example can be accomplished through the console, but that's not really the point, since it's just to demonstrate the usefulness of an operand-level plugin. With the current available callbacks, the user would have to select an instruction, invoke a plugin, and then plugin would then have to prompt the user to select the operand. This would streamline that process and make it a little more user friendly.

Lingua principale
C++
Stelle
1.3k
Fork
298
Merge medio
5g 5h
PR unite (30g)
19

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Vector35/binaryninja-api

Tutte le issue di Vector35/binaryninja-api

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.