Classes | |
class | CreateStackVariableDialog |
Dialog to enable arbitrary stack variable creation. More... | |
class | StackViewLine |
A single line in the stack view. More... | |
class | StackView |
The Stack View. More... | |
class | StackViewSidebarWidget |
Stack view sidebar widget wrapper. More... | |
class | StackViewSidebarWidgetType |
Enumerations | |
enum class | Direction { Direction::Up , Direction::Down , Direction::Left , Direction::Right } |
Simple direction enum; used for cursor movement functions. More... | |
class CreateStackVariableDialog |
Dialog to enable arbitrary stack variable creation.
Public Member Functions | |
CreateStackVariableDialog (QWidget *parent, BinaryViewRef data, FunctionRef func, int64_t initialOffset=0) | |
Protected Member Functions | |
void | accept () override |
CreateStackVariableDialog::CreateStackVariableDialog | ( | QWidget * | parent, |
BinaryViewRef | data, | ||
FunctionRef | func, | ||
int64_t | initialOffset = 0 |
||
) |
|
overrideprotected |
class StackViewLine |
A single line in the stack view.
Public Types | |
enum class | Type { Variable , Member , OffsetRef , Annotation , Fill } |
Public Member Functions | |
StackViewLine::Type | type () const |
Get this line's type. More... | |
int64_t | offset () const |
Get the stack frame offset for this line. More... | |
int64_t | baseOffset () const |
Get the value of the base offset. More... | |
std::string | baseName () const |
Get the name of the base offset. More... | |
void | setBase (const std::string &baseName, int64_t baseOffset) |
Set the base offset to a given name and value. Does not affect offset() More... | |
size_t | width () const |
Get the number of bytes this line represents on the stack. More... | |
size_t | level () const |
Get the hierarchical level of this line. More... | |
void | setLevel (size_t level) |
Set the hierarchical level for this line. More... | |
TypeRef | dataType () const |
Get the type of the data this line represents. More... | |
void | setDataType (TypeRef vnat) |
Set the type of the data this line represents. Does not affect the underlying variable. More... | |
BinaryNinja::Variable | variable () const |
Get the variable represented by this line. More... | |
void | setVariable (const BinaryNinja::Variable &var) |
Set the variable represented by this line. More... | |
void | setWidthOverride (size_t width) |
Set a width override for this line. More... | |
bool | isDataBacked () const |
Is this line backed by data or is it ephermeral? More... | |
bool | isReferenced () const |
Is the data represented by this line referenced in the current function? More... | |
void | setIsReferenced (bool isReferenced) |
Set whether the data represented by this line is referenced in the current function. More... | |
bool | isUnused () const |
Is the data represented by this line unused in the current function? More... | |
void | setIsUnused (bool isUnused) |
Set whether the data represented by this line unused in the current function. More... | |
BinaryNinja::DisassemblyTextLine | content () const |
Get the content (with no offset) for this line. More... | |
BinaryNinja::DisassemblyTextLine | contentWithOffset (bool hide=false) const |
Get the content with the leading offset (or padding) for this line. More... | |
size_t | contentWidth (bool withOffset=true) const |
Get the width of the total line content in characters. More... | |
void | appendToken (const BinaryNinja::InstructionTextToken &token) |
Append a single token to this line's content. More... | |
void | appendTokens (const std::vector< BinaryNinja::InstructionTextToken > &tokens) |
Append multiple tokens to this line's content. More... | |
void | indent (size_t levels=1) |
Indent this line's content. More... | |
Static Public Member Functions | |
static StackViewLine | variable (int64_t offset, const BinaryNinja::VariableNameAndType &vnat, PlatformRef plat) |
Create a new line for a variable. More... | |
static StackViewLine | member (int64_t offset, const BinaryNinja::VariableNameAndType &vnat, PlatformRef plat) |
Create a new line for a struct or array member. More... | |
static StackViewLine | offsetRef (int64_t base, uint64_t offset, size_t size) |
Create a new line for a struct offset reference. More... | |
static StackViewLine | annotation (int64_t offset, const std::string &text) |
Create a new annotation line. More... | |
static StackViewLine | fill (int64_t offset, size_t length) |
Create a new fill line. More... | |
|
strong |
|
static |
Create a new line for a variable.
|
static |
Create a new line for a struct or array member.
|
static |
Create a new line for a struct offset reference.
|
static |
Create a new annotation line.
|
static |
Create a new fill line.
StackViewLine::Type StackViewLine::type | ( | ) | const |
Get this line's type.
int64_t StackViewLine::offset | ( | ) | const |
Get the stack frame offset for this line.
int64_t StackViewLine::baseOffset | ( | ) | const |
Get the value of the base offset.
std::string StackViewLine::baseName | ( | ) | const |
Get the name of the base offset.
void StackViewLine::setBase | ( | const std::string & | baseName, |
int64_t | baseOffset | ||
) |
Set the base offset to a given name and value. Does not affect offset()
size_t StackViewLine::width | ( | ) | const |
Get the number of bytes this line represents on the stack.
size_t StackViewLine::level | ( | ) | const |
Get the hierarchical level of this line.
void StackViewLine::setLevel | ( | size_t | level | ) |
Set the hierarchical level for this line.
TypeRef StackViewLine::dataType | ( | ) | const |
Get the type of the data this line represents.
void StackViewLine::setDataType | ( | TypeRef | vnat | ) |
Set the type of the data this line represents. Does not affect the underlying variable.
BinaryNinja::Variable StackViewLine::variable | ( | ) | const |
Get the variable represented by this line.
void StackViewLine::setVariable | ( | const BinaryNinja::Variable & | var | ) |
Set the variable represented by this line.
void StackViewLine::setWidthOverride | ( | size_t | width | ) |
Set a width override for this line.
bool StackViewLine::isDataBacked | ( | ) | const |
Is this line backed by data or is it ephermeral?
bool StackViewLine::isReferenced | ( | ) | const |
Is the data represented by this line referenced in the current function?
void StackViewLine::setIsReferenced | ( | bool | isReferenced | ) |
Set whether the data represented by this line is referenced in the current function.
bool StackViewLine::isUnused | ( | ) | const |
Is the data represented by this line unused in the current function?
void StackViewLine::setIsUnused | ( | bool | isUnused | ) |
Set whether the data represented by this line unused in the current function.
BinaryNinja::DisassemblyTextLine StackViewLine::content | ( | ) | const |
Get the content (with no offset) for this line.
BinaryNinja::DisassemblyTextLine StackViewLine::contentWithOffset | ( | bool | hide = false | ) | const |
Get the content with the leading offset (or padding) for this line.
size_t StackViewLine::contentWidth | ( | bool | withOffset = true | ) | const |
Get the width of the total line content in characters.
void StackViewLine::appendToken | ( | const BinaryNinja::InstructionTextToken & | token | ) |
Append a single token to this line's content.
void StackViewLine::appendTokens | ( | const std::vector< BinaryNinja::InstructionTextToken > & | tokens | ) |
Append multiple tokens to this line's content.
void StackViewLine::indent | ( | size_t | levels = 1 | ) |
Indent this line's content.
class StackView |
The Stack View.
Public Member Functions | |
StackView (ViewFrame *view, BinaryViewRef data) | |
void | refresh () |
Refresh the stack view's content. More... | |
void | moveCursorToMouse (QMouseEvent *event, bool isSelecting) |
Move the cursor to approximate clicked position. More... | |
void | ensureCursorIsVisible () |
Ensure the cursor is visible by adjusting the scroll position. More... | |
void | moveCursor (Direction dir) |
Move the cursor via the keyboard. More... | |
void | sanitizeCursor (Direction preference) |
Ensure the cursor is not selecting any prohibited tokens. More... | |
const StackViewLine * | selectedLine () const |
Get the selected StackViewLine. More... | |
void | renameVariable () |
Rename the variable belonging to the selected line. More... | |
void | retypeVariable () |
Change the type of the variable belonging to the selected line. More... | |
void | undefineVariable () |
Undefine the variable belonging to the selected line. More... | |
void | showCreateVariableDialog () |
Show the "Create Variable" dialog. More... | |
void | quickCreateIntegerAtCursor (size_t size) |
void | quickInvertIntegerSignAtCursor () |
Toggle the sign of the integer at the cursor position. More... | |
void | quickCreateFloatAtCursor (size_t size) |
void | quickCreatePointerAtCursor () |
Create a pointer the cursor. More... | |
void | quickCreateArrayAtCursor () |
Create an array at the cursor, spanning until the next stack variable. More... | |
void | quickCreateStructAtCursor () |
Create a new struct at the cursor, spanning until the next stack variable. More... | |
void | chooseBaseRegister () |
Show the dialog to switch which base register is used for offsets. More... | |
void | chooseBaseOffset () |
Show the dialog to pick a constant base offset. More... | |
void | setBaseRegister (ArchitectureRef arch, std::optional< std::string > regName) |
Set the base offset to a register (or clear on nullopt) More... | |
void | setBaseOffset (FunctionRef func, std::optional< int64_t > offset) |
Set the base offset to a constant (or clear on nullopt) More... | |
void | setPositionAware (bool positionAware) |
Set whether we show only the vars relevant for the current address. More... | |
bool | event (QEvent *event) override |
Override the default event handler so we can have nice tooltips. More... | |
std::pair< std::string, int64_t > | calculateBaseOffset () const |
Get the current base name/offset using the currently selected base register. More... | |
BinaryViewRef | getData () override |
uint64_t | getCurrentOffset () override |
bool | canCopyAddress () override |
bool | canPaste () override |
void | setSelectionOffsets (BNAddressRange range) override |
bool | navigate (uint64_t offset) override |
QFont | getFont () override |
void | updateFonts () override |
Public Member Functions inherited from View | |
View () | |
virtual | ~View () |
void | enableRefreshTimer (QWidget *owner, int interval) |
void | setRefreshQuiesce (bool enable) |
bool | isQuiesced () const |
virtual void | notifyRefresh () |
virtual void | notifyQuiesce (bool) |
void | setupView (QWidget *widget) |
virtual bool | canAssemble () |
virtual bool | canCompile () |
virtual bool | findNextData (uint64_t start, uint64_t end, const BinaryNinja::DataBuffer &data, uint64_t &addr, BNFindFlag flags, const std::function< bool(size_t current, size_t total)> &cb) |
virtual bool | findNextText (uint64_t start, uint64_t end, const std::string &text, uint64_t &addr, DisassemblySettingsRef settings, BNFindFlag flags, BNFunctionGraphType graph, const std::function< bool(size_t current, size_t total)> &cb) |
virtual bool | findNextConstant (uint64_t start, uint64_t end, uint64_t constant, uint64_t &addr, DisassemblySettingsRef settings, BNFunctionGraphType graph, const std::function< bool(size_t current, size_t total)> &cb) |
virtual bool | findAllData (uint64_t start, uint64_t end, const BinaryNinja::DataBuffer &data, BNFindFlag flags, const std::function< bool(size_t current, size_t total)> &cb, const std::function< bool(uint64_t addr, const BinaryNinja::DataBuffer &match)> &matchCallback) |
virtual bool | findAllText (uint64_t start, uint64_t end, const std::string &data, DisassemblySettingsRef settings, BNFindFlag flags, BNFunctionGraphType graph, const std::function< bool(size_t current, size_t total)> &cb, const std::function< bool(uint64_t addr, const std::string &match, const BinaryNinja::LinearDisassemblyLine &line)> &matchCallback) |
virtual bool | findAllConstant (uint64_t start, uint64_t end, uint64_t constant, DisassemblySettingsRef settings, BNFunctionGraphType graph, const std::function< bool(size_t current, size_t total)> &cb, const std::function< bool(uint64_t addr, const BinaryNinja::LinearDisassemblyLine &line)> &matchCallback) |
virtual BinaryViewRef | getData ()=0 |
virtual uint64_t | getCurrentOffset ()=0 |
virtual BNAddressRange | getSelectionOffsets () |
virtual SelectionInfoForXref | getSelectionForXref () |
virtual void | setSelectionOffsets (BNAddressRange range)=0 |
virtual bool | navigate (uint64_t offset)=0 |
virtual bool | navigateToFunction (FunctionRef func, uint64_t offset) |
virtual bool | goToReference (FunctionRef func, uint64_t source, uint64_t target) |
virtual bool | navigateToViewLocation (const ViewLocation &viewLocation, bool center=false) |
bool | navigateOnOtherPane (uint64_t offset) |
bool | navigateToFunctionOnOtherPane (FunctionRef func, uint64_t offset) |
bool | isBinaryDataNavigable () |
void | setBinaryDataNavigable (bool navigable) |
virtual bool | closeRequest () |
virtual void | closing () |
virtual void | updateFonts () |
virtual void | updateTheme () |
virtual void | undo () |
virtual void | redo () |
virtual bool | canUndo () |
virtual bool | canRedo () |
virtual void | cut () |
virtual void | copy (TransformRef xform=nullptr) |
virtual void | copyAddress () |
virtual void | paste (TransformRef xform=nullptr) |
virtual bool | canCut () |
virtual bool | canCopy () |
virtual bool | canCopyWithTransform () |
virtual bool | canCopyAddress () |
virtual bool | canPaste () |
virtual bool | canPasteWithTransform () |
virtual void | transform (TransformRef xform, bool encode) |
virtual bool | canTransform () |
virtual void | writeData (const BinaryNinja::DataBuffer &data, uint64_t addr) |
virtual bool | canDisplayAs (const UIActionContext &context, const BNIntegerDisplayType) |
virtual void | displayAs (const UIActionContext &context, BNIntegerDisplayType type) |
virtual BinaryNinja::Ref< HistoryEntry > | getHistoryEntry () |
virtual void | navigateToHistoryEntry (BinaryNinja::Ref< HistoryEntry > entry) |
virtual StatusBarWidget * | getStatusBarWidget () |
virtual ViewPaneHeaderSubtypeWidget * | getHeaderSubtypeWidget () |
virtual QWidget * | getHeaderOptionsWidget () |
virtual FunctionRef | getCurrentFunction () |
virtual BasicBlockRef | getCurrentBasicBlock () |
virtual ArchitectureRef | getCurrentArchitecture () |
virtual LowLevelILFunctionRef | getCurrentLowLevelILFunction () |
virtual MediumLevelILFunctionRef | getCurrentMediumLevelILFunction () |
virtual HighLevelILFunctionRef | getCurrentHighLevelILFunction () |
virtual BNFunctionGraphType | getILViewType () |
virtual void | setILViewType (BNFunctionGraphType ilViewType) |
virtual size_t | getCurrentILInstructionIndex () |
virtual size_t | getSelectionStartILInstructionIndex () |
virtual BNILIndexRange | getILIndexRange () |
virtual QFont | getFont ()=0 |
virtual DisassemblySettingsRef | getDisassemblySettings () |
virtual void | setDisassemblySettings (DisassemblySettingsRef settings) |
virtual HighlightTokenState | getHighlightTokenState () |
virtual UIActionContext | actionContext () |
Menu & | contextMenu () |
UIActionHandler * | actionHandler () |
QWidget * | widget () |
QString | viewType () |
void | updateCrossReferenceSelection (ViewFrame *frame=nullptr) |
void | forceSyncFromView (ViewFrame *frame=nullptr) |
virtual void | clearRelatedHighlights () |
virtual void | setRelatedIndexHighlights (FunctionRef func, const std::set< size_t > &related) |
virtual void | setRelatedInstructionHighlights (FunctionRef func, const std::set< uint64_t > &related) |
Protected Member Functions | |
void | paintEvent (QPaintEvent *event) override |
void | mousePressEvent (QMouseEvent *event) override |
void | mouseDoubleClickEvent (QMouseEvent *event) override |
Protected Member Functions inherited from View | |
bool | writeDataToClipboard (const BinaryNinja::DataBuffer &data, bool binary, TransformRef xform) |
BinaryNinja::DataBuffer | readDataFromClipboard (TransformRef xform) |
virtual std::string | getNavigationMode () |
virtual void | setNavigationMode (std::string mode) |
virtual std::vector< std::string > | getNavigationModes () |
Additional Inherited Members | |
Static Public Member Functions inherited from View | |
static View * | getViewFromWidget (QWidget *widget) |
static void | registerActions () |
static void | registerLateActions () |
Protected Attributes inherited from View | |
Menu | m_contextMenu |
UIActionHandler | m_actionHandler |
bool | m_binaryDataNavigable = false |
QPointer< TransformParameterDialog > | m_transformParamDialog |
bool | m_quiesceState = true |
QTimer * | m_updateTimer = nullptr |
StackView::StackView | ( | ViewFrame * | view, |
BinaryViewRef | data | ||
) |
|
overrideprotected |
|
overrideprotected |
|
overrideprotected |
void StackView::refresh | ( | ) |
Refresh the stack view's content.
void StackView::moveCursorToMouse | ( | QMouseEvent * | event, |
bool | isSelecting | ||
) |
Move the cursor to approximate clicked position.
void StackView::ensureCursorIsVisible | ( | ) |
Ensure the cursor is visible by adjusting the scroll position.
void StackView::moveCursor | ( | Direction | dir | ) |
Move the cursor via the keyboard.
void StackView::sanitizeCursor | ( | Direction | preference | ) |
Ensure the cursor is not selecting any prohibited tokens.
const StackViewLine * StackView::selectedLine | ( | ) | const |
Get the selected StackViewLine.
void StackView::renameVariable | ( | ) |
Rename the variable belonging to the selected line.
void StackView::retypeVariable | ( | ) |
Change the type of the variable belonging to the selected line.
void StackView::undefineVariable | ( | ) |
Undefine the variable belonging to the selected line.
void StackView::showCreateVariableDialog | ( | ) |
Show the "Create Variable" dialog.
void StackView::quickCreateIntegerAtCursor | ( | size_t | size | ) |
Create an integer of the given size at the cursor position. Pass `0` for `size` to cycle through integer sizes automatically.
void StackView::quickInvertIntegerSignAtCursor | ( | ) |
Toggle the sign of the integer at the cursor position.
void StackView::quickCreateFloatAtCursor | ( | size_t | size | ) |
Create an float of the given size at the cursor position. Pass `0` for `size` to cycle through float sizes automatically.
void StackView::quickCreatePointerAtCursor | ( | ) |
Create a pointer the cursor.
void StackView::quickCreateArrayAtCursor | ( | ) |
Create an array at the cursor, spanning until the next stack variable.
void StackView::quickCreateStructAtCursor | ( | ) |
Create a new struct at the cursor, spanning until the next stack variable.
void StackView::chooseBaseRegister | ( | ) |
Show the dialog to switch which base register is used for offsets.
void StackView::chooseBaseOffset | ( | ) |
Show the dialog to pick a constant base offset.
void StackView::setBaseRegister | ( | ArchitectureRef | arch, |
std::optional< std::string > | regName | ||
) |
Set the base offset to a register (or clear on nullopt)
void StackView::setBaseOffset | ( | FunctionRef | func, |
std::optional< int64_t > | offset | ||
) |
Set the base offset to a constant (or clear on nullopt)
void StackView::setPositionAware | ( | bool | positionAware | ) |
Set whether we show only the vars relevant for the current address.
|
override |
Override the default event handler so we can have nice tooltips.
std::pair< std::string, int64_t > StackView::calculateBaseOffset | ( | ) | const |
Get the current base name/offset using the currently selected base register.
|
overridevirtual |
Implements View.
|
overridevirtual |
Implements View.
|
inlineoverridevirtual |
Reimplemented from View.
|
inlineoverridevirtual |
Reimplemented from View.
|
overridevirtual |
Implements View.
|
overridevirtual |
Implements View.
|
overridevirtual |
Implements View.
|
overridevirtual |
Reimplemented from View.
class StackViewSidebarWidget |
Stack view sidebar widget wrapper.
Public Member Functions | |
StackViewSidebarWidget (ViewFrame *view, BinaryViewRef data) | |
QWidget * | headerWidget () override |
void | refresh () |
void | focus () override |
void | notifyFontChanged () override |
Public Member Functions inherited from SidebarWidget | |
SidebarWidget (const QString &title) | |
~SidebarWidget () | |
const QString & | title () const |
void | enableRefreshTimer (int interval) |
void | setRefreshQuiesce (bool enable) |
bool | isQuiesced () const |
virtual void | notifyRefresh () |
virtual void | notifyQuiesce (bool) |
virtual void | notifyFontChanged () |
virtual void | notifyOffsetChanged (uint64_t) |
virtual void | notifyThemeChanged () |
virtual void | notifyViewChanged (ViewFrame *) |
virtual void | notifyViewLocationChanged (View *, const ViewLocation &) |
virtual void | focus () |
virtual void | closing () |
virtual void | setPrimaryOrientation (Qt::Orientation) |
virtual QWidget * | headerWidget () |
Additional Inherited Members | |
Protected Attributes inherited from SidebarWidget | |
QString | m_title |
UIActionHandler | m_actionHandler |
ContextMenuManager * | m_contextMenuManager = nullptr |
Menu * | m_menu = nullptr |
bool | m_quiesceState = true |
QTimer * | m_updateTimer = nullptr |
StackViewSidebarWidget::StackViewSidebarWidget | ( | ViewFrame * | view, |
BinaryViewRef | data | ||
) |
|
inlineoverridevirtual |
Reimplemented from SidebarWidget.
void StackViewSidebarWidget::refresh | ( | ) |
|
inlineoverridevirtual |
Reimplemented from SidebarWidget.
|
inlineoverridevirtual |
Reimplemented from SidebarWidget.
class StackViewSidebarWidgetType |
StackViewSidebarWidgetType::StackViewSidebarWidgetType | ( | ) |
|
overridevirtual |
Reimplemented from SidebarWidgetType.
|
inlineoverridevirtual |
Reimplemented from SidebarWidgetType.
|
strong |