(self, objects=None, force_segment=False)
return memory_regions
Get all executable memory regions from the binaries

        :param objects: A collection of binary objects to collect regions from. If None, regions from all project
                        binary objects are used.
        :param bool force_segment: Rely on binary segments instead of sections.
        :return: A sorted list of tuples (beginning_address, end_address)
Get all executable memory regions from the binaries
Get all executable memory regions from the binaries
def _executable_memory_regions(self, objects=None, force_segment=False):
        """
        Get all executable memory regions from the binaries

        :param objects: A collection of binary objects to collect regions from. If None, regions from all project
                        binary objects are used.
        :param bool force_segment: Rely on binary segments instead of sections.
        :return: A sorted list of tuples (beginning_address, end_address)
        """

        if objects is None:
            binaries = self.project.loader.all_objects
        else:
            binaries = objects

        memory_regions = [ ]

        for b in binaries:
            if isinstance(b, ELF):
                # If we have sections, we get result from sections
                if not force_segment and b.sections:
                    # Get all executable sections
                    for section in b.sections:
                        if section.is_executable:
                            tpl = (section.min_addr, section.max_addr+1)
                            memory_regions.append(tpl)

                else:
                    # Get all executable segments
                    for segment in b.segments:
                        if segment.is_executable:
                            tpl = (segment.min_addr, segment.max_addr+1)
                            memory_regions.append(tpl)

            elif isinstance(b, PE):
                for section in b.sections:
                    if section.is_executable:
                        tpl = (section.min_addr, section.max_addr+1)
                        memory_regions.append(tpl)

            elif isinstance(b, MachO):
                if b.segments:
                    # Get all executable segments
                    for seg in b.segments:
                        if seg.is_executable:
                            # Take all sections from this segment (MachO style)
                            for section in seg.sections:
                                tpl = (section.min_addr, section.max_addr+1)
                                memory_regions.append(tpl)

            elif isinstance(b, Blob):
                # a blob is entirely executable
                tpl = (b.min_addr, b.max_addr+1)
                memory_regions.append(tpl)
            elif isinstance(b, NamedRegion):
                # NamedRegions have no content! Ignore
                pass
            elif isinstance(b, self._cle_pseudo_objects):
                pass

            else:
                l.warning('Unsupported object format "%s". Treat it as an executable.', b.__class__.__name__)

                tpl = (b.min_addr, b.max_addr+1)
                memory_regions.append(tpl)

        if not memory_regions:
            memory_regions = [(start, start + len(backer)) for start, backer in self.project.loader.memory.backers()]

        memory_regions = sorted(memory_regions, key=lambda x: x[0])

        return memory_regions
def _executable_memory_regions ( self , objects = None , force_segment = False ) : if objects is None : binaries = self . project . loader . all_objects else : binaries = objects memory_regions = [ ] for b in binaries : if isinstance ( b , ELF ) : # If we have sections, we get result from sections if not force_segment and b . sections : # Get all executable sections for section in b . sections : if section . is_executable : tpl = ( section . min_addr , section . max_addr + 1 ) memory_regions . append ( tpl ) else : # Get all executable segments for segment in b . segments : if segment . is_executable : tpl = ( segment . min_addr , segment . max_addr + 1 ) memory_regions . append ( tpl ) elif isinstance ( b , PE ) : for section in b . sections : if section . is_executable : tpl = ( section . min_addr , section . max_addr + 1 ) memory_regions . append ( tpl ) elif isinstance ( b , MachO ) : if b . segments : # Get all executable segments for seg in b . segments : if seg . is_executable : # Take all sections from this segment (MachO style) for section in seg . sections : tpl = ( section . min_addr , section . max_addr + 1 ) memory_regions . append ( tpl ) elif isinstance ( b , Blob ) : # a blob is entirely executable tpl = ( b . min_addr , b . max_addr + 1 ) memory_regions . append ( tpl ) elif isinstance ( b , NamedRegion ) : # NamedRegions have no content! Ignore pass elif isinstance ( b , self . _cle_pseudo_objects ) : pass else : l . warning ( 'Unsupported object format "%s". Treat it as an executable.' , b . __class__ . __name__ ) tpl = ( b . min_addr , b . max_addr + 1 ) memory_regions . append ( tpl ) if not memory_regions : memory_regions = [ ( start , start + len ( backer ) ) for start , backer in self . project . loader . memory . backers ( ) ] memory_regions = sorted ( memory_regions , key = lambda x : x [ 0 ] ) return memory_regions