summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2015-08-18 23:57:49 -0400
committerRusty Wagner <rusty@vector35.com>2015-08-18 23:57:49 -0400
commit59f9b193ac9da6c861965be153eb8c788388089a (patch)
tree363d1a651f46fc979d99ecc003febb7369f33232
parent5714f4fc71e6cff04ec025c9976f0e223514e284 (diff)
Computed address and string annotations
-rw-r--r--binaryninjaapi.h9
-rw-r--r--binaryview.cpp57
2 files changed, 66 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index de03b078..be801a3c 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -434,6 +434,9 @@ namespace BinaryNinja
virtual BNModificationStatus PerformGetModification(uint64_t offset) { (void)offset; return Original; }
virtual bool PerformIsValidOffset(uint64_t offset);
+ virtual bool PerformIsOffsetReadable(uint64_t offset);
+ virtual bool PerformIsOffsetWritable(uint64_t offset);
+ virtual bool PerformIsOffsetExecutable(uint64_t offset);
virtual uint64_t PerformGetStart() const { return 0; }
virtual uint64_t PerformGetLength() const { return 0; }
virtual uint64_t PerformGetEntryPoint() const { return 0; }
@@ -455,6 +458,9 @@ namespace BinaryNinja
static size_t RemoveCallback(void* ctxt, uint64_t offset, uint64_t len);
static BNModificationStatus GetModificationCallback(void* ctxt, uint64_t offset);
static bool IsValidOffsetCallback(void* ctxt, uint64_t offset);
+ static bool IsOffsetReadableCallback(void* ctxt, uint64_t offset);
+ static bool IsOffsetWritableCallback(void* ctxt, uint64_t offset);
+ static bool IsOffsetExecutableCallback(void* ctxt, uint64_t offset);
static uint64_t GetStartCallback(void* ctxt);
static uint64_t GetLengthCallback(void* ctxt);
static uint64_t GetEntryPointCallback(void* ctxt);
@@ -504,6 +510,9 @@ namespace BinaryNinja
std::vector<BNModificationStatus> GetModification(uint64_t offset, size_t len);
bool IsValidOffset(uint64_t offset) const;
+ bool IsOffsetReadable(uint64_t offset) const;
+ bool IsOffsetWritable(uint64_t offset) const;
+ bool IsOffsetExecutable(uint64_t offset) const;
uint64_t GetStart() const;
uint64_t GetEnd() const;
diff --git a/binaryview.cpp b/binaryview.cpp
index b0549f93..2a7677c9 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -232,6 +232,27 @@ bool BinaryView::IsValidOffsetCallback(void* ctxt, uint64_t offset)
}
+bool BinaryView::IsOffsetReadableCallback(void* ctxt, uint64_t offset)
+{
+ BinaryView* view = (BinaryView*)ctxt;
+ return view->PerformIsOffsetReadable(offset);
+}
+
+
+bool BinaryView::IsOffsetWritableCallback(void* ctxt, uint64_t offset)
+{
+ BinaryView* view = (BinaryView*)ctxt;
+ return view->PerformIsOffsetWritable(offset);
+}
+
+
+bool BinaryView::IsOffsetExecutableCallback(void* ctxt, uint64_t offset)
+{
+ BinaryView* view = (BinaryView*)ctxt;
+ return view->PerformIsOffsetExecutable(offset);
+}
+
+
uint64_t BinaryView::GetStartCallback(void* ctxt)
{
BinaryView* view = (BinaryView*)ctxt;
@@ -289,6 +310,24 @@ bool BinaryView::PerformIsValidOffset(uint64_t offset)
}
+bool BinaryView::PerformIsOffsetReadable(uint64_t offset)
+{
+ return PerformIsValidOffset(offset);
+}
+
+
+bool BinaryView::PerformIsOffsetWritable(uint64_t offset)
+{
+ return PerformIsValidOffset(offset);
+}
+
+
+bool BinaryView::PerformIsOffsetExecutable(uint64_t offset)
+{
+ return PerformIsValidOffset(offset);
+}
+
+
BNEndianness BinaryView::PerformGetDefaultEndianness() const
{
Ref<Architecture> arch = GetDefaultArchitecture();
@@ -498,6 +537,24 @@ bool BinaryView::IsValidOffset(uint64_t offset) const
}
+bool BinaryView::IsOffsetReadable(uint64_t offset) const
+{
+ return BNIsOffsetReadable(m_view, offset);
+}
+
+
+bool BinaryView::IsOffsetWritable(uint64_t offset) const
+{
+ return BNIsOffsetWritable(m_view, offset);
+}
+
+
+bool BinaryView::IsOffsetExecutable(uint64_t offset) const
+{
+ return BNIsOffsetExecutable(m_view, offset);
+}
+
+
uint64_t BinaryView::GetStart() const
{
return BNGetStartOffset(m_view);