Initialize a section.
isource - The ImageSource class backing the image base_vma - The address of this section base section_header - The section header (struct2) although this is not required, which is why there is a base_vma. This can be nil.
# File lib/rex/peparsey/section.rb, line 22 def initialize(isource, base_rva, section_header = nil) self._isource = isource self.base_rva = base_rva self._section_header = section_header end
# File lib/rex/peparsey/section.rb, line 62 def _check_offset(offset, len = 1) if offset < 0 || offset+len > size raise BoundsError, "Offset #{offset} outside of section", caller end end
# File lib/rex/peparsey/section.rb, line 125 def contains_file_offset?(foffset) contains_offset?(foffset - file_offset) end
# File lib/rex/peparsey/section.rb, line 121 def contains_offset?(offset) offset >= 0 && offset < size end
# File lib/rex/peparsey/section.rb, line 129 def contains_rva?(rva) contains_offset?(rva - base_rva) end
# File lib/rex/peparsey/section.rb, line 28 def file_offset _isource.file_offset end
# File lib/rex/peparsey/section.rb, line 98 def file_offset_to_rva(foffset) return offset_to_rva(foffset - file_offset) end
# File lib/rex/peparsey/section.rb, line 44 def flags # a section header is not required return nil if !_section_header _section_header.v['Characteristics'] end
# File lib/rex/peparsey/section.rb, line 86 def index(*args) _isource.index(*args) end
# File lib/rex/peparsey/section.rb, line 36 def name # a section header is not required return nil if !_section_header # FIXME make this better... _section_header.v['Name'].gsub(/\x00+$/, '') end
# File lib/rex/peparsey/section.rb, line 90 def offset_to_rva(offset) if !contains_offset?(offset) raise BoundsError, "Offset #{offset} outside of section", caller end return offset + base_rva end
# File lib/rex/peparsey/section.rb, line 56 def raw_size # a section header is not required return nil if !_section_header _section_header.v['SizeOfRawData'] end
# File lib/rex/peparsey/section.rb, line 68 def read(offset, len) _check_offset(offset, len) return _isource.read(offset, len) end
# File lib/rex/peparsey/section.rb, line 77 def read_asciiz(offset) _check_offset(offset) return _isource.read_asciiz(offset) end
# File lib/rex/peparsey/section.rb, line 82 def read_asciiz_rva(rva) return read_asciiz(rva_to_offset(rva)) end
# File lib/rex/peparsey/section.rb, line 73 def read_rva(rva, len) return read(rva_to_offset(rva), len) end
# File lib/rex/peparsey/section.rb, line 117 def rva_to_file_offset(rva) return rva_to_offset(rva) + file_offset end
if offset < 0 || offset < file_offset || offset >= file_offset+size raise BoundsError, "File offset #{offset} outside of section", caller end return (offset - file_offset) + base_rva
end
# File lib/rex/peparsey/section.rb, line 108 def rva_to_offset(rva) offset = rva - base_rva if !contains_offset?(offset) raise BoundsError, "RVA #{rva} outside of section", caller end return offset end
Generated with the Darkfish Rdoc Generator 2.