diff options
Diffstat (limited to 'miasm/loader/pe.py')
| -rw-r--r-- | miasm/loader/pe.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/miasm/loader/pe.py b/miasm/loader/pe.py index f6b56a3c..6ab6451e 100644 --- a/miasm/loader/pe.py +++ b/miasm/loader/pe.py @@ -1602,6 +1602,31 @@ class Symb(CStruct): ("res3", "u16")] +class DirTls(CStruct): + _fields = [ + ("data_start", "ptr"), + ("data_end", "ptr"), + ("addr_index", "ptr"), + ("callbacks", "ptr"), + ("size_of_zero", "u32"), + ("characteristics", "u32") + ] + + def build_content(self, raw): + dirtls = self.parent_head.NThdr.optentries[DIRECTORY_ENTRY_TLS] + of1 = dirtls.rva + if of1 is None: # No Tls + return + raw[self.parent_head.rva2off(of1)] = bytes(self) + + def set_rva(self, rva, size=None): + self.parent_head.NThdr.optentries[DIRECTORY_ENTRY_TLS].rva = rva + if not size: + self.parent_head.NThdr.optentries[DIRECTORY_ENTRY_TLS].size = len(self) + else: + self.parent_head.NThdr.optentries[DIRECTORY_ENTRY_TLS].size = size + + DIRECTORY_ENTRY_EXPORT = 0 DIRECTORY_ENTRY_IMPORT = 1 DIRECTORY_ENTRY_RESOURCE = 2 |