code: def get_overlay_data_start_offset(self):
          
  
          largest_offset_and_size = (0, 0)
  
          def update_if_sum_is_larger_and_within_file(offset_and_size, file_size=len(self.__data__)):
              if sum(offset_and_size) <= file_size and sum(offset_and_size) > sum(largest_offset_and_size):
                  return offset_and_size
              return largest_offset_and_size
  
          if hasattr(self, 'OPTIONAL_HEADER'):
              largest_offset_and_size = update_if_sum_is_larger_and_within_file(
                  (self.OPTIONAL_HEADER.get_file_offset(), self.FILE_HEADER.SizeOfOptionalHeader))
  
          for section in self.sections:
              largest_offset_and_size = update_if_sum_is_larger_and_within_file(
                  (section.PointerToRawData, section.SizeOfRawData))
  
          skip_directories = [DIRECTORY_ENTRY['IMAGE_DIRECTORY_ENTRY_SECURITY']]
  
          for idx, directory in enumerate(self.OPTIONAL_HEADER.DATA_DIRECTORY):
              if idx in skip_directories:
                  continue
              try:
                  largest_offset_and_size = update_if_sum_is_larger_and_within_file(
                      (self.get_offset_from_rva(directory.VirtualAddress), directory.Size))
              # Ignore directories with RVA out of file
              except PEFormatError:
                  continue
  
          if len(self.__data__) > sum(largest_offset_and_size):
              return sum(largest_offset_and_size)
  
          return None
docs: Get the offset of data appended to the file and not contained within
          the area described in the headers.