From c4b1dd712783e7474570705e6d95183a0c02a76e Mon Sep 17 00:00:00 2001 From: Xusheng Date: Fri, 5 Feb 2021 20:28:13 +0800 Subject: add persistent search result --- ui/viewframe.h | 50 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 12 deletions(-) (limited to 'ui/viewframe.h') diff --git a/ui/viewframe.h b/ui/viewframe.h index 36072430..4d1ebf32 100644 --- a/ui/viewframe.h +++ b/ui/viewframe.h @@ -14,6 +14,7 @@ #include #include #include +#include "binaryninjaapi.h" #include "filecontext.h" #include "viewtype.h" #include "action.h" @@ -78,6 +79,7 @@ class FeatureMap; class StatusBarWidget; class ViewNavigationMode; class TransformParameterDialog; +// struct BinaryNinjaCore::LinearDisassemblyLine; class BINARYNINJAUIAPI View @@ -109,14 +111,31 @@ public: virtual bool canAssemble() { return false; } virtual bool canCompile() { return false; } - virtual bool findNextData(uint64_t start, uint64_t end, const BinaryNinja::DataBuffer& data, uint64_t& addr, BNFindFlag flags, + virtual bool findNextData(uint64_t start, uint64_t end, const BinaryNinja::DataBuffer& data, + uint64_t& addr, BNFindFlag flags, const std::function& cb); - virtual bool findNextText(uint64_t start, uint64_t end, const std::string& text, uint64_t& addr, - DisassemblySettingsRef settings, BNFindFlag flags, + 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& cb); - virtual bool findNextConstant(uint64_t start, uint64_t end, uint64_t constant, uint64_t& addr, DisassemblySettingsRef settings, + virtual bool findNextConstant(uint64_t start, uint64_t end, uint64_t constant, + uint64_t& addr, DisassemblySettingsRef settings, BNFunctionGraphType graph, const std::function& cb); + virtual bool findAllData(uint64_t start, uint64_t end, const BinaryNinja::DataBuffer& data, BNFindFlag flags, + const std::function& cb, + const std::function& matchCallback); + virtual bool findAllText(uint64_t start, uint64_t end, const std::string& data, + DisassemblySettingsRef settings, BNFindFlag flags, BNFunctionGraphType graph, + const std::function& cb, + const std::function& matchCallback); + virtual bool findAllConstant(uint64_t start, uint64_t end, uint64_t constant, + DisassemblySettingsRef settings, BNFunctionGraphType graph, + const std::function& cb, + const std::function& matchCallback); + virtual BinaryViewRef getData() = 0; virtual uint64_t getCurrentOffset() = 0; virtual BNAddressRange getSelectionOffsets(); @@ -307,12 +326,12 @@ public: QString getShortFileName(); std::vector getAvailableTypes() const; - QString getCurrentView(); - QString getCurrentDataType(); - uint64_t getCurrentOffset(); - BNAddressRange getSelectionOffsets(); + QString getCurrentView() const; + QString getCurrentDataType() const; + uint64_t getCurrentOffset() const; + BNAddressRange getSelectionOffsets() const; - ViewLocation getViewLocation(); + ViewLocation getViewLocation() const; void setViewLocation(const ViewLocation& viewLocation); View* getCurrentViewInterface() const { return View::getViewFromWidget(m_view); } @@ -335,9 +354,9 @@ public: bool goToReference(BinaryViewRef data, FunctionRef func, uint64_t source, uint64_t target, bool addHistoryEntry = true); bool navigateToViewLocation(BinaryViewRef data, const ViewLocation& viewLocation, bool addHistoryEntry = true); - QString getTypeForView(QWidget* view); - QString getDataTypeForView(const QString& type); - QString getDataTypeForView(QWidget* view); + QString getTypeForView(QWidget* view) const; + QString getDataTypeForView(const QString& type) const; + QString getDataTypeForView(QWidget* view) const; bool closeRequest(); void closing(); @@ -367,6 +386,13 @@ public: void nextTag(); void prevTag(); + void startNewFind(const BinaryNinja::FindParameters& params); + bool updateSearchProgress(uint64_t cur, uint64_t total); + void notifySearchCompleted(); + void addSearchResult(uint64_t addr, const BinaryNinja::DataBuffer& match); + void addSearchResult(uint64_t addr, const BinaryNinja::DataBuffer& match, + const BinaryNinja::LinearDisassemblyLine& line); + virtual UIActionContext actionContext(); void bindActions(); static void registerActions(); -- cgit v1.3.1