diff options
| author | Rusty Wagner <rusty@vector35.com> | 2017-01-19 21:15:32 -0500 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2017-01-19 21:15:32 -0500 |
| commit | c6ed1dd374515d0e23a9d627a7dfb659c7981d16 (patch) | |
| tree | 0d5046cbf1ff9c5ced5920fab95e395102fb344f | |
| parent | ded271158000d7fa509f513b425d95390a7f2058 (diff) | |
Add API to find virtual address from file offset
| -rw-r--r-- | binaryninjaapi.h | 1 | ||||
| -rw-r--r-- | binaryninjacore.h | 1 | ||||
| -rw-r--r-- | binaryview.cpp | 6 | ||||
| -rw-r--r-- | python/binaryview.py | 6 |
4 files changed, 14 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index afbff4da..4e3f3d57 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -1050,6 +1050,7 @@ namespace BinaryNinja void RemoveUserSegment(uint64_t start, uint64_t length); std::vector<Segment> GetSegments(); bool GetSegmentAt(uint64_t addr, Segment& result); + bool GetAddressForDataOffset(uint64_t offset, uint64_t& addr); void AddAutoSection(const std::string& name, uint64_t start, uint64_t length, const std::string& type = "", uint64_t align = 1, uint64_t entrySize = 0, const std::string& linkedSection = "", diff --git a/binaryninjacore.h b/binaryninjacore.h index 02f753cf..7d3bc14c 100644 --- a/binaryninjacore.h +++ b/binaryninjacore.h @@ -1420,6 +1420,7 @@ extern "C" BINARYNINJACOREAPI BNSegment* BNGetSegments(BNBinaryView* view, size_t* count); BINARYNINJACOREAPI void BNFreeSegmentList(BNSegment* segments); BINARYNINJACOREAPI bool BNGetSegmentAt(BNBinaryView* view, uint64_t addr, BNSegment* result); + BINARYNINJACOREAPI bool BNGetAddressForDataOffset(BNBinaryView* view, uint64_t offset, uint64_t* addr); BINARYNINJACOREAPI void BNAddAutoSection(BNBinaryView* view, const char* name, uint64_t start, uint64_t length, const char* type, uint64_t align, uint64_t entrySize, const char* linkedSection, const char* infoSection, diff --git a/binaryview.cpp b/binaryview.cpp index bef23750..cc8bb733 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -1645,6 +1645,12 @@ bool BinaryView::GetSegmentAt(uint64_t addr, Segment& result) } +bool BinaryView::GetAddressForDataOffset(uint64_t offset, uint64_t& addr) +{ + return BNGetAddressForDataOffset(m_object, offset, &addr); +} + + void BinaryView::AddAutoSection(const string& name, uint64_t start, uint64_t length, const string& type, uint64_t align, uint64_t entrySize, const string& linkedSection, const string& infoSection, uint64_t infoData) { diff --git a/python/binaryview.py b/python/binaryview.py index f8fe1fde..ba706fe5 100644 --- a/python/binaryview.py +++ b/python/binaryview.py @@ -3052,6 +3052,12 @@ class BinaryView(object): segment.flags) return result + def get_address_for_data_offset(self, offset): + address = ctypes.c_ulonglong() + if not core.BNGetAddressForDataOffset(self.handle, offset, address): + return None + return address.value + def add_auto_section(self, name, start, length, type = "", align = 1, entry_size = 1, linked_section = "", info_section = "", info_data = 0): core.BNAddAutoSection(self.handle, name, start, length, type, align, entry_size, linked_section, |
