add CLIFile.read_at and remove parse_at length requirement
This commit is contained in:
parent
de3d934314
commit
21d55f5a2d
|
@ -45,6 +45,7 @@ class CLIFile:
|
|||
def __init__(self, fn):
|
||||
self.name = fn
|
||||
self.pe = pefile.PE(fn)
|
||||
self.handle = open(fn, 'rb')
|
||||
self.header = None
|
||||
self.metadata = None
|
||||
self.streams = {}
|
||||
|
@ -53,11 +54,15 @@ class CLIFile:
|
|||
def __repr__(self):
|
||||
return '<{}: "{}">'.format(self.__class__.__name__, self.name)
|
||||
|
||||
def read_at(self, offset, size):
|
||||
return self.pe.get_data(rva=offset, length=size)
|
||||
|
||||
def parse_at(self, c, offset, size=None):
|
||||
if size is None:
|
||||
size = destruct.sizeof(c)
|
||||
buf = self.pe.get_data(rva=offset, length=size)
|
||||
return destruct.parse(c, buf)
|
||||
if size:
|
||||
c = destruct.Capped(c, size)
|
||||
pos = self.pe.get_offset_from_rva(offset)
|
||||
with destruct.seeking(self.handle, pos) as f:
|
||||
return destruct.parse(c, f)
|
||||
|
||||
def parse(self):
|
||||
net_data_entry = pefile.DIRECTORY_ENTRY['IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR']
|
||||
|
|
Loading…
Reference in New Issue