diff --git a/docs/source/shortcuts.rst b/docs/source/shortcuts.rst index 0b49d1ac..7d491328 100644 --- a/docs/source/shortcuts.rst +++ b/docs/source/shortcuts.rst @@ -33,6 +33,7 @@ Widget shortcuts Disassembly view shortcuts -------------------------- +*Most of these shortcuts are also applied to Disassembly Graph view* +------------+----------------------------------+ | Shortcut | Function | @@ -45,10 +46,24 @@ Disassembly view shortcuts +------------+----------------------------------+ | ; | Add comment | +------------+----------------------------------+ +| P | Define a new function | ++------------+----------------------------------+ +| Shift+P | Edit function | ++------------+----------------------------------+ +| U | Undefine a function | ++------------+----------------------------------+ | N | Rename current function/flag | +------------+----------------------------------+ | Shift+N | Rename flag/function used here | +------------+----------------------------------+ +| Y | Edit\rename local variables | ++------------+----------------------------------+ +| L | Link a type\struct to address | ++------------+----------------------------------+ +| A | Set current address to String | ++------------+----------------------------------+ +| C | Set current address to Code | ++------------+----------------------------------+ | X | Show Xrefs | +------------+----------------------------------+ | \+ | Zoom in | diff --git a/src/core/Cutter.cpp b/src/core/Cutter.cpp index 7220744b..4ceafc61 100644 --- a/src/core/Cutter.cpp +++ b/src/core/Cutter.cpp @@ -943,6 +943,13 @@ void CutterCore::cmdEsil(const char *command) } } +QString CutterCore::createFunctionAt(RVA addr) +{ + QString ret = cmd("af " + RAddressString(addr)); + emit functionsChanged(); + return ret; +} + QString CutterCore::createFunctionAt(RVA addr, QString name) { static const QRegExp regExp("[^a-zA-Z0-9_]"); diff --git a/src/core/Cutter.h b/src/core/Cutter.h index 65bf338e..5293d4ba 100644 --- a/src/core/Cutter.h +++ b/src/core/Cutter.h @@ -76,6 +76,7 @@ public: RVA getLastFunctionInstruction(RVA addr); QString cmdFunctionAt(QString addr); QString cmdFunctionAt(RVA addr); + QString createFunctionAt(RVA addr); QString createFunctionAt(RVA addr, QString name); QStringList getDisassemblyPreview(RVA address, int num_of_lines); diff --git a/src/menus/DisassemblyContextMenu.cpp b/src/menus/DisassemblyContextMenu.cpp index a0c0b5ba..f60d7ba5 100644 --- a/src/menus/DisassemblyContextMenu.cpp +++ b/src/menus/DisassemblyContextMenu.cpp @@ -49,7 +49,7 @@ DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent, MainWindow *main addAction(&actionRename); initAction(&actionEditFunction, tr("Edit function"), - SLOT(on_actionEditFunction_triggered())); + SLOT(on_actionEditFunction_triggered()), getEditFunctionSequence()); addAction(&actionEditFunction); initAction(&actionRenameUsedHere, tr("Rename Flag/Fcn/Var Used Here"), @@ -67,11 +67,11 @@ DisassemblyContextMenu::DisassemblyContextMenu(QWidget *parent, MainWindow *main addAction(&actionDeleteFlag); initAction(&actionDeleteFunction, tr("Undefine function"), - SLOT(on_actionDeleteFunction_triggered())); + SLOT(on_actionDeleteFunction_triggered()), getUndefineFunctionSequence()); addAction(&actionDeleteFunction); initAction(&actionAnalyzeFunction, tr("Define function here"), - SLOT(on_actionAnalyzeFunction_triggered())); + SLOT(on_actionAnalyzeFunction_triggered()), getDefineNewFunctionSequence()); addAction(&actionAnalyzeFunction); addSeparator(); @@ -530,6 +530,22 @@ QList DisassemblyContextMenu::getAddBPSequence() const return {Qt::Key_F2, Qt::CTRL + Qt::Key_B}; } +QKeySequence DisassemblyContextMenu::getDefineNewFunctionSequence() const +{ + return {Qt::Key_P}; +} + +QKeySequence DisassemblyContextMenu::getEditFunctionSequence() const +{ + return {Qt::SHIFT + Qt::Key_P}; +} + +QKeySequence DisassemblyContextMenu::getUndefineFunctionSequence() const +{ + return {Qt::Key_U}; +} + + void DisassemblyContextMenu::on_actionEditInstruction_triggered() { EditInstructionDialog e(EDIT_TEXT, this); diff --git a/src/menus/DisassemblyContextMenu.h b/src/menus/DisassemblyContextMenu.h index 9a061824..9c2da1fa 100644 --- a/src/menus/DisassemblyContextMenu.h +++ b/src/menus/DisassemblyContextMenu.h @@ -90,6 +90,9 @@ private: QKeySequence getRetypeSequence() const; QKeySequence getXRefSequence() const; QKeySequence getDisplayOptionsSequence() const; + QKeySequence getDefineNewFunctionSequence() const; + QKeySequence getUndefineFunctionSequence() const; + QKeySequence getEditFunctionSequence() const; QList getAddBPSequence() const; /**