From 5fc08034ea071119c5407898c81d0aa012512430 Mon Sep 17 00:00:00 2001 From: Brian Potchik Date: Thu, 18 Jul 2024 23:06:19 -0400 Subject: MemoryMap update with new segment model. --- binaryview.cpp | 119 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 71 insertions(+), 48 deletions(-) (limited to 'binaryview.cpp') diff --git a/binaryview.cpp b/binaryview.cpp index 0fd19d6d..fa3ef646 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -1039,40 +1039,6 @@ Segment::Segment(BNSegment* seg) } -vector> Segment::GetRelocationRanges() const -{ - size_t count = 0; - BNRange* ranges = BNSegmentGetRelocationRanges(m_object, &count); - vector> result(count); - for (size_t i = 0; i < count; i++) - { - result.push_back({ranges[i].start, ranges[i].end}); - } - BNFreeRelocationRanges(ranges); - return result; -} - - -vector> Segment::GetRelocationRangesAtAddress(uint64_t addr) const -{ - size_t count = 0; - BNRange* ranges = BNSegmentGetRelocationRangesAtAddress(m_object, addr, &count); - vector> result(count); - for (size_t i = 0; i < count; i++) - { - result.push_back({ranges[i].start, ranges[i].end}); - } - BNFreeRelocationRanges(ranges); - return result; -} - - -uint64_t Segment::GetRelocationsCount() const -{ - return BNSegmentGetRelocationsCount(m_object); -} - - uint64_t Segment::GetStart() const { return BNSegmentGetStart(m_object); @@ -1761,6 +1727,21 @@ vector> BinaryView::GetRelocationRangesAtAddress(uint64 } +vector> BinaryView::GetRelocationRangesInRange(uint64_t addr, size_t size) const +{ + size_t count = 0; + BNRange* ranges = BNGetRelocationRangesInRange(m_object, addr, size, &count); + vector> result(count); + for (size_t i = 0; i < count; i++) + { + result.push_back({ranges[i].start, ranges[i].end}); + } + BNFreeRelocationRanges(ranges); + return result; + +} + + bool BinaryView::RangeContainsRelocation(uint64_t addr, size_t size) const { return BNRangeContainsRelocation(m_object, addr, size); @@ -1878,15 +1859,33 @@ uint64_t BinaryView::GetNextValidOffset(uint64_t offset) const } +uint64_t BinaryView::GetImageBase() const +{ + return BNGetImageBase(m_object); +} + + +uint64_t BinaryView::GetOriginalImageBase() const +{ + return BNGetOriginalImageBase(m_object); +} + + +void BinaryView::SetOriginalImageBase(uint64_t imageBase) +{ + return BNSetOriginalImageBase(m_object, imageBase); +} + + uint64_t BinaryView::GetOriginalBase() const { - return BNGetOriginalBase(m_object); + return BNGetOriginalImageBase(m_object); } void BinaryView::SetOriginalBase(uint64_t base) { - return BNSetOriginalBase(m_object, base); + return BNSetOriginalImageBase(m_object, base); } @@ -4885,6 +4884,42 @@ vector BinaryView::GetUniqueSectionNames(const vector& names) } +vector BinaryView::GetAllocatedRanges() +{ + size_t count; + BNAddressRange* ranges = BNGetAllocatedRanges(m_object, &count); + + vector result; + copy(&ranges[0], &ranges[count], back_inserter(result)); + BNFreeAddressRanges(ranges); + return result; +} + + +vector BinaryView::GetMappedAddressRanges() +{ + size_t count; + BNAddressRange* ranges = BNGetMappedAddressRanges(m_object, &count); + + vector result; + copy(&ranges[0], &ranges[count], back_inserter(result)); + BNFreeAddressRanges(ranges); + return result; +} + + +vector BinaryView::GetBackedAddressRanges() +{ + size_t count; + BNAddressRange* ranges = BNGetBackedAddressRanges(m_object, &count); + + vector result; + copy(&ranges[0], &ranges[count], back_inserter(result)); + BNFreeAddressRanges(ranges); + return result; +} + + string BinaryView::GetCommentForAddress(uint64_t addr) const { char* comment = BNGetGlobalCommentForAddress(m_object, addr); @@ -4911,18 +4946,6 @@ void BinaryView::SetCommentForAddress(uint64_t addr, const string& comment) } -vector BinaryView::GetAllocatedRanges() -{ - size_t count; - BNAddressRange* ranges = BNGetAllocatedRanges(m_object, &count); - - vector result; - copy(&ranges[0], &ranges[count], back_inserter(result)); - BNFreeAddressRanges(ranges); - return result; -} - - void BinaryView::StoreMetadata(const std::string& key, Ref inValue, bool isAuto) { if (!inValue) -- cgit v1.3.1