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