Example #1
0
    def _ConvertFromOffset(self):
        offset = self._offset.GetValue()
        
        if not offset:
            offset = 0
        else:
            offset = int(offset, 16)

        try:
            if not offset < self._pe.sections[0].PointerToRawData:
                rva = self._pe.get_rva_from_offset(offset)
            else:
                rva = offset
                
            va = rva + self._pe.OPTIONAL_HEADER.ImageBase
            
            idx = pedata.guess_section_from_rva(self._pe, rva)
            if idx == -1:
                section = "HEADER"
            else:
                section = self._pe.sections[idx].Name
            
            bytes = get_hex_bytes(self._pe.get_data(rva, 16))
            
            self.PrintDataInCtrls(rva, va, offset, section, bytes)
            
        except Exception, e:
            self._ShowError(e)
Example #2
0
 def _ConvertFromRVA(self):
     rva = self._rva.GetValue()
     if not rva:
         rva = 0
     else:
         rva = int(rva, 16)
     
     try:
         offset = pedata.fromRvaToOffset(self._pe, rva)
         va = rva + self._pe.OPTIONAL_HEADER.ImageBase
         
         idx = pedata.guess_section_from_rva(self._pe, rva)
         if idx == -1:
             section = "Header"
         else:
             section = self._pe.sections[idx].Name
             
         bytes = get_hex_bytes(self._pe.get_data(rva, 16))
         
         self.PrintDataInCtrls(rva, va, offset, section, bytes)
         
     except Exception, e:
         #import traceback
         #traceback.print_exc()
         self._ShowError(e)
Example #3
0
 def loadRelocsInfo(self):
     reloc_dir = pedata.getRelocDirectory(self.__pe)
     
     block_index = 1
     
     for entry in reloc_dir:
         
         index = self.Blocks.InsertStringItem(sys.maxint, str(block_index))
         
         entry_rva = entry.struct.VirtualAddress
         entry_size_of_block = entry.struct.SizeOfBlock
         entry_len = len(entry.entries)
         entry_section = self.__pe.sections[pedata.guess_section_from_rva(self.__pe, entry_rva)].Name
         
         self.Blocks.SetStringItem(index, 0, str(block_index))
         self.Blocks.SetStringItem(index, 1, entry_section)
         self.Blocks.SetStringItem(index, 2, hex_up(entry_rva))
         self.Blocks.SetStringItem(index, 3, hex_up(entry_size_of_block, 4))
         self.Blocks.SetStringItem(index, 4, "%sh / %sd" % (hex_up(len(entry.entries), 4), len(entry.entries)))
         
         block_index += 1
Example #4
0
    def _ConvertFromVA(self):
        va = self._va.GetValue()
        if not va:
            va = 0
        else:
            va = int(va, 16)
            
        try:
            rva = va - self._pe.OPTIONAL_HEADER.ImageBase
            offset = pedata.fromRvaToOffset(self._pe, rva)

            idx = pedata.guess_section_from_rva(self._pe, rva)
            if idx == -1:
                section = "HEADER"
            else:
                section = self._pe.sections[idx].Name

            bytes = get_hex_bytes(self._pe.get_data(rva, 16))
            
            self.PrintDataInCtrls(rva, va, offset, section, bytes)
            
        except Exception, e:
            self._ShowError(e)
Example #5
0
    def loadRelocsInfo(self):
        reloc_dir = pedata.getRelocDirectory(self.__pe)

        block_index = 1

        for entry in reloc_dir:

            index = self.Blocks.InsertStringItem(sys.maxint, str(block_index))

            entry_rva = entry.struct.VirtualAddress
            entry_size_of_block = entry.struct.SizeOfBlock
            entry_len = len(entry.entries)
            entry_section = self.__pe.sections[pedata.guess_section_from_rva(
                self.__pe, entry_rva)].Name

            self.Blocks.SetStringItem(index, 0, str(block_index))
            self.Blocks.SetStringItem(index, 1, entry_section)
            self.Blocks.SetStringItem(index, 2, hex_up(entry_rva))
            self.Blocks.SetStringItem(index, 3, hex_up(entry_size_of_block, 4))
            self.Blocks.SetStringItem(
                index, 4, "%sh / %sd" %
                (hex_up(len(entry.entries), 4), len(entry.entries)))

            block_index += 1