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