From d8ff0a6324fe92ccafe296298409c50cc4b526fa Mon Sep 17 00:00:00 2001 From: Peter LaFosse Date: Thu, 8 Nov 2018 09:58:36 -0500 Subject: Add expression parsing APIs Add text-based and constant-based searching --- binaryview.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'binaryview.cpp') diff --git a/binaryview.cpp b/binaryview.cpp index 1302b0cb..984edda8 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -1989,6 +1989,17 @@ bool BinaryView::FindNextData(uint64_t start, const DataBuffer& data, uint64_t& return BNFindNextData(m_object, start, data.GetBufferObject(), &result, flags); } +bool BinaryView::FindNextText(uint64_t start, const std::string& data, uint64_t& result, + Ref settings, BNFindFlag flags) +{ + return BNFindNextText(m_object, start, data.c_str(), &result, settings->GetObject(), flags); +} + +bool BinaryView::FindNextConstant(uint64_t start, uint64_t constant, uint64_t& result, Ref settings) +{ + return BNFindNextConstant(m_object, start, constant, &result, settings->GetObject()); +} + void BinaryView::Reanalyze() { @@ -2303,6 +2314,20 @@ NameSpace BinaryView::GetExternalNameSpace() } +bool BinaryView::ParseExpression(const string& expression, uint64_t &offset, uint64_t here, string& errorString) +{ + char* err = nullptr; + if (!BNParseExpression(m_object, expression.c_str(), &offset, here, &err)) + { + LogDebug("Failed to parse expression: '%s': Error: '%s'", expression.c_str(), err); + errorString = string(err); + BNFreeParseError(err); + return false; + } + return true; +} + + Relocation::Relocation(BNRelocation* reloc) { m_object = reloc; -- cgit v1.3.1