Methods

Class/Module Index [+]

Quicksearch

Rex::MachParsey::MachBase::MachHeader

Attributes

bits[RW]
endian[RW]

Public Class Methods

new(rawdata) click to toggle source
# File lib/rex/machparsey/machbase.rb, line 131
def initialize(rawdata)
        mach_header = MACH_HEADER_LSB.make_struct
        if !mach_header.from_s(rawdata)
                raise MachHeaderError, "Could't access Mach-O Magic", caller
        end

        if mach_header.v['magic'] == MH_MAGIC
                endian = ENDIAN_LSB
                bits = BITS_32
                mach_header = MACH_HEADER_LSB.make_struct
        elsif mach_header.v['magic'] == MH_CIGAM
                bits = BITS_32
                endian = ENDIAN_MSB
                mach_header = MACH_HEADER_MSB.make_struct
        elsif mach_header.v['magic'] == MH_MAGIC_64
                endian = ENDIAN_LSB
                bits = BITS_64
                mach_header = MACH_HEADER_LSB.make_struct
        elsif mach_header.v['magic'] == MH_CIGAM_64
                endian = ENDIAN_MSB
                bits = BITS_64
                mach_header = MACH_HEADER_MSB.make_struct
        else
                raise MachHeaderError, "Couldn't find Mach Magic", caller
        end

        if !mach_header.from_s(rawdata)
                raise MachHeaderError, "Could't process Mach-O Header", caller
        end

        self.struct = mach_header
        self.endian = endian
        self.bits = bits
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.