示例#1
0
 def __init__(self, data):
     BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
     # Playstation 1 used a little endian MIPS R3000a
     # without floating point support, but with some
     # extended instructions for triangle transformation
     # and lighting. mipsel32 will do for now.
     self.platform = Architecture['mipsel32'].standalone_platform
示例#2
0
 def __init__(self, data):
     BinaryView.__init__(self, file_metadata=data.file, parent_view=data)
     self.raw = data
     self.platform = Architecture['Tiamat'].standalone_platform
     self.add_auto_segment(
         BASE_ADDR, BASE_ADDR + 0x404 * 4, 0, len(data),
         SegmentFlag.SegmentReadable | SegmentFlag.SegmentExecutable)
    def __init__(self, data):
        BinaryView.__init__(self, parent_view = data, file_metadata = data.file)

        #Cortex-M vectors should always be Thumb-2
        self.platform= Architecture['thumb2'].standalone_platform

        #Create a new segment, set the base address to 0x37FC0, and read the data file
        self.add_auto_segment(0x37FC0, 0x200000, 0, 0x200000, SegmentFlag.SegmentReadable | SegmentFlag.SegmentExecutable)
示例#4
0
    def __init__(self, data):
        BinaryView.__init__(self, parent_view=data, file_metadata=data.file)

        # TODO: allow different bits
        self.data = data
        self.disassembler = HsqDisassembler(self.data[:], 8)

        HigherSubleq64.disassembler = self.disassembler
        self.arch = Architecture["hsq64"]
        self.platform = Architecture["hsq64"].standalone_platform
示例#5
0
    def __init__(self, data):
        if data.read(0,16)[8:12] == 'sAP4':
            # read and unpack the packed data
            packed_offset = 0x37e70
            packed_size = struct.unpack('<L', data.read(packed_offset, 4))[0]
            unpacked_data = ROM.unpack(data.read(packed_offset + 4, packed_size))

            # substitute a new parent view with the unpacked data appended
            replacement_parent = BinaryView.new(data = data.read(0, len(data)) + unpacked_data)
            BinaryView.__init__(self, file_metadata=data.file, parent_view = replacement_parent)

            self.data = data
        else:
            BinaryView.__init__(self, parent_view = data, file_metadata = data.file)
示例#6
0
    def __init__(self, data):
        BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
        # not sure what this is for, copied from somewhere:
        self.platform = Architecture['8051'].standalone_platform

        # See https://github.com/Vector35/binaryninja-api/issues/645
        # This ensures endianness is propagated; not a huge deal.
        # While SFRs are arranged in LE order, compilers often store things in
        # BE order. May be worth having 8051-LE and 8051-BE archs in the
        # future.
        self.arch = Architecture['8051']

        # Don't think this package uses them - leaving them for easy access
        # from REPL.
        self.CODE = mem.CODE
        self.SFRs = mem.SFRs
        self.IRAM = mem.IRAM
        self.XRAM = mem.XRAM
 def __init__(self, data):
     BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
     self.platform = Architecture['thumb2'].standalone_platform
     self.MCUS = [
         "STM32F0",
         "STM32F1",
         "STM32F2",
         "STM32F3",
         "STM32F4",
         "STM32F7",
         "STM32L0",
         "STM32L1",
         "STM32L4",
         "EFM32TG",
         "EFM32G",
         "EFM32LG",
         "EFM32GG",
         "EFM32HG",
         "EFM32WG",
         "EZR32WG",
         "LPC13XX",
         "LPC17XX",
         "LPC43XX_M4",
         "LPC43XX_M0",
         "SAM3A",
         "SAM3N",
         "SAM3S",
         "SAM3U",
         "SAM3X",
         "SAM4L",
         "SAMD",
         "LM3S",
         "LM4F",
         "MSP432E4",
         "VF6XX",
     ]
示例#8
0
    def __init__(self, data):
        super().__init__(data)

        self.reader.seek(4)
        self.app_name = self.reader.read(0xC).decode('ascii')
        self.titleID = self.reader.read64()

        self.reader.seek(0x1F)
        flags = self.reader.read8()
        compressed = []
        for segm in range(3):
            compressed.append(((flags >> segm) & 1) == 1)

        self.text_offset = self.reader.read32()
        self.text_size = self.reader.read32()
        text_bin_size = self.reader.read32()
        self.reader.seek_relative(4)
        self.rodata_offset = self.reader.read32()
        self.rodata_size = self.reader.read32()
        rodata_bin_size = self.reader.read32()
        self.reader.seek_relative(4)
        self.data_offset = self.reader.read32()
        self.data_size = self.reader.read32()
        data_bin_size = self.reader.read32()
        self.reader.seek_relative(4)
        self.bss_offset = self.reader.read32()
        self.bss_size = self.reader.read32()

        self.reader.seek(self.HDR_SIZE)
        text_raw = self.reader.read(text_bin_size)
        if compressed[self.TEXT]:
            self.log("Decompressing .text")
            text_raw = kip1_blz_decompress(text_raw)

        flags &= 0b0011_1110
        text_raw = self.page_pad(text_raw)
        self.text_size = len(text_raw)
        self.writer.seek(0x24)
        for x in range(2):
            self.writer.write32(self.text_size)

        rodata_raw = self.reader.read(rodata_bin_size)
        if compressed[self.RODATA]:
            self.log("Decompressing .rodata")
            rodata_raw = kip1_blz_decompress(rodata_raw)

        flags &= 0b0011_1101
        rodata_raw = self.page_pad(rodata_raw)
        self.rodata_size = len(rodata_raw)
        self.writer.seek(0x34)
        for x in range(2):
            self.writer.write32(self.rodata_size)

        data_raw = self.reader.read(data_bin_size)
        if compressed[self.DATA]:
            self.log("Decompressing .data")
            data_raw = kip1_blz_decompress(data_raw)

        flags &= 0b0011_1011
        data_raw = self.page_pad(data_raw)
        self.data_size = len(data_raw)
        self.writer.seek(0x44)
        for x in range(2):
            self.writer.write32(self.data_size)

        self.writer.seek(0x1F)
        self.writer.write8(flags)

        self.reader.seek(0)
        self.raw = self.reader.read(self.HDR_SIZE)
        self.raw += text_raw
        self.raw += rodata_raw
        self.raw += data_raw

        data.write(0, self.raw)
        BinaryView.__init__(self, file_metadata=data.file, parent_view=data)
示例#9
0
 def __init__(self, data):
     BinaryView.__init__(self, file_metadata = data.file, parent_view = data)
     self.raw = data
示例#10
0
文件: RelView.py 项目: Vector35/Z80
 def __init__(self, binaryView):
     # data is a binaryninja.binaryview.BinaryView
     BinaryView.__init__(self, parent_view=binaryView, file_metadata=binaryView.file)
示例#11
0
 def __init__(self, data):
     BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
     self.platform = Architecture['vmndh-2k12'].standalone_platform
示例#12
0
 def __init__(self, data):
     BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
     self.platform = Architecture[
         "6502"].standalone_platform  # type: ignore
示例#13
0
 def __init__(self, data):
     # data is a binaryninja.binaryview.BinaryView
     BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
     self.data = data
     self.romType = self.get_rom_type(data)
示例#14
0
 def __init__(self, data):
     BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
     self.platform = Architecture[GB.name].standalone_platform
     self.raw = data
示例#15
0
 def __init__(self, data: BinaryView):
     BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
     self.platform = Architecture['s1c88:s1c88'].standalone_platform
     self.data = data
示例#16
0
文件: view.py 项目: balayette/bn-3dsx
 def __init__(self, data):
     BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
     self.platform = Architecture["armv7"].standalone_platform
     self.data = data
     self.offt = 0
示例#17
0
    def __init__(self, data):
        super().__init__(data)

        self.hdr_read_offset = 0x4
        self.app_name = self.hdr_read(0xC)
        self.titleID = self.hdr_read(0x8)
        self.hdr_read_offset = 0x1F

        flags = self.hdr_read(1)
        compressed = []
        for segm in range(3):
            compressed.append(((flags >> segm) & 1) == 1)

        offset = 0
        self.text_offset = self.base + self.hdr_read(4)
        self.text_size = self.hdr_read(4)
        text_bin_size = self.hdr_read(4)
        self.hdr_read_offset += 4
        self.rodata_offset = self.base + self.hdr_read(4)
        self.rodata_size = self.hdr_read(4)
        rodata_bin_size = self.hdr_read(4)
        self.hdr_read_offset += 4
        self.data_offset = self.base + self.hdr_read(4)
        self.data_size = self.hdr_read(4)
        data_bin_size = self.hdr_read(4)
        self.hdr_read_offset += 4
        self.bss_offset = self.base + self.hdr_read(4)
        self.bss_size = self.hdr_read(4)

        text_raw = self.raw.read(self.HDR_SIZE, text_bin_size)
        if compressed[self.TEXT]:
            self.log("Decompressing .text")
            text_raw = kip1_blz_decompress(text_raw)
            flags &= 0b0011_1110
            self.hdr_write(4, 0x24, self.page_align_up(self.text_size))
            self.hdr_write(4, 0x28, self.page_align_up(self.text_size))

        rodata_raw = self.raw.read(self.HDR_SIZE + text_bin_size,
                                   rodata_bin_size)
        if compressed[self.RODATA]:
            self.log("Decompressing .rodata")
            rodata_raw = kip1_blz_decompress(rodata_raw)
            flags &= 0b0011_1101
            self.hdr_write(4, 0x34, self.page_align_up(self.rodata_size))
            self.hdr_write(4, 0x38, self.page_align_up(self.rodata_size))

        data_raw = self.raw.read(
            self.HDR_SIZE + text_bin_size + rodata_bin_size, data_bin_size)
        if compressed[self.DATA]:
            self.log("Decompressing .data")
            data_raw = kip1_blz_decompress(data_raw)
            flags &= 0b0011_1011
            self.hdr_write(4, 0x44, self.page_align_up(self.data_size))
            self.hdr_write(4, 0x48, self.page_align_up(self.data_size))

        self.hdr_write(1, 0x1F, flags)

        binary = self.hdr
        binary += self.page_pad(text_raw)
        binary += self.page_pad(rodata_raw)
        binary += self.page_pad(data_raw)
        binary += b'\x00' * self.bss_size

        self.raw = binary
        data.write(0, binary)
        BinaryView.__init__(self, file_metadata=data.file, parent_view=data)
示例#18
0
 def __init__(self, data: BinaryView) -> None:
     BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
     self.raw = data
示例#19
0
 def __init__(self, data):
     BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
     self.platform = Architecture["VTIL"].standalone_platform
     self.vtil = VTILParser.from_file(data.file.filename)
     set_active_vtil_file(self.vtil)
示例#20
0
 def __init__(self, data):
     self.reader = BinaryReader(data, Endianness.LittleEndian)
     BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
     self.data = data
示例#21
0
 def __init__(self, data):
     BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
     self._lief_handler: lief.ELF.Binary = lief.parse(data.file.filename)
示例#22
0
    def __init__(self, data):
        super().__init__(data)

        self.reader.seek(0xC)
        flags = self.reader.read32()

        compressed = []
        for segm in range(3):
            compressed.append(((flags >> segm) & 1) == 1)

        flags &= 0b0111

        self.reader.seek(0x10)
        text_file_offset = self.reader.read32()
        self.text_offset = self.reader.read32()
        self.text_size = self.reader.read32()

        self.reader.seek(0x20)
        rodata_file_offset = self.reader.read32()
        self.rodata_offset = self.reader.read32()
        self.rodata_size = self.reader.read32()

        self.reader.seek(0x30)
        data_file_offset = self.reader.read32()
        self.data_offset = self.reader.read32()
        self.data_size = self.reader.read32()
        self.bss_size = self.reader.read32()

        self.reader.seek(0x60)
        text_file_size = self.reader.read32()
        rodata_file_size = self.reader.read32()
        data_file_size = self.reader.read32()

        offset = self.HDR_SIZE
        self.reader.seek(text_file_offset)
        text_raw = self.reader.read(text_file_size)
        if compressed[self.TEXT]:
            self.log(f"Decompressing .text")
            text_raw = decompress(text_raw, uncompressed_size=self.text_size)

        flags &= 0b0011_1110
        text_raw = self.page_pad(text_raw)
        self.text_size = len(text_raw)
        self.writer.seek(0x18)
        self.writer.write32(self.text_size)
        self.writer.seek(0x60)
        self.writer.write32(self.text_size)

        self.writer.seek(0x10)
        self.writer.write32(offset)
        offset += self.text_size

        self.reader.seek(rodata_file_offset)
        rodata_raw = self.reader.read(rodata_file_size)
        if compressed[self.RODATA]:
            self.log("Decompressing .rodata")
            rodata_raw = decompress(rodata_raw,
                                    uncompressed_size=self.rodata_size)

        flags &= 0b0011_1101
        rodata_raw = self.page_pad(rodata_raw)
        self.rodata_size = len(rodata_raw)
        self.writer.seek(0x28)
        self.writer.write32(self.rodata_size)
        self.writer.seek(0x64)
        self.writer.write32(self.rodata_size)

        self.writer.seek(0x20)
        self.writer.write32(offset)
        offset += self.rodata_size

        self.reader.seek(data_file_offset)
        data_raw = self.reader.read(data_file_size)
        if compressed[self.DATA]:
            self.log("Decompressing .data")
            data_raw = decompress(data_raw, uncompressed_size=self.data_size)

        flags &= 0b0011_1011
        data_raw = self.page_pad(data_raw)
        self.data_size = len(data_raw)
        self.writer.seek(0x38)
        self.writer.write32(self.data_size)
        self.writer.seek(0x68)
        self.writer.write32(self.data_size)

        self.writer.seek(0x30)
        self.writer.write32(offset)
        offset += self.data_size

        self.writer.seek(0xC)
        self.writer.write8(flags)

        self.reader.seek(0)
        self.raw = self.reader.read(self.HDR_SIZE)
        self.raw += text_raw
        self.raw += rodata_raw
        self.raw += data_raw

        text_raw = b''
        rodata_raw = b''
        data_raw = b''

        data.write(0, self.raw)
        BinaryView.__init__(self, file_metadata=data.file, parent_view=data)
示例#23
0
 def __init__(self, data):
     BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
示例#24
0
	def __init__(self, data):
		# data is a binaryninja.binaryview.BinaryView
		BinaryView.__init__(self, parent_view = data, file_metadata = data.file)
		self.platform = Architecture['Z80'].standalone_platform
		self.data = data
示例#25
0
	def __init__(self, data):
		BinaryView.__init__(self, parent_view=data, file_metadata=data.file)
		self.platform = Architecture["6502"].standalone_platform
示例#26
0
    def __init__(self, data):
        super().__init__(data)

        self.hdr_read_offset = 0xC
        flags = self.hdr_read(4)

        compressed = []
        for segm in range(3):
            compressed.append(((flags >> segm) & 1) == 1)

        flags &= 0b0111

        self.hdr_read_offset = 0x10
        text_file_offset, self.text_offset, self.text_size = self.hdr_read(
            0x4, times=3)

        self.hdr_read_offset = 0x20
        rodata_file_offset, self.rodata_offset, self.rodata_size = self.hdr_read(
            0x4, times=3)

        self.hdr_read_offset = 0x30
        data_file_offset, self.data_offset, self.data_size, self.bss_size = self.hdr_read(
            0x4, times=4)

        self.hdr_read_offset = 0x60
        text_file_size, rodata_file_size, data_file_size = self.hdr_read(
            0x4, times=3)

        offset = self.HDR_SIZE
        text_raw = self.raw.read(text_file_offset, text_file_size)
        if compressed[self.TEXT]:
            self.log(f"Decompressing .text")
            text_raw = decompress(text_raw, uncompressed_size=self.text_size)
            flags &= 0b0011_1110
            self.hdr_write(4, 0x18, self.page_align_up(self.text_size))
            self.hdr_write(4, 0x60, self.page_align_up(self.text_size))

        self.hdr_write(4, 0x10, offset)
        offset += self.page_align_up(self.text_size)

        rodata_raw = self.raw.read(rodata_file_offset, rodata_file_size)
        if compressed[self.RODATA]:
            self.log("Decompressing .rodata")
            rodata_raw = decompress(rodata_raw,
                                    uncompressed_size=self.rodata_size)
            flags &= 0b0011_1101
            self.hdr_write(4, 0x28, self.page_align_up(self.rodata_size))
            self.hdr_write(4, 0x64, self.page_align_up(self.rodata_size))

        self.hdr_write(4, 0x20, offset)
        offset += self.page_align_up(self.rodata_size)

        data_raw = self.raw.read(data_file_offset, data_file_size)
        if compressed[self.DATA]:
            self.log("Decompressing .data")
            data_raw = decompress(data_raw, uncompressed_size=self.data_size)
            flags &= 0b0011_1011
            self.hdr_write(4, 0x38, self.page_align_up(self.data_size))
            self.hdr_write(4, 0x68, self.page_align_up(self.data_size))

        self.hdr_write(4, 0x30, offset)
        offset += self.page_align_up(self.data_size)

        self.hdr_write(1, 0xC, flags)

        binary = self.hdr
        binary += self.page_pad(text_raw)
        binary += self.page_pad(rodata_raw)
        binary += self.page_pad(data_raw)
        binary += b'\x00' * self.page_align_up(self.bss_size)

        self.text_offset += self.base
        self.rodata_offset += self.base
        self.data_offset += self.base

        self.raw = binary
        data.write(0, binary)
        BinaryView.__init__(self, file_metadata=data.file, parent_view=data)