import traceback | |
from binaryninja import (BinaryView, Architecture, SegmentFlag, log_error, | |
get_address_input, log_info, SectionSemantics) | |
offset = 0x08000000 | |
entry_addr = 0x080001c0 | |
class FwImgView(BinaryView): | |
name = "fwimg" | |
long_name = "Firmware Image" | |
def __init__(self, data): | |
BinaryView.__init__(self, file_metadata=data.file, parent_view=data) | |
self.raw = data | |
@classmethod | |
def is_valid_for_data(self, data): | |
return True | |
def init(self): | |
try: | |
self.load_addr = get_address_input("Load address", "Load Address") | |
self.entry_addr = get_address_input("Entry point", "Entry Point") | |
log_info("Offset 0x{:08X}, entry 0x{:08X}".format( | |
self.load_addr, self.entry_addr)) | |
self.platform = Architecture['thumb2'].standalone_platform | |
self.arch = Architecture['thumb2'] | |
self.add_auto_segment(self.load_addr, len(self.raw), 0, | |
len(self.raw), | |
SegmentFlag.SegmentReadable | | |
SegmentFlag.SegmentExecutable) | |
self.add_auto_section( | |
"text", self.load_addr, len(self.raw), | |
SectionSemantics.ReadOnlyCodeSectionSemantics) | |
self.add_entry_point(self.entry_addr) | |
return True | |
except: | |
log_error(traceback.format_exc()) | |
return False | |
def platform_is_executable(self): | |
return True | |
FwImgView.register() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment