diff options
| author | Peter LaFosse <peter@vector35.com> | 2018-11-08 09:58:36 -0500 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2018-11-13 11:07:27 -0500 |
| commit | d8ff0a6324fe92ccafe296298409c50cc4b526fa (patch) | |
| tree | c5bf8cdf43902d3122a6747d5c42d9197afc0808 /binaryview.cpp | |
| parent | 9df7c7c621c82e6caa7a09c4273e4feba86277f2 (diff) | |
Add expression parsing APIs
Add text-based and constant-based searching
Diffstat (limited to 'binaryview.cpp')
| -rw-r--r-- | binaryview.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
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<DisassemblySettings> 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<DisassemblySettings> 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; |
