MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / Segment

Class Segment

python/binaryview.py:1398–1509  ·  view source on GitHub ↗

The ``Segment`` object is returned during BinaryView creation and should not be directly instantiated.

Source from the content-addressed store, hash-verified

1396
1397
1398class Segment:
1399 """
1400 The ``Segment`` object is returned during BinaryView creation and should not be directly instantiated.
1401 """
1402 def __init__(self, handle: core.BNSegmentHandle):
1403 self.handle = handle
1404
1405 def __del__(self):
1406 if core is not None:
1407 core.BNFreeSegment(self.handle)
1408
1409 def __repr__(self):
1410 r = "r" if self.readable else "-"
1411 w = "w" if self.writable else "-"
1412 x = "x" if self.executable else "-"
1413 return f"<segment: {self.start:#x}-{self.end:#x}, {r}{w}{x}>"
1414
1415 @classmethod
1416 @deprecation.deprecated(deprecated_in="4.3.6653", details="Use `SegmentDescriptorList` instead.")
1417 def serialize(cls, image_base: int, start: int, length: int, data_offset: int=0, data_length: int=0, flags: 'SegmentFlag'=SegmentFlag.SegmentReadable, auto_defined=True, segments: str="[]"):
1418 """
1419 Serialize segment parameters into a JSON string. This is useful for generating a properly formatted segment description as options when using `load`.
1420
1421 :param int image_base: The base address of the image.
1422 :param int start: The start address of the segment.
1423 :param int length: The length of the segment.
1424 :param int data_offset: The offset of the data within the segment.
1425 :param int data_length: The length of the data within the segment.
1426 :param SegmentFlag flags: The flags of the segment.
1427 :param bool auto_defined: Whether the segment is auto-defined.
1428 :param str segments: An optional, existing array of segments to append to.
1429 :return: A JSON string representing the segment.
1430 :rtype: str
1431
1432 :Example::
1433 >>> base = 0x400000
1434 >>> rom_base = 0xffff0000
1435 >>> segments = SegmentDescriptorList(base)
1436 >>> segments.append(start=base, length=0x1000, data_offset=0, data_length=0x1000, flags=SegmentFlag.SegmentReadable|SegmentFlag.SegmentExecutable)
1437 >>> segments.append(start=rom_base, length=0x1000, flags=SegmentFlag.SegmentReadable)
1438 >>> view = load(bytes.fromhex('5054ebfe'), options={'loader.imageBase': base, 'loader.platform': 'x86', 'loader.segments': json.dumps(segments)})
1439 """
1440 segments_list = json.loads(segments)
1441 segment_info = {
1442 "auto_defined": auto_defined,
1443 "data_length": data_length,
1444 "data_offset": data_offset,
1445 "flags": flags,
1446 "length": length,
1447 "start": start - image_base
1448 }
1449 segments_list.append(segment_info)
1450 return json.dumps(segments_list)
1451
1452 @property
1453 def length(self):
1454 return int(core.BNSegmentGetLength(self.handle))
1455

Callers 5

_segment_addedMethod · 0.70
_segment_updatedMethod · 0.70
_segment_removedMethod · 0.70
segmentsMethod · 0.70
get_segment_atMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected