summaryrefslogtreecommitdiff
path: root/binaryninjaapi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'binaryninjaapi.cpp')
-rw-r--r--binaryninjaapi.cpp31
1 files changed, 28 insertions, 3 deletions
diff --git a/binaryninjaapi.cpp b/binaryninjaapi.cpp
index f9a9ac9c..026e93b3 100644
--- a/binaryninjaapi.cpp
+++ b/binaryninjaapi.cpp
@@ -349,6 +349,7 @@ BinaryView::BinaryView(FileMetadata* file)
view.getModification = GetModificationCallback;
view.getStart = GetStartCallback;
view.getLength = GetLengthCallback;
+ view.isExecutable = IsExecutableCallback;
view.save = SaveCallback;
m_file = file;
@@ -418,6 +419,13 @@ uint64_t BinaryView::GetLengthCallback(void* ctxt)
}
+bool BinaryView::IsExecutableCallback(void* ctxt)
+{
+ BinaryView* view = (BinaryView*)ctxt;
+ return view->IsExecutable();
+}
+
+
bool BinaryView::SaveCallback(void* ctxt, BNFileAccessor* file)
{
BinaryView* view = (BinaryView*)ctxt;
@@ -584,6 +592,12 @@ uint64_t CoreBinaryView::GetLength() const
}
+bool CoreBinaryView::IsExecutable() const
+{
+ return BNIsExecutableView(m_view);
+}
+
+
bool CoreBinaryView::Save(FileAccessor* file)
{
return BNSaveToFile(m_view, file->GetCallbacks());
@@ -641,7 +655,8 @@ BinaryViewType::BinaryViewType(BNBinaryViewType* type): m_type(type)
}
-BinaryViewType::BinaryViewType(const string& name): m_type(nullptr), m_nameForRegister(name)
+BinaryViewType::BinaryViewType(const string& name, const string& longName):
+ m_type(nullptr), m_nameForRegister(name), m_longNameForRegister(longName)
{
}
@@ -659,7 +674,8 @@ void BinaryViewType::Register(BinaryViewType* type)
callbacks.create = CreateCallback;
callbacks.isValidForData = IsValidCallback;
- type->m_type = BNRegisterBinaryViewType(type->m_nameForRegister.c_str(), &callbacks);
+ type->m_type = BNRegisterBinaryViewType(type->m_nameForRegister.c_str(),
+ type->m_longNameForRegister.c_str(), &callbacks);
}
@@ -672,7 +688,7 @@ Ref<BinaryViewType> BinaryViewType::GetByName(const string& name)
}
-vector<Ref<BinaryViewType>> BinaryViewType::GetViewTypesForData(BinaryData* data)
+vector<Ref<BinaryViewType>> BinaryViewType::GetViewTypesForData(BinaryView* data)
{
BNBinaryViewType** types;
size_t count;
@@ -696,6 +712,15 @@ string BinaryViewType::GetName()
}
+string BinaryViewType::GetLongName()
+{
+ char* contents = BNGetBinaryViewTypeLongName(m_type);
+ string result = contents;
+ BNFreeString(contents);
+ return result;
+}
+
+
CoreBinaryViewType::CoreBinaryViewType(BNBinaryViewType* type): BinaryViewType(type)
{
}