lib/pedump/loader/section.rb in pedump-0.6.0 vs lib/pedump/loader/section.rb in pedump-0.6.1

- old
+ new

@@ -8,19 +8,20 @@ def initialize x = nil, args = {} if x.is_a?(PEdump::IMAGE_SECTION_HEADER) @hdr = x.dup end @data = EMPTY_DATA.dup + @delta = args[:delta] || 0 @deferred_load_io = args[:deferred_load_io] - @deferred_load_pos = args[:deferred_load_pos] || (@hdr && @hdr.PointerToRawData) + @deferred_load_pos = args[:deferred_load_pos] || (@hdr && (@hdr.PointerToRawData - @delta)) @deferred_load_size = args[:deferred_load_size] || (@hdr && @hdr.SizeOfRawData) @image_base = args[:image_base] || 0 end def name; @hdr.Name; end - def va ; @hdr.VirtualAddress + @image_base; end - def rva ; @hdr.VirtualAddress; end + def va ; @hdr.VirtualAddress + @image_base - @delta; end + def rva ; @hdr.VirtualAddress - @delta; end def vsize; @hdr.VirtualSize; end def flags; @hdr.Characteristics; end def flags= f; @hdr.Characteristics= f; end def data @@ -49,9 +50,10 @@ r << " va=%8x vsize=%8x rawsize=%8s" % [ va, vsize, @data.size > 0 ? @data.size.to_s(16) : (@deferred_load_io ? "<defer>" : 0) ] r << (" dlpos=%8x" % @deferred_load_pos) if @deferred_load_pos + r << (" delta=%3x" % @delta) if @delta != 0 r << ">" end end end