summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2017-12-14 18:46:10 -0500
committerPeter LaFosse <peter@vector35.com>2017-12-14 18:46:10 -0500
commitb207c76729df133c7b6fc4bc9f1abb6948ae6438 (patch)
tree9c074cac9450392c13b7afeedd9c440b54a7f88b
parentae5ce4da4c1f6ea3a071a4eec1a5da3e6e2a3305 (diff)
Add autoDefined attribute to Sections and Segments
-rw-r--r--binaryninjaapi.h2
-rw-r--r--binaryninjacore.h2
-rw-r--r--binaryview.cpp2
-rw-r--r--python/binaryview.py17
4 files changed, 15 insertions, 8 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index baeb5de6..72f74c5a 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -1027,6 +1027,7 @@ namespace BinaryNinja
uint64_t start, length;
uint64_t dataOffset, dataLength;
uint32_t flags;
+ bool autoDefined;
};
struct Section
@@ -1037,6 +1038,7 @@ namespace BinaryNinja
uint64_t infoData;
uint64_t align, entrySize;
BNSectionSemantics semantics;
+ bool autoDefined;
};
struct QualifiedNameAndType;
diff --git a/binaryninjacore.h b/binaryninjacore.h
index 1bb0c70a..245e6353 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -1531,6 +1531,7 @@ extern "C"
uint64_t start, length;
uint64_t dataOffset, dataLength;
uint32_t flags;
+ bool autoDefined;
};
enum BNSectionSemantics
@@ -1551,6 +1552,7 @@ extern "C"
uint64_t infoData;
uint64_t align, entrySize;
BNSectionSemantics semantics;
+ bool autoDefined;
};
struct BNAddressRange
diff --git a/binaryview.cpp b/binaryview.cpp
index 0a082458..50011a0f 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -1724,6 +1724,7 @@ vector<Segment> BinaryView::GetSegments()
segment.dataOffset = segments[i].dataOffset;
segment.dataLength = segments[i].dataLength;
segment.flags = segments[i].flags;
+ segment.autoDefined = segments[i].autoDefined;
result.push_back(segment);
}
@@ -1731,7 +1732,6 @@ vector<Segment> BinaryView::GetSegments()
return result;
}
-
bool BinaryView::GetSegmentAt(uint64_t addr, Segment& result)
{
BNSegment segment;
diff --git a/python/binaryview.py b/python/binaryview.py
index 9f149ba8..6eb59db1 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -416,12 +416,13 @@ class BinaryViewType(object):
class Segment(object):
- def __init__(self, start, length, data_offset, data_length, flags):
+ def __init__(self, start, length, data_offset, data_length, flags, auto_defined):
self.start = start
self.length = length
self.data_offset = data_offset
self.data_length = data_length
self.flags = flags
+ self.auto_defined = auto_defined
@property
def executable(self):
@@ -450,7 +451,7 @@ class Segment(object):
class Section(object):
- def __init__(self, name, section_type, start, length, linked_section, info_section, info_data, align, entry_size, semantics):
+ def __init__(self, name, section_type, start, length, linked_section, info_section, info_data, align, entry_size, semantics, auto_defined):
self.name = name
self.type = section_type
self.start = start
@@ -461,6 +462,7 @@ class Section(object):
self.align = align
self.entry_size = entry_size
self.semantics = SectionSemantics(semantics)
+ self.auto_defined = auto_defined
@property
def end(self):
@@ -965,7 +967,7 @@ class BinaryView(object):
result = []
for i in xrange(0, count.value):
result.append(Segment(segment_list[i].start, segment_list[i].length,
- segment_list[i].dataOffset, segment_list[i].dataLength, segment_list[i].flags))
+ segment_list[i].dataOffset, segment_list[i].dataLength, segment_list[i].flags, segment_list[i].autoDefined))
core.BNFreeSegmentList(segment_list)
return result
@@ -979,7 +981,7 @@ class BinaryView(object):
result[section_list[i].name] = Section(section_list[i].name, section_list[i].type, section_list[i].start,
section_list[i].length, section_list[i].linkedSection, section_list[i].infoSection,
section_list[i].infoData, section_list[i].align, section_list[i].entrySize,
- section_list[i].semantics)
+ section_list[i].semantics, section_list[i].autoDefined)
core.BNFreeSectionList(section_list, count.value)
return result
@@ -3353,7 +3355,7 @@ class BinaryView(object):
if not core.BNGetSegmentAt(self.handle, addr, segment):
return None
result = Segment(segment.start, segment.length, segment.dataOffset, segment.dataLength,
- segment.flags)
+ segment.flags, segment.autoDefined)
return result
def get_address_for_data_offset(self, offset):
@@ -3386,7 +3388,7 @@ class BinaryView(object):
result.append(Section(section_list[i].name, section_list[i].type, section_list[i].start,
section_list[i].length, section_list[i].linkedSection, section_list[i].infoSection,
section_list[i].infoData, section_list[i].align, section_list[i].entrySize,
- section_list[i].semantics))
+ section_list[i].semantics, section_list[i].autoDefined))
core.BNFreeSectionList(section_list, count.value)
return result
@@ -3395,7 +3397,8 @@ class BinaryView(object):
if not core.BNGetSectionByName(self.handle, name, section):
return None
result = Section(section.name, section.type, section.start, section.length, section.linkedSection,
- section.infoSection, section.infoData, section.align, section.entrySize, section.semantics)
+ section.infoSection, section.infoData, section.align, section.entrySize, section.semantics,
+ section_list.autoDefined)
core.BNFreeSection(section)
return result