From d8e3001e535fad178c621ff07418f81f25123dc4 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Thu, 22 Aug 2024 12:55:49 -0600 Subject: Allow multiple high level representations for display, add Pseudo Rust and a Pseudo Python example plugin --- binaryview.cpp | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) (limited to 'binaryview.cpp') diff --git a/binaryview.cpp b/binaryview.cpp index 510d74a5..d2dbee56 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -4533,15 +4533,15 @@ bool BinaryView::FindNextData(uint64_t start, const DataBuffer& data, uint64_t& } bool BinaryView::FindNextText(uint64_t start, const std::string& data, uint64_t& result, - Ref settings, BNFindFlag flags, BNFunctionGraphType graph) + Ref settings, BNFindFlag flags, const FunctionViewType& viewType) { - return BNFindNextText(m_object, start, data.c_str(), &result, settings->GetObject(), flags, graph); + return BNFindNextText(m_object, start, data.c_str(), &result, settings->GetObject(), flags, viewType.ToAPIObject()); } bool BinaryView::FindNextConstant( - uint64_t start, uint64_t constant, uint64_t& result, Ref settings, BNFunctionGraphType graph) + uint64_t start, uint64_t constant, uint64_t& result, Ref settings, const FunctionViewType& viewType) { - return BNFindNextConstant(m_object, start, constant, &result, settings->GetObject(), graph); + return BNFindNextConstant(m_object, start, constant, &result, settings->GetObject(), viewType.ToAPIObject()); } @@ -4603,24 +4603,24 @@ bool BinaryView::FindNextData(uint64_t start, uint64_t end, const DataBuffer& da bool BinaryView::FindNextText(uint64_t start, uint64_t end, const std::string& data, uint64_t& addr, - Ref settings, BNFindFlag flags, BNFunctionGraphType graph, + Ref settings, BNFindFlag flags, const FunctionViewType& viewType, const std::function& progress) { ProgressContext fp; fp.callback = progress; return BNFindNextTextWithProgress( - m_object, start, end, data.c_str(), &addr, settings->GetObject(), flags, graph, &fp, ProgressCallback); + m_object, start, end, data.c_str(), &addr, settings->GetObject(), flags, viewType.ToAPIObject(), &fp, ProgressCallback); } bool BinaryView::FindNextConstant(uint64_t start, uint64_t end, uint64_t constant, uint64_t& addr, - Ref settings, BNFunctionGraphType graph, + Ref settings, const FunctionViewType& viewType, const std::function& progress) { ProgressContext fp; fp.callback = progress; return BNFindNextConstantWithProgress( - m_object, start, end, constant, &addr, settings->GetObject(), graph, &fp, ProgressCallback); + m_object, start, end, constant, &addr, settings->GetObject(), viewType.ToAPIObject(), &fp, ProgressCallback); } @@ -4638,7 +4638,7 @@ bool BinaryView::FindAllData(uint64_t start, uint64_t end, const DataBuffer& dat bool BinaryView::FindAllText(uint64_t start, uint64_t end, const std::string& data, Ref settings, - BNFindFlag flags, BNFunctionGraphType graph, const std::function& progress, + BNFindFlag flags, const FunctionViewType& viewType, const std::function& progress, const std::function& matchCallback) { @@ -4646,20 +4646,20 @@ bool BinaryView::FindAllText(uint64_t start, uint64_t end, const std::string& da fp.callback = progress; MatchCallbackContextForText mc; mc.func = matchCallback; - return BNFindAllTextWithProgress(m_object, start, end, data.c_str(), settings->GetObject(), flags, graph, &fp, + return BNFindAllTextWithProgress(m_object, start, end, data.c_str(), settings->GetObject(), flags, viewType.ToAPIObject(), &fp, ProgressCallback, &mc, MatchCallbackForText); } bool BinaryView::FindAllConstant(uint64_t start, uint64_t end, uint64_t constant, Ref settings, - BNFunctionGraphType graph, const std::function& progress, + const FunctionViewType& viewType, const std::function& progress, const std::function& matchCallback) { ProgressContext fp; fp.callback = progress; MatchCallbackContextForConstant mc; mc.func = matchCallback; - return BNFindAllConstantWithProgress(m_object, start, end, constant, settings->GetObject(), graph, &fp, + return BNFindAllConstantWithProgress(m_object, start, end, constant, settings->GetObject(), viewType.ToAPIObject(), &fp, ProgressCallback, &mc, MatchCallbackForConstant); } @@ -5316,6 +5316,20 @@ void BinaryView::SetUserGlobalPointerValue(const Confidence& valu } +optional> BinaryView::StringifyUnicodeData(Architecture* arch, + const DataBuffer& buffer, bool allowShortStrings) +{ + char* str = nullptr; + BNStringType type = AsciiString; + if (!BNStringifyUnicodeData(m_object, arch ? arch->GetObject() : nullptr, buffer.GetBufferObject(), + allowShortStrings, &str, &type)) + return nullopt; + + string result(str); + BNFreeString(str); + return make_pair(result, type); +} + Relocation::Relocation(BNRelocation* reloc) { -- cgit v1.3.1