diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2019-11-25 21:30:31 +0100 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2019-11-25 21:43:06 +0100 |
| commit | 87dba497998a5c33b6780dca0cc128b0aaa27ce4 (patch) | |
| tree | b0db312633a4ffac1b3bb188f03c0b546a20071b /miasm/loader/pe_init.py | |
| parent | 029f197de9a6c471b508b171134df778e68a0ae7 (diff) | |
| download | focaccia-miasm-87dba497998a5c33b6780dca0cc128b0aaa27ce4.tar.gz focaccia-miasm-87dba497998a5c33b6780dca0cc128b0aaa27ce4.zip | |
PE: API returns None on bad traduction addreses
Diffstat (limited to 'miasm/loader/pe_init.py')
| -rw-r--r-- | miasm/loader/pe_init.py | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/miasm/loader/pe_init.py b/miasm/loader/pe_init.py index 74192849..f5baa9a5 100644 --- a/miasm/loader/pe_init.py +++ b/miasm/loader/pe_init.py @@ -476,18 +476,30 @@ class PE(object): return return off - section.offset + section.addr - def virt2rva(self, virt): - if virt is None: - return - return virt - self.NThdr.ImageBase + def virt2rva(self, addr): + """ + Return rva of virtual address @addr; None if addr is below ImageBase + """ + if addr is None: + return None + rva = addr - self.NThdr.ImageBase + if rva < 0: + return None + return rva def rva2virt(self, rva): if rva is None: return return rva + self.NThdr.ImageBase - def virt2off(self, virt): - return self.rva2off(self.virt2rva(virt)) + def virt2off(self, addr): + """ + Return offset of virtual address @addr + """ + rva = self.virt2rva(addr) + if rva is None: + return None + return self.rva2off(rva) def off2virt(self, off): return self.rva2virt(self.off2rva(off)) |