summaryrefslogtreecommitdiff
path: root/binaryview.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2024-08-22 12:55:49 -0600
committerRusty Wagner <rusty.wagner@gmail.com>2024-10-21 13:56:55 -0400
commitd8e3001e535fad178c621ff07418f81f25123dc4 (patch)
tree54c03cef2f0bdfd9a3b6df4334c81becb63e4993 /binaryview.cpp
parent0e281a30d73c0f31ef9442fef0346779164231ad (diff)
Allow multiple high level representations for display, add Pseudo Rust and a Pseudo Python example plugin
Diffstat (limited to 'binaryview.cpp')
-rw-r--r--binaryview.cpp38
1 files changed, 26 insertions, 12 deletions
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<DisassemblySettings> settings, BNFindFlag flags, BNFunctionGraphType graph)
+ Ref<DisassemblySettings> 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<DisassemblySettings> settings, BNFunctionGraphType graph)
+ uint64_t start, uint64_t constant, uint64_t& result, Ref<DisassemblySettings> 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<DisassemblySettings> settings, BNFindFlag flags, BNFunctionGraphType graph,
+ Ref<DisassemblySettings> settings, BNFindFlag flags, const FunctionViewType& viewType,
const std::function<bool(size_t current, size_t total)>& 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<DisassemblySettings> settings, BNFunctionGraphType graph,
+ Ref<DisassemblySettings> settings, const FunctionViewType& viewType,
const std::function<bool(size_t current, size_t total)>& 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<DisassemblySettings> settings,
- BNFindFlag flags, BNFunctionGraphType graph, const std::function<bool(size_t current, size_t total)>& progress,
+ BNFindFlag flags, const FunctionViewType& viewType, const std::function<bool(size_t current, size_t total)>& progress,
const std::function<bool(uint64_t addr, const std::string& match, const LinearDisassemblyLine& line)>&
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<DisassemblySettings> settings,
- BNFunctionGraphType graph, const std::function<bool(size_t current, size_t total)>& progress,
+ const FunctionViewType& viewType, const std::function<bool(size_t current, size_t total)>& progress,
const std::function<bool(uint64_t addr, const LinearDisassemblyLine& line)>& 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<RegisterValue>& valu
}
+optional<pair<string, BNStringType>> 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)
{