class Metasm::VirtualMemoryDasm
a VirtualString
mapping the segments from a disassembler
Attributes
disassembler[RW]
Public Class Methods
new(disassembler, addr_start = 0, length = nil)
click to toggle source
Calls superclass method
# File metasm/os/emulator.rb, line 15 def initialize(disassembler, addr_start = 0, length = nil) @disassembler = disassembler length ||= disassembler.sections.map { |k, v| k.kind_of?(Integer) ? k + v.length : 0 }.max super(addr_start, length) end
Public Instance Methods
decode_imm(addr, len, cpu)
click to toggle source
# File metasm/os/emulator.rb, line 41 def decode_imm(addr, len, cpu) @disassembler.decode_int(addr, len) end
dup(addr = @addr_start, len = @length)
click to toggle source
# File metasm/os/emulator.rb, line 21 def dup(addr = @addr_start, len = @length) self.class.new(@disassembler, addr, len) end
page_invalid?(addr)
click to toggle source
# File metasm/os/emulator.rb, line 30 def page_invalid?(addr) !@disassembler.get_section_at(addr) end
read_range(addr, len=@pagelength)
click to toggle source
reads an aligned page from the file, at file offset addr
# File metasm/os/emulator.rb, line 26 def read_range(addr, len=@pagelength) @disassembler.read_raw_data(addr, len) end
rewrite_at(addr, data)
click to toggle source
overwrite a section of the file
# File metasm/os/emulator.rb, line 35 def rewrite_at(addr, data) if e = @disassembler.get_section_at(addr) e[0].data[addr - e[1], data.length] = data end end