summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Ferrell <josh@vector35.com>2024-10-14 16:00:22 -0400
committerJosh Ferrell <josh@vector35.com>2024-10-14 16:03:03 -0400
commita10ba14f3528577432f51a940fcadc69a535af4b (patch)
tree649ccd405da1ae3822a384af9aa014e6afee569a
parenta9d3753b9e6dcdb463a85a9d613ae37b00e94157 (diff)
Add BinaryNinja::Load(Ref<ProjectFile>) to c++ api
-rw-r--r--binaryninjaapi.h18
-rw-r--r--binaryview.cpp11
2 files changed, 29 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 4acb7b7e..bc13d67c 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -1456,6 +1456,7 @@ namespace BinaryNinja {
};
class BinaryView;
+ class ProjectFile;
/*! OpenView opens a file on disk and returns a BinaryView, attempting to use the most
relevant BinaryViewType and generating default load options (which are overridable).
@@ -1527,6 +1528,23 @@ namespace BinaryNinja {
*/
Ref<BinaryView> Load(Ref<BinaryView> rawData, bool updateAnalysis = true, const std::string& options = "{}", std::function<bool(size_t, size_t)> progress = {});
+ /*! Open a BinaryView from a ProjectFile, initializing data views and loading settings.
+
+ @threadmainonly
+
+ \see BinaryNinja::Load(const std::string&, bool, std::function<bool(size_t, size_t)>, Json::Value)
+ for discussion of this function.
+
+ \param rawData BinaryView with raw binary data to load
+ \param updateAnalysis If true, UpdateAnalysisAndWait() will be called after opening
+ a BinaryView.
+ \param options A Json string whose keys are setting identifiers and whose values are the desired settings.
+ \param progress Optional function to be called with progress updates as the view is
+ being loaded. If the function returns false, it will cancel Load.
+ \return Constructed view, or a nullptr Ref<BinaryView>
+ */
+ Ref<BinaryView> Load(Ref<ProjectFile> rawData, bool updateAnalysis = true, const std::string& options = "{}", std::function<bool(size_t, size_t)> progress = {});
+
/*!
Deprecated. Use non-metadata version.
*/
diff --git a/binaryview.cpp b/binaryview.cpp
index 0570e635..510d74a5 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -5455,6 +5455,17 @@ Ref<BinaryView> BinaryNinja::Load(Ref<BinaryView> view, bool updateAnalysis, con
}
+Ref<BinaryView> BinaryNinja::Load(Ref<ProjectFile> projectFile, bool updateAnalysis, const std::string& options, std::function<bool(size_t, size_t)> progress)
+{
+ ProgressContext cb;
+ cb.callback = progress;
+ BNBinaryView* handle = BNLoadProjectFile(projectFile->GetObject(), updateAnalysis, options.c_str(), ProgressCallback, &cb);
+ if (!handle)
+ return nullptr;
+ return new BinaryView(handle);
+}
+
+
SymbolQueue::SymbolQueue()
{
m_object = BNCreateSymbolQueue();