From 553355cc1297915b1ca1cbada05d93c86ab6d179 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Fri, 28 Feb 2025 15:26:37 +0100 Subject: [PATCH] read data for SHT_NOBITS sections fixed --- src/pelfy/__init__.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/pelfy/__init__.py b/src/pelfy/__init__.py index c6dfe70..cd8db68 100644 --- a/src/pelfy/__init__.py +++ b/src/pelfy/__init__.py @@ -73,8 +73,11 @@ class elf_symbol(): Symbol data """ assert self.section, 'This symbol is not associated to a data section' - offset = self.section['sh_offset'] + self['st_value'] - return self.file.read_bytes(offset, self['st_size']) + if self.section.type == 'SHT_NOBITS': + return b'\x00' * self['sh_size'] + else: + offset = self.section['sh_offset'] + self['st_value'] + return self.file.read_bytes(offset, self['st_size']) def read_data_hex(self) -> str: return ' '.join(f'{d:02X}' for d in self.read_data()) @@ -160,7 +163,10 @@ class elf_section(): Returns: Data of the section """ - return self.file.read_bytes(self['sh_offset'], self['sh_size']) + if self.type == 'SHT_NOBITS': + return b'\x00' * self['sh_size'] + else: + return self.file.read_bytes(self['sh_offset'], self['sh_size']) def get_symbols(self) -> 'symbol_list': """Lists all ELF symbols associated with this section